这个智能体不借助开源框架,从零开始实现:
1.定义工具
# -*- coding:utf-8 -*-
import re
import requests
import json
def calculate(expression):
expression = re.sub(r'[^0-9+\\-*/(). ]', '', expression)
try:
return eval(expression)
except Exception as e:
return f"错误: {str(e)}"
2.定义prompt
SYSTEM_PROMPT = """
你是一个具备计算能力的 AI 助手。
当用户提出的问题涉及数学计算时,你必须遵循以下流程:
1. 思考(Thought):简要描述你为什么要计算。
2. 行动(Action):输出格式为 calculate(你的表达式),例如 calculate(123*456)。
3. 暂停:停止输出,等待系统返回计算结果。
当你得到计算结果(Observation)后,再给出最终回答(Final Answer)。
示例:
用户:15乘以24是多少?
Thought: 我需要计算 15 * 24。
Action: calculate(15*24)
(此处你会收到 Observation: 360)
Final Answer: 15乘以24的结果是360。
"""
3.Ai智能体
def call_ollama(messages):
url = "http://localhost:11434/api/chat"
payload = {
"model": "deepseek-r1:latest",
"messages": messages,
"stream": False
}
response = requests.post(url, json=payload)
return response.json()['message']['content']
注: 1).这一步需要启动ollama服务;
2).ollama安装及使用,参考:https://blog.csdn.net/2301_80049844/article/details/157396384
如查看已下载模型

4.调用deepseek-r1,解析结果并调用工具
def run_agent(user_input):
messages = [
{"role": "system", "content": SYSTEM_PROMPT},
{"role": "user", "content": user_input}
]
response = call_ollama(messages)
print(f"AI 回复:")
print(response)
# 存入上下文
messages.append({"role": "assistant", "content": response})
# 匹配 Action: calculate(…)
match = re.search(r'Action:\\s*calculate\\((.*?)\\)', response)
if match:
expression = match.group(1)
print(f"检测到工具调用: 计算 {expression}")
# 执行本地函数
result = calculate(expression)
print(f"本地计算结果: {result}")
# 把结果作为 Observation 反馈给 AI
messages.append({"role": "user", "content": f"Observation: {result}"})
return response
run_agent("如果我有 127 个苹果,每个卖 15.5 元,再减去 250 元的摊位费,我最后剩多少钱?")
5.效果

网硕互联帮助中心






评论前必须登录!
注册