您的位置:首页 > 科技 > IT业 > 招标网站平台_广州小程序技术开发_seo指导_seo外链在线提交工具

招标网站平台_广州小程序技术开发_seo指导_seo外链在线提交工具

2024/12/23 15:11:31 来源:https://blog.csdn.net/fenglingguitar/article/details/143529296  浏览:    关键词:招标网站平台_广州小程序技术开发_seo指导_seo外链在线提交工具
招标网站平台_广州小程序技术开发_seo指导_seo外链在线提交工具

系列文章索引
LangChain教程 - 系列文章

在构建复杂的对话系统和智能助手时,我们常常会遇到多步骤决策问题。例如,一个用户询问当前天气,并希望系统能推荐适合的户外活动。这就需要系统能够逐步推理动态调用工具,不仅仅给出直接答案,还能灵活地在外部资源之间进行调度。这类需求可以通过 ReAct(Reasoning and Acting)框架来实现,今天我们将使用 LangChain 来创建一个这样的智能助手。

什么是 ReAct 框架?

ReAct 框架,即 Reasoning and Acting(推理和行动),是一种让模型在处理复杂任务时通过推理逐步制定行动决策的模式。ReAct 让模型能够:

  1. 推理:逐步理解任务需求,制定行动计划。
  2. 行动:在每个步骤中调用所需的工具(如 API、数据库),并基于反馈继续推理。

这种模式尤其适合用于构建智能助手、问答系统等复杂应用,能让模型根据上下文灵活选择下一步操作。

使用 LangChain 实现 ReAct 风格的智能助手

LangChain 是一个优秀的语言模型应用开发框架,它提供了丰富的工具调用、代理 (Agent) 和任务链功能,非常适合用于 ReAct 框架的实现。在本文中,我们将使用 LangChain 创建一个简单的智能助手,帮助用户查询天气并推荐户外活动。具体流程如下:

  1. 接收用户查询,识别出需要的操作。
  2. 使用天气查询工具获取指定位置的天气数据。
  3. 根据天气数据推荐适合的户外活动。

代码实现步骤

1. 创建工具函数

首先,我们定义两个模拟工具函数:一个用于获取天气,另一个用于根据天气条件推荐活动。

# 创建用于天气查询和活动推荐的模拟函数
def get_weather(location):"""模拟天气查询工具函数"""return "晴朗,温度 25°C"  # 假设返回晴朗天气def suggest_outdoor_activities(weather):"""基于天气推荐户外活动"""if "晴朗" in weather:return "推荐进行远足、骑行或野餐。"else:return "不推荐户外活动,建议在室内进行活动。"

在真实环境中,这些函数可以替换为调用实际的 API,例如天气数据 API。

2. 将函数封装为 LangChain 工具

接下来,我们将这两个函数封装为 LangChain 的 Tool 对象。这些工具将允许模型在生成回答时按需调用。

from langchain import Tool# 将函数封装成 LangChain 工具
weather_tool = Tool(name="Weather Query",func=lambda location: get_weather(location),description="根据位置查询当前天气情况。"
)activity_tool = Tool(name="Activity Suggestion",func=lambda weather: suggest_outdoor_activities(weather),description="根据天气情况推荐适合的活动。"
)
3. 构建 Prompt 模板

Prompt 是引导模型生成正确回答的重要部分。在这里,我们将 Prompt 模板设计成按 ReAct 的推理与行动步骤处理用户查询。

from langchain.prompts import PromptTemplate# 构建 Prompt 模板,用于指导模型逐步推理和行动
prompt_template = PromptTemplate(input_variables=["query"],template="""
你是一个智能助手,用户向你查询户外活动的建议。
首先,查询用户位置的天气情况,然后基于天气推荐适合的活动。
如果天气适合户外活动,推荐户外活动;如果不适合,则建议室内活动。
用户的请求:{query}
"""
)
4. 初始化 LLM 并创建代理

我们选择 OpenAI 的 gpt-3.5-turbo 作为语言模型,并使用 LangChain 提供的 ChatOpenAI 类,以确保正确调用聊天模型的 API。此外,我们使用 initialize_agent 初始化一个 ReAct 风格的代理,使其能够根据用户请求自动选择合适的工具。

from langchain.chat_models import ChatOpenAI
from langchain import LLMChain
from langchain.agents import initialize_agent, AgentType# 初始化 Chat 模型
llm = ChatOpenAI(model="gpt-3.5-turbo")# 创建 LangChain 任务链
chain = LLMChain(llm=llm, prompt=prompt_template)# 初始化代理,设置为 ReAct 风格
agent = initialize_agent(tools=[weather_tool, activity_tool],llm=llm,agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,  # 设置为 ReAct 风格verbose=True
)
5. 测试 ReAct 智能助手

现在,我们可以测试这个 ReAct 风格的智能助手。用户输入查询后,代理将根据多步骤推理和行动流程逐步完成查询和推荐活动。

# 用户查询
query = "帮我查询纽约的天气,并推荐适合的活动。"# 使用代理处理查询
response = agent({"input": query})print(response["output"])
预期输出

假设天气查询结果为“晴朗,温度 25°C”,则最终输出可能如下:

纽约的天气是晴朗,温度 25°C,适合户外活动。推荐进行远足、骑行或野餐。

整体代码实例

import getpass
import osfrom langchain_openai import ChatOpenAI
from langchain import OpenAI, LLMChain
from langchain.agents import initialize_agent, Tool, AgentType
from langchain.prompts import PromptTemplateos.environ["OPENAI_API_KEY"] = getpass.getpass()# 创建用于天气查询和活动推荐的模拟函数
def get_weather(location):"""模拟天气查询工具函数"""# 假设返回晴朗天气return "晴朗,温度 25°C"def suggest_outdoor_activities(weather):"""基于天气推荐户外活动"""if "晴朗" in weather:return "推荐进行远足、骑行或野餐。"else:return "不推荐户外活动,建议在室内进行活动。"# 将函数封装为 LangChain 工具
weather_tool = Tool(name="Weather Query",func=lambda location: get_weather(location),description="根据位置查询当前天气情况。"
)activity_tool = Tool(name="Activity Suggestion",func=lambda weather: suggest_outdoor_activities(weather),description="根据天气情况推荐适合的活动。"
)# 初始化语言模型 (可以使用 OpenAI 或其他 LLM)
llm = ChatOpenAI(model="gpt-4")# 构建 Prompt 模板,用于指导模型逐步推理和行动
prompt_template = PromptTemplate(input_variables=["query"],template="""
你是一个智能助手,用户向你查询户外活动的建议。
首先,查询用户位置的天气情况,然后基于天气推荐适合的活动。
如果天气适合户外活动,推荐户外活动;如果不适合,则建议室内活动。
用户的请求:{query}
"""
)# 创建 LangChain 任务链
chain = LLMChain(llm=llm, prompt=prompt_template)# 初始化代理,设置为 ReAct 风格
agent = initialize_agent(tools=[weather_tool, activity_tool],llm=llm,agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,  # 设置为 ReAct 风格verbose=True
)# 用户查询
query = "帮我查询纽约的天气,并推荐适合的活动。"# 使用代理处理查询
response = agent({"input": query})print(response["output"])

代码说明

  1. 工具定义:首先,我们定义了天气查询和活动推荐的工具函数。这些函数被封装为 Tool 对象,供模型在生成回答时调用。

  2. Prompt 模板:设计 Prompt 模板,引导模型逐步推理和行动,按 ReAct 框架处理用户请求。

  3. 初始化代理:使用 initialize_agent 创建 LangChain 的代理,并设置为 AgentType.ZERO_SHOT_REACT_DESCRIPTION,使模型具备 ReAct 风格的推理和行动能力。

  4. 执行查询:用户输入查询,代理根据 ReAct 模式逐步推理并调用工具,最终生成详细的回答。

总结

通过 LangChain 和 ReAct 框架,我们可以构建具备推理与行动能力的智能助手,让其能够逐步分解复杂任务并动态调用工具,为用户提供更智能的服务。本文的示例代码展示了如何利用 LangChain 来构建这样一个智能系统,并集成 OpenAI 的聊天模型,实现动态的多步骤决策。这种设计不仅适用于查询天气和推荐活动,还可以扩展到其他复杂应用场景,比如技术支持、知识问答、甚至是自动化任务执行。

在未来的应用中,ReAct 框架的推理和行动特性将使得智能助手和对话系统更加灵活智能,进一步提升用户体验。希望这篇博客能为您带来新的灵感,让我们期待未来更多基于 ReAct 的创新应用!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com