BabyAGI Agent:LLM如何实现?

发布于 2024-7-30 00:51
浏览
0收藏

嘿,大家好!这里是一个专注于AI智能体的频道!

今天我们来聊聊一个超酷的东西——BabyAGI agent with Tools。这货是一个能跟数据库打交道的智能体!这是这个系列的第3篇。

首先,咱们得搭建一个向量存储和嵌入模型。这里我们用的是开源的Chroma和OpenAI的嵌入模型。别急,这就给你们上代码。

from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.vectorstores import Chroma

embedding = OpenAIEmbeddings()
persist_directory = 'vector_store'
vectordb = Chroma(persist_directory=persist_directory, embedding_function=embedding)

有了这些,我们的BabyAGI就能长期存储结果,并且只提取最相关的信息。接下来,我们得创建一个chain,这个链会作为我们执行器的工具。

from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate

todo_prompt_message = '你是一个制定待办事项清单的专家。给这个目标制定一个待办事项清单:{objective}'
todo_prompt = PromptTemplate.from_template(todo_prompt_message)
todo_chain = LLMChain(llm=OpenAI(temperature=0.1, 
    model = 'gpt-4-1106-preview'), prompt=todo_prompt)

然后,我们定义了工具和prompt,创建了一个agent。这个agent会用到我们之前设置好的工具和prompt。(参见前几天的《ReAct Agent:LLM如何实现?》推文)

from langchain.agents import AgentExecutor, Tool, ZeroShotAgent
from langchain.prompts import PromptTemplate

tools = [
    execute_sql, get_table_columns, get_table_column_distr, 
    Tool(name="TODO", func=todo_chain.run, description="用于当你需要制定待办事项清单时。输入待办事项的目标。")
]

prefix = "你是一个基于以下目标执行任务的AI:{objective}..."
suffix = "问题:{task} {agent_scratchpad}"

prompt = ZeroShotAgent.create_prompt(
    tools, prefix=prefix, suffix=suffix, 
    input_variables=["objective", "task", "context", "agent_scratchpad"]
)

llm = OpenAI(temperature=0.1)
llm_chain = LLMChain(llm=llm, prompt=prompt)
tool_names = [tool.name for tool in tools]
analyst_agent_babyagi = ZeroShotAgent(llm_chain=llm_chain, allowed_tools=tool_names)
analyst_agent_babyagi_executor = AgentExecutor.from_agent_and_tools(
    agent=analyst_agent_babyagi, tools=tools, verbose=True
)

最后,我们定义BabyAGI执行器并运行它。

from langchain_experimental.autonomous_agents import BabyAGI

baby_agi = BabyAGI.from_llm(
    llm=llm, vectorstore=vectordb, 
    task_execution_chain=analyst_agent_babyagi_executor, 
    verbose=True, max_iterations=10
)
baby_agi("我们有多少来自上海的活跃客户?")

看吧,我们的BabyAGI agent with Tools就这样诞生了。但是在执行时可能遇到了一些小问题,比如没有遵循输入模式,但这都是成长的烦恼嘛。通过不断的迭代和优化,我们的智能体会变得越来越聪明。

本文转载自​探索AGI​,作者: 猕猴桃 ​​

收藏
回复
举报
回复
相关推荐