如何在不依赖函数调用功能的情况下结合工具与大型语言模型

当大型语言模型(LLM)原生不支持函数调用功能时,如何实现智能工具调度?本文通过自然语言解析+结构化输出控制的方法来实现。

GitHub代码地址

核心实现步骤

  1. 定义工具函数
    使用@tool装饰器声明可调用工具:
python 复制代码
from langchain_core.tools import tool

@tool
def multiply_by_max(
        a: int, 
        b: list[int]
) -> int:
    """将a乘以b列表中的最大值"""
    return a * max(b)

@tool
def divide_by(a: float, b: float) -> float:
    """将a除以b"""
    return a / b
  1. 构建响应模型
    使用Pydantic定义结构化响应格式:
python 复制代码
from pydantic import BaseModel, Field

class Response(BaseModel):
    name: str = Field(None, description="调用的函数名称")
    args: dict = Field(None, description="函数参数")
  1. 创建输出解析器
python 复制代码
from langchain_core.output_parsers import PydanticOutputParser

parser = PydanticOutputParser(pydantic_object=Response)
  1. 设计提示模板
python 复制代码
from langchain_core.prompts import ChatPromptTemplate

prompt = ChatPromptTemplate.from_messages([
    ("human", """
    请根据需求从下列函数中选择合适的工具:
    可用工具:\n{functions}\n
    输出格式:\n{format_instructions}
    问题:{query}
    """)
]).partial(
    functions=[tool.args_schema.model_json_schema() for tool in [multiply_by_max, divide_by]],
    format_instructions=parser.get_format_instructions()
)

工作原理

  1. 自然语言解析:LLM分析用户query的语义
  2. 工具匹配:根据函数描述自动选择最合适的工具
  3. 参数提取:从自然语言中提取结构化参数
  4. 格式化输出:生成符合预定格式的JSON响应

示例演示

示例1:数学计算

python 复制代码
chain = prompt | ChatOpenAI(model="qwen-max") | parser
result = chain.invoke("请将3乘以一至九的最大值")
# 输出:
# name='multiply_by_max', args={'a':3, 'b':[1,2,3,4,5,6,7,8,9]}

示例2:无匹配工具

python 复制代码
result = chain.invoke("查询北京天气")
# 输出:
# name=None, args=None
相关推荐
Surmon1 小时前
彻底搞懂大模型 Temperature、Top-p、Top-k 的区别!
前端·人工智能
见行AGV机器人3 小时前
无人机脉动线中的AGV小车
人工智能·无人机·agv·非标定制agv
廋到被风吹走3 小时前
【AI】从 OpenAI Codex 到 GitHub Copilot:AI 编程助手的技术演进脉络
人工智能·github·copilot
newsxun3 小时前
DHA之后,大脑营养进入GPC时代?
人工智能
程序员Better3 小时前
2026年AI大模型选择指南:8大主流模型深度对比,小白秒懂如何选!
人工智能
ai_xiaogui4 小时前
AIStarter新版后端原型图详解:架构全面升级+共享环境一键部署,本地AI模型插件工作流管理新时代来临(2026开发者必看)
人工智能·架构·推动开源ai落地·原型图细节·aistarter新版·aistarter新版原型图·架构全面升级+共享环境一键部署
2501_926978334 小时前
“LLM的智能本质--AGI的可能路径--人类的意识本质”三者的统一基底(5.0理论解读)
人工智能·经验分享·笔记·深度学习·机器学习·ai写作·agi
拾光向日葵4 小时前
2026贵州高职专科报考全问答合集:专业、就业与实力大盘点
大数据·人工智能·物联网
لا معنى له4 小时前
WAM与AC-WM:具身智能时代的世界动作模型与动作条件世界模型
人工智能·笔记·学习
uzong4 小时前
AI Agent 是什么,如何理解它,未来挑战和思考
人工智能·后端·架构