LLM之LangChain(二)| LangChain中的Agent

发布时间:2024年01月15日

? ? ? ?在本文中,我们将讨论LangChain中的Agent及其各种类型。但在深入研究Agent之前,让我们先了解一下什么是LangChain和Agent。

一、什么是LangChain?

? ? ? ?LangChain是一种功能强大的自动化工具,可用于各种任务,它提供了可用于创建agent的各种工具。

Agents:agent是一种旨在与现实世界交互的软件程序。LangChain提供不同类型的代理商。

Tools:LangChain提供有助于开发agent的工具。

要了解更多关于LangChain的信息,可以参考:https://www.c-sharpcorner.com/article/getting-started-with-langchain/

二、什么是Agent?

? ? ? ?LangChain中的Agent是为了与现实世界互动而构建的,它们可以自动执行任务并参与现实世界的场景。LangChain代理可用于各种任务,如回答问题、生成文本、翻译语言、总结文本等。

三、LangChain中的代理类型

? ? ? ?LangChain中的Agent使用LLM(语言学习模型)来确定要采取的操作以及顺序。

3.1 Zero-shot ReAct

? ? ? ?Zero-shot ReAct Agent是一种语言生成模型,即使不经过特定数据的训练,也可以创建真实的上下文。它可以用于各种任务,如生成创造性的文本格式、语言翻译和生成不同类型的创造性内容。

from langchain.agents import initialize_agent, load_tools, AgentTypefrom langchain.llms import OpenAIllm = OpenAI(openai_api_key="your_api_key")tools = load_tools(["wikipedia", "llm-math"], llm=llm)agent = initialize_agent(tools , llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)output_1=agent.run("4 + 5 is ")output_2=agent.run("when you add 4  and 5 the result comes 10.")print(output_1)print(output_2)

? ? ? ?在上面的代码中,导入了LangChain库,并通过设置OpenAI API Key来初始化OpenAI语言模型(LLM)。该代码使用维基百科和数学信息工具设置AI代理,将代理类型指定为ZERO_SHOT_REACT_DESCRIPTION代理。然后,代码提供两个提示来演示与代理的一次性交互。

3.2 Conversational ReAct

? ? ? ?此代理是为在会话设置中使用而设计的,它结合了React框架来确定使用哪个工具,并利用内存来记住以前的对话交互。

from langchain.agents import initialize_agent, load_toolsfrom langchain.llms import OpenAIfrom langchain.memory import ConversationBufferMemoryllm = OpenAI(openai_api_key="...")tools = load_tools(["llm-math"],  llm=llm)memory = ConversationBufferMemory(memory_key="chat_history")conversational_agent = initialize_agent(    agent="conversational-react-description",     tools=tools,     llm=llm,    verbose=True,    max_iterations=3,    memory=memory,)output_1=conversational_agent.run("when you add 4  and 5 the result comes 10.")output_2=conversational_agent.run("4 + 5 is ")print(output_1)print(output_2)

? ? ? 上面的代码通过导入必要的模块、设置了OpenAI LLM API Key、加载LLM-math等特定工具进行数学运算以及创建会话缓冲内存来演示LangChain库的使用。然后使用指定的代理类型、工具、LLM和其他参数初始化会话代理。该代码展示了与代理交互的两个提示。

3.3?ReAct Docstore

? ? ? ?该代理使用React框架与文档存储进行通信。它要求提供名称相同的“搜索”工具和“查找”工具。“搜索”工具用于搜索文档,而“查找”工具则在最近找到的文档中查找术语。

from langchain.agents import initialize_agent, Toolfrom langchain.llms import OpenAIfrom langchain import Wikipediafrom langchain.agents.react.base import DocstoreExplorerllm = OpenAI(openai_api_key="...")docstore = DocstoreExplorer(Wikipedia())tools=[    Tool(name="Search", func=docstore.search, description="useful for when you need to ask with search"),    Tool(name="Lookup", func=docstore.lookup, description="useful for when you need to ask with lookup")]react_agent= initialize_agent(tools, llm, agent="react-docstore")print(react_agent.run("Full name of Narendra Modi is Narendra Damodardas Modi?")) # look on the keywords then go for searchprint(react_agent.run("Full name of Narendra Modi is Narendra Damodardas Modi."))

? ? ? ? 上面的代码从LangChain导入必要的模块,并使用API Key初始化OpenAI语言模型(LLM)。它建立了一个以维基百科为源的文档存储资源管理器。定义了两个工具,“搜索”和“查找”,其中“搜索”工具搜索文档,“查找”工具执行术语查找。

3.4?Self-ask with Search

? ? ? ? 此代理使用中间回答工具进行自我提问。

from langchain.agents import initialize_agent, Toolfrom langchain.llms import OpenAIfrom langchain import Wikipediallm = OpenAI(openai_api_key="...")wikipedia = Wikipedia()tools = [    Tool(        name="Intermediate Answer",        func=wikipedia.search,        description='wikipedia search'    )]agent = initialize_agent(    tools=tools,    llm=llm,    agent="self-ask-with-search",    verbose=True,)print(agent.run("what is the capital of Japan?"))

? ? ? ?上述代码从LangChain库导入必要的模块,包括代理和语言模型,它设置了一个具有特定代理配置的会话代理,称为“self-ask-with-search”。该代理使用“Intermediate Answer”工具来执行维基百科搜索。

四、常见问题FAQ

问:在LangChain中,Chain和Agent有什么区别?

答:LangChain中Agent和Chain之间的主要区别在于,Agent使用语言模型来确定其动作,而Chain是由开发人员设置的预定义动作序列。Agent使用语言模型根据用户输入和可用工具生成响应,而Chain遵循固定的输入/输出过程。

问:Verbose()做什么?

答:verbose选项可以在屏幕上显示详细的运行信息。

问:LangChain的温度是多少?

答:默认情况下,LangChain聊天模型的创建温度值为0.7。温度参数控制输出的随机性。较高的值(如0.7)使输出更随机,而较低的值(例如0.2)使输出更有重点和确定性。

参考文献:

[1]?https://bakshiharsh55.medium.com/agents-in-langchain-3eb92f206a5f

文章来源:https://blog.csdn.net/wshzd/article/details/135599037
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。