对于大模型,比如某些场景,需要数学计算,或者需要从某些网站获取参考资料,就必须使用专门的代理来完成任务。这里我们使用langchain提供的数学工具来实现一个最简单的例子,下一篇我们会讲如何自己实现代理。
首先创建一个对话模型,记得自己设置环境变量QIANFAN_AK和QIANFAN_SK。
from langchain_community.chat_models import QianfanChatEndpoint
chatModel = QianfanChatEndpoint(
model='ERNIE-Bot',
endpoint='completions'
)
组装代理
我们使用lc库提供的数学包LLMMathChain组装数学代理,负责数学相关的计算工作。这里简单解释一下代理的工作原理,不完全正确,但大概原理是没跑的:大模型在收到问题后,和工具的描述匹配一下,决定使用哪些工具。然后把问题理解后生成合适的参数调用工具并返回结果。这里面是个大黑盒,怎么理解和拆分问题并匹配工具都是由大模型自己决定的,你只能通过提示词给出参考。对于百度的千帆,测试中发现对于数学问题用英文提问比较好,如果是中文理解就问有问题,没法正确调用工具。
from langchain import LLMMathChain
from langchain.agents import AgentType, initialize_agent
from langchain.tools import BaseTool, Tool
from pydantic import BaseModel, Field
tools = []
class CalculatorInput(BaseModel):
question: str = Field()
llm_math_chain = LLMMathChain(llm=chatModel, verbose=True)
too