Python LLM Tools 实战:从 0 到 1 开发,解锁 Agent 入门关键技能

71 阅读5分钟

一、核心认知:为什么 LLM Tools 是 Agent 的前奏?​

在动手写代码前,先理清底层逻辑,避免只知其然不知其所以然:​

  1. LLM 的「天生短板」与 Tools 的价值​

大模型(如 DeepSeek、GPT)的优势是「理解自然语言 + 逻辑推理」,但存在 3 个致命局限:​

  • 无法获取实时数据(如股票收盘价、天气、新闻);​
  • 不擅长精确计算(如复利、数据分析);​
  • 不能直接操作外部系统(如调用 API、操作数据库、文件)。​

而 LLM Tools 本质是「给大模型装「手脚」」:通过定义标准化工具函数 + 自然语言描述,让 LLM 理解「什么时候用工具」「怎么用工具」,从而突破原生能力边界 —— 这正是 Agent 的核心基础:Agent 之所以能「自主完成复杂任务」,本质是能根据目标自动选择工具、串联工具调用流程。​

  1. Agent 与 LLM Tools 的关系(一张图看懂)

image.png

  • 工具调用是 Agent 的「执行层」:Agent 负责「思考(规划任务)」,工具负责「做事(执行任务)」;​
  • 掌握 LLM Tools,就掌握了 Agent 开发的 80% 核心技能:后续只需补充「任务规划逻辑」「工具协同策略」,就能从「单工具调用」升级为「多工具自主协同」的 Agent。​

二、开发准备:3 分钟搭建环境​

  1. 开发环境选择:Jupyter Notebook(.ipynb)​

为什么选它?​

  • 交互式编程:支持逐行运行代码,实时查看结果,适合调试工具调用逻辑;​
  • 混合文档与代码:可同时写注释、原理说明和代码,方便实验记录(大模型工具开发需要大量调试);​
  • Python 生态友好:天生适配 API 调用、数据分析场景,与 ModelScope 无缝衔接。​
  1. 核心依赖与平台​
  • ModelScope(魔搭平台):阿里云开源模型平台,预装 OpenAI SDK(绝大多数大模型兼容此接口标准),无需手动配置复杂环境,直接调用 DeepSeek 等模型;​
  • OpenAI SDK:大模型 API 调用的「事实标准」,DeepSeek、通义千问、智谱等均兼容,学会后可无缝切换其他模型;​
  • DeepSeek 模型:主打「推理能力」,对工具调用的理解更精准,免费额度充足,适合开发测试。​
  1. 环境搭建步骤(新手也能搞定)​

  2. 注册 ModelScope 账号:https://modelscope.cn/,获取 DeepSeek API Key(个人中心→访问令牌);​

  1. 打开 ModelScope 在线 Notebook:平台首页→开发空间→新建 Notebook(默认预装 Python 3.8+、OpenAI SDK);​
  1. 验证环境:运行以下代码,无报错则环境正常:​

三、模块化开发:LLM Tools 核心架构(附完整代码)​

工具调用的核心是「标准化 + 模块化」—— 模块化让代码可维护、可扩展,标准化让 LLM 能正确理解工具。我们拆分 3 个核心模块,各司其职:​

  1. 模块化设计原则​
  • 分离关注点:一个模块干一件事(工具定义、工具实现、调用逻辑分离);​
  • 高可扩展性:新增工具时,无需修改核心调用逻辑;​
  • 标准化接口:遵循 OpenAI 工具定义规范,降低 LLM 理解成本。​
  1. 模块 1:工具定义(Tool Definition)​

按 OpenAI 标准定义工具,告诉 LLM「工具名称、功能、参数格式」—— 这是 LLM 能否正确调用工具的关键!​

  1. 模块 2:工具实现(Tool Implementation)​

实现工具的具体逻辑(如调用接口、计算),与工具定义一一对应,可独立测试:​

  1. 模块 3:核心调度逻辑(LLM + 工具调用)​

负责与 DeepSeek 交互,解析 LLM 的工具调用请求,执行工具并返回结果 —— 核心中枢:​

)​

初始化 DeepSeek 客户端(兼容 OpenAI 接口)​

client = OpenAI(​

api_key="你的 DeepSeek API Key", # 替换为自己的 API Key​

base_url="api.deepseek.com/v1" # DeepSeek API 地址​

)​

工具映射:将工具名称与实际函数关联(方便快速调度)​

TOOL_MAP = {​

"get_closing_price": get_closing_price,​

"get_weather": get_weather,​

"calculate_compound_interest": calculate_compound_interest​

}​

def call_llm(messages, tools=None, tool_choice="auto"):​

"""​

调用 DeepSeek 大模型​

:param messages: 对话上下文(包含 user/assistant/system 角色)​

:param tools: 工具定义列表​

:param tool_choice: 工具调用策略(auto:LLM 自主选择;none:不调用;指定工具名:强制调用)​

四、实战测试:4 个场景验证效果(复制即可运行)​

在 Jupyter Notebook 中逐行运行以下代码,验证工具调用效果:​

测试 1:调用股票工具(实时数据类)​

测试股票收盘价查询​

result = chat_with_tools("青岛啤酒的最新收盘价是多少?")​

print(result)​

输出结果:青岛啤酒的最新收盘价为 67.92 元。​

测试 2:调用计算工具(精确计算类)​

测试复利计算​

result = chat_with_tools("我存 10 万元,年利率 3.5%,存 5 年,复利终值是多少?")​

print(result)​

输出结果:复利终值为:118768.63 元(本金:100000.0 元,年利率:3.5%,存款年数:5 年)​

测试 3:多工具协同调用(Agent 雏形)​

测试同时调用天气和股票工具​

result = chat_with_tools("上海今天的天气怎么样?另外查一下贵州茅台的最新收盘价。")​

print(result)​

输出结果:上海今日天气为多云,23℃,东南风 2 级;贵州茅台的最新收盘价为 1785.00 元。​

测试 4:无需工具的常识回答​

测试不需要工具的问题​

result = chat_with_tools("什么是 LLM Tools?它和 Agent 有什么关系?​