欢迎光临散文网 会员登陆 & 注册

快速入门LangChain的六大核心模块之Agents

2023-08-12 11:56 作者:复利火箭  | 我要投稿

Agents的核心思想是使用LLM来选择要采取的一系列操作。在Cahin中,一系列操作是硬编码的(在代码中)。在agents中,语言模型用作推理引擎,以确定要执行的操作以及顺序。

关键组件

1、工具 (tools):负责决定下一步要采取的步骤的类,由语言模型和提示提供支持。这个prompt可以包括代理的个性(有助于使其以某种方式做出反应)、代理的背景上下文(有助于为其提供有关要求它执行的任务类型的更多上下文)、提示策略以调用更好的推理。

2、代理 (agents):介绍不同代理类型的概述。

3、工具包 (toolkits):通代理可以访问的工具集比单个工具更重要。为此,LangChain提供了工具包的概念——实现特定目标所需的工具组。工具包中通常有大约 3-5 个工具。

准备工作

安装依赖

pip install langchain
pip install openai

设置密钥

import os
import openai os.environ["OPENAI_API_KEY"] = 'your_openai_key'
os.environ['OPENAI_API_BASE'] = ''

导入库

from langchain.chat_models import ChatOpenAI
from langchain.agents import tool
from langchain.schema import SystemMessage
from langchain.agents import OpenAIFunctionsAgent
from langchain.agents import AgentExecutor
from langchain.prompts import MessagesPlaceholder
from langchain.memory import ConversationBufferMemory
import os
import openai

开始编码

调用ChatOpenAI作为LLM

llm = ChatOpenAI(temperature=0)

定义工具函数

使用@tool装饰器定义一个名为get_word_length的函数,用于计算单词的长度。

@tool
def get_word_length(word: str) -> int:
"""Returns the length of a word."""
return len(word)
tools = [get_word_length]

创建对话历史

定义一个常量MEMORY_KEY,用于存储对话历史的键名。

MEMORY_KEY = "chat_history"
memory = ConversationBufferMemory(memory_key=MEMORY_KEY, return_messages=True)

创建代理和代理执行器

system_message = SystemMessage(content="你是非常强大的助手,但不善于计算单词的长度。")

prompt = OpenAIFunctionsAgent.create_prompt(
system_message=system_message,
extra_prompt_messages=[MessagesPlaceholder(variable_name=MEMORY_KEY)])
agent = OpenAIFunctionsAgent(llm=llm, tools=tools, prompt=prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, memory=memory, verbose=True)

运行聊天机器人

通过agent_executor.run方法向聊天机器人发送问题,例如"耕耘一词中有几个字?"和"它是个真正的词汇吗?"。

agent_executor.run("耕耘一词中有几个字?")
agent_executor.run("它是个真正的词汇吗?")

执行结果演示

完整代码

完整代码在githhub搜qq31682216/chatgpt_all

小结

以上就是我在快速入门agents分享,希望可以帮到各位!欢迎关注或发私信与我共同讨论更多大模型领域知识~

快速入门LangChain的六大核心模块之Agents的评论 (共 条)

分享到微博请遵守国家法律