硅基流动发布DeepSeek V4 Pro函数调用Python教程
硅基流动官方博客发布教程,介绍如何在Python中构建DeepSeek V4 Pro工具调用代理,模型返回结构化请求,由应用负责验证参数、执行获批函数并返回结果。硅基流动部署的模型ID为deepseek-ai/DeepSeek-V4-Pro-0813。
AI解读:教程给出的部署参数是Base URL为api.siliconflow.com/v1,模型ID为deepseek-ai/DeepSeek-V4-Pro-0813,工具类型为Function,走Chat Completions。它还提醒模型标识可能变化,上线前要在模型库确认。
对要接入工具调用的团队来说,这篇教程的价值在于反复强调别用eval、要用白名单分发、要校验JSON参数,并且只读查询风险低,退款、取消订单这类有副作用操作得另行授权甚至人工确认。
硅基流动官方博客发布了一篇Python教程,演示如何用DeepSeek V4 Pro构建一个函数调用代理:接收“订单ORD-123456在哪,邮箱是alex@example.com”这类请求,由模型返回带工具名和JSON参数的结构化请求,应用负责验证参数、执行获批函数,再把结果送回模型生成面向客户的回答。
教程强调,模型不会直接连接订单数据库,也不执行Python;授权、验证、工具执行和错误处理都由应用负责。
截至 2026 年 9 月,教程使用的硅基流动模型字符串为deepseek-ai/DeepSeek-V4-Pro-0813。部署设置为:Base URL为https://api.siliconflow.com/v1,模型ID为deepseek-ai/DeepSeek-V4-Pro-0813,API为Chat Completions,工具类型为Function。
该部署通过硅基流动的无服务器API支持工具。教程提醒模型可用性和标识可能变化,把集成推向生产前应在模型库确认模型字符串。当前OpenAI Python库要求Python 3.10或更高版本。
教程还写到,Chat Completions API目前允许最多 128 个函数,大多数代理应只接收与当前任务相关的工具,以减小提示体积并便于评估工具选择。
工具定义与运行时校验
工具schema描述模型可以请求调用的函数,包括函数名、用途、可接受字段和必填参数。教程指出additionalProperties: false只是告诉模型不要在schema之外添加字段,不能替代运行时校验,因为模型生成的参数仍可能格式错误或不适合应用。
测试时可以用一个字典充当订单系统。该函数对未知订单和邮箱不匹配返回相同响应,防止调用者用不同邮箱试探某个订单ID是否存在。真实应用应把字典换成范围受限的服务函数,并使用已认证的客户ID作为比提示中提供的邮箱更强的授权边界。
Chat Completions API把函数参数以JSON字符串形式放在tool_calls里返回。应用需要解析字符串并在执行前校验内容。教程给出的邮箱正则只做基本格式检查,不证明地址存在或属于请求者,身份认证和授权必须单独处理。
执行工具时教程建议使用白名单决定哪个Python函数可以运行,不要用eval() 执行模型生成的函数名或参数;解析JSON并通过白名单分发,可以让可调用范围保持明确。
- 不使用eval() 执行模型生成的函数名或参数,改用JSON解析加白名单分发。
- additionalProperties: false不能替代运行时参数校验。
- 邮箱格式检查不等于身份认证,授权须单独处理。
- 未知订单与邮箱不匹配返回相同响应,避免订单ID存在性被试探。
结果回传、循环控制与测试覆盖
执行后需保留assistant消息并追加一条tool消息,每个结果都要使用对应请求的tool_call_id,模型才能把返回的订单数据与它请求的函数关联起来。更新后的对话再发回DeepSeek V4 Pro;如果模型信息足够,会返回普通assistant消息而不是又一次工具请求。
完整示例加入了API重试、内部错误日志、参数验证、工具名白名单、代理轮次上限,以及防止超过官方文档所述消息数量的保护。教程明确MAX_AGENT_TURNS、MAX_MESSAGES、max_attempts、timeout和max_tokens是应用层选择,生产服务应按请求大小、延迟目标、工具成本和重复执行的后果来调整。
教程区分的风险等级是:只读查询风险相对较低;取消订单、退款、修改客户资料、发送消息或产生财务承诺的工具,应要求明确授权,并在适当情况下要求人工确认。
关于测试,教程建议在连接真实订单系统前使用模拟记录,覆盖成功查询、未知订单、邮箱不匹配、JSON格式错误、字段缺失、意外字段、未知工具、重复调用、API失败和轮次耗尽,并确认无效请求永远不会到达真实服务函数。
教程回答了是否需要OpenAI SDK:不需要,可以用requests这类HTTP客户端把相同的messages和tools字段直接发到硅基流动Chat Completions REST端点,SDK主要提供请求构造、响应对象、重试和异常类等便利。若模型请求缺失信息,应保存现有对话,把用户的下一条回答作为新的role: "user" 消息追加后再调用模型,并在发送扩展历史前重新检查消息和token限制。工具结果在模型仍需它完成当前任务期间应保留在对话历史中,assistant工具请求与匹配的tool结果要成对保留;之后可删除或摘要化较旧结果,敏感订单数据不应保留超过应用所需时间。
- tool消息必须使用对应请求的tool_call_id。
- 轮次上限、重试次数、超时和token上限是应用层配置,不是平台要求。
- 只读查询风险较低;取消订单、退款、改资料、发消息或产生财务承诺需授权,必要时人工确认。
- 上线前用模拟记录覆盖成功查询、未知订单、邮箱不匹配、格式错误、字段缺失、未知工具、重复调用、API失败和轮次耗尽。
- 无需OpenAI SDK,可用HTTP客户端直接调用SiliconFlow Chat Completions REST端点。