LangChain(5)Conversational Agents

Large Language Models (LLMs) 在语义知识方面表现不错,但也有一些不足,如:不能正确计算数学公式、无法获取最新知识新闻

通过 Agents 可以赋予 LLMs 更多能力,让LLM能够计算、上网查询

agent 简单使用

python 复制代码
from langchain import OpenAI
# 语言模型
llm = OpenAI(
openai_api_key="OPENAI_API_KEY",
temperature=0,
model_name="text-davinci-003"
)

from langchain.chains import LLMMathChain
from langchain.agents import Tool
# 能计算数学公式的一个chain
llm_math = LLMMathChain(llm=llm)

# initialize the math tool
math_tool = Tool(
name='Calculator',
func=llm_math.run,
description='Useful for when you need to answer questions about math.' # 描述工具能做什么
)
# when giving tools to LLM, we must pass as list of tools
tools = [math_tool]

# 如果 langchain.agents 中有相关工具,则可以直接使用
#from langchain.agents import load_tools
#tools = load_tools(
#['llm-math'],
#llm=llm
)

# 初始化 agent
from langchain.agents import initialize_agent
zero_shot_agent = initialize_agent(
				agent="zero-shot-react-description", # 无记忆的agent
				tools=tools, # tools 中只有math_tool,所以只能做计算
				llm=llm,
				verbose=True, # 显示执行过程
				max_iterations=3
		)
zero_shot_agent("what is (4.5*2.1)^2.2?")

上面的 tools 中只有math_tool,所以 zero_shot_agent 只能做计算,不能回答其它常识问题,可以在 tools 中添加更多工具,使得 zero_shot_agent 拥有更多能力。

python 复制代码
# 可以在 tools 中新增聊天工具
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
prompt = PromptTemplate(
input_variables=["query"],
template="{query}"
)
llm_chain = LLMChain(llm=llm, prompt=prompt)

# initialize the LLM tool
llm_tool = Tool(
name='Language Model',
func=llm_chain.run,
description='use this tool for general purpose queries and logic'
)
tools.append(llm_tool)
# reinitialize the agent
zero_shot_agent = initialize_agent(
agent="zero-shot-react-description",
tools=tools,
llm=llm,
verbose=True,
max_iterations=3
)

agent 类型

zero-shot-react-description 无缓存的方式,聊天是单次的,无上下文缓存

python 复制代码
zero_shot_agent = initialize_agent(
agent="zero-shot-react-description",
tools=tools,
llm=llm,
verbose=True,
max_iterations=3,
)

conversational-react-description 带缓存

python 复制代码
from langchain.memory import ConversationBufferMemory

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,
)

react-docstore 可以检索知识库,无缓存

python 复制代码
from langchain import Wikipedia
from langchain.agents.react.base import DocstoreExplorer

docstore=DocstoreExplorer(Wikipedia())
tools = [
			Tool(
				name="Search", # 信息检索
				func=docstore.search, 
				description='search wikipedia'
			),
			Tool(
				name="Lookup", # 匹配相近结果
				func=docstore.lookup, 
				description='lookup a term in wikipedia'
			)
]

docstore_agent = initialize_agent(
								tools,
								llm,
								agent="react-docstore",
								verbose=True,
								max_iterations=3
								)

self-ask-with-search 将LLM与搜索引擎结合起来

python 复制代码
from langchain import SerpAPIWrapper

# initialize the search chain
search = SerpAPIWrapper(serpapi_api_key='serp_api_key')

# create a search tool
tools = [
			Tool(
			name="Intermediate Answer",
			func=search.run,
			description='google search'
			)
		]

# initialize the search enabled agent
self_ask_with_search = initialize_agent(
						tools,
						llm,
						agent="self-ask-with-search",
						verbose=True
						)

参考:
Superpower LLMs with Conversational Agents

相关推荐
言乐69 小时前
HTML视频审核模型
python·django·virtualenv·pygame·tornado
言乐610 小时前
Python根据无法识别搜索词找出可能输入内容模型
开发语言·python·django·virtualenv·pygame
XLYcmy10 小时前
Dify 本地部署、Ollama 与 Xinference 集成:踩坑与最佳实践指南
llm·agent·dify·rag·ollama·rerank·harness
染指111010 小时前
134.Agent-多Agent框架-LangChain多智能体
人工智能·中间件·langchain·agents
yl453011 小时前
硫酸泄露处理生产商怎么选才够专业
大数据·人工智能·python
笨笨饿11 小时前
140_AI新手村MCP与Skills是干嘛的
开发语言·人工智能·python·stm32·单片机·嵌入式硬件·物联网
YOLO数据集集合11 小时前
EvoAgent:面向PR研发治理的自进化Multi-Agent Harness系统
java·开发语言·目标检测·agent·自进化
liuchangng12 小时前
Agent的state注入
人工智能·agent·jev·决策模型
for_ever_love__12 小时前
机器学习入门——手写线性回归与梯度下降
人工智能·python·学习·机器学习·线性回归
打工仔折腾 AI12 小时前
从 Demo 到生产级 Agent:8 个关键设计机制与 Python 实现拆解
java·jvm·人工智能·后端·python·langchain·ai agent 实战