BabyAGI Agent:LLM如何實現(xiàn)?
嘿,大家好!這里是一個專注于AI智能體的頻道!
今天我們來聊聊一個超酷的東西——BabyAGI agent with Tools。這貨是一個能跟數(shù)據(jù)庫打交道的智能體!這是這個系列的第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就能長期存儲結(jié)果,并且只提取最相關(guān)的信息。接下來,我們得創(chuàng)建一個chain,這個鏈會作為我們執(zhí)行器的工具。
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
todo_prompt_message = '你是一個制定待辦事項清單的專家。給這個目標(biāo)制定一個待辦事項清單:{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,創(chuàng)建了一個agent。這個agent會用到我們之前設(shè)置好的工具和prompt。(參見前幾天的《ReAct Agent:LLM如何實現(xiàn)?》推文)
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="用于當(dāng)你需要制定待辦事項清單時。輸入待辦事項的目標(biāo)。")
]
prefix = "你是一個基于以下目標(biāo)執(zhí)行任務(wù)的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執(zhí)行器并運行它。
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就這樣誕生了。但是在執(zhí)行時可能遇到了一些小問題,比如沒有遵循輸入模式,但這都是成長的煩惱嘛。通過不斷的迭代和優(yōu)化,我們的智能體會變得越來越聰明。
贊
收藏
回復(fù)
分享
微博
QQ
微信
舉報

回復(fù)
相關(guān)推薦