在学习langchain的agent时候,采用ollama调用本地的deepseek-r1:32b来做一个agent,代码如下:
def create_custom_agent():
llm = ChatOllama(model="deepseek-r1:32b", temperature=0.5)
memory = ConversationBufferWindowMemory(
memory_key="chat_history",
k=3,
return_messages=True
)
react_template = """
尽你所能回答以下问题:{input}
你可以使用以下工具:{tools}
工具名称列表:{tool_names}
使用以下格式:
Question: 您必须回答的输入问题
Thought: 你应该思考如何解决这个问题
Action: 要采取的操作,例如 "convert_image"
Action Input:工具的输入参数
Observation: 工具的输出结果
Final Answer:最终答案
开始!
Thought:{agent_scratchpad}
"""
react_prompt = PromptTemplate(
input_variables=['input', 'tools', 'tool_names', 'agent_scratchpad', 'chat_history'],
template=react_template
)
react_agent = create_react_agent(llm=llm, tools=tools, prompt=react_prompt)
agent_executor = AgentExecutor(
agent=react_agent,
tools=tools,
memory=memory,
verbose=True,
handle_parsing_errors=True,
)
return agent_executor
模版参考了官方的https://python.langchain.com/api_reference/_modules/langchain/agents/react/agent.html#create_react_agent ReAct风格链写的,但是在调用的时候一直报错,我寻思32b的模型也不小了,后来果断换了qwen2.5:7b 就行了,哎,deepseek的function calling实在是太差了,希望后续deepseek支持吧