Function Calling / Tool Calling实现AI 自动调用函数
最终结果23*981.AI判断这是数学计算2.AI自动调用multiply(23, 98)3.你的程序执行函数4。把结果放回给AI22545.AI输出23 * 98 2254二、核心原理LLM不会执行函数他只会{tool: multiply,arguments: {a: 23,b: 98}}真正执行的是你的Python代码三、项目结构四、先写calculatortools/calculator.pydef multiply(a: int, b: int) - int:return a * bdef add(a: int, b: int) - int:return a bdef subtract(a: int, b: int) - int:return a - bdef divide(a: int, b: int) - float:return a / b五、定义 Tool Schema关键AI 需要知道有什么工具工具参数是什么工具用途是什么app.pytools [{type: function,function: {name: multiply,description: Multiply two numbers,parameters: {type: object,properties: {a: {type: number,description: First number},b: {type: number,description: Second number}},required: [a, b]}}}]六、完整Function Calling 流程核心app.pyfrom openai import OpenAIfrom dotenv import load_dotenvfrom tools.calculator import multiplyimport jsonimport osload_dotenv()client OpenAI(api_keyos.getenv(OPENAI_API_KEY))tools [{type: function,function: {name: multiply,description: Multiply two numbers,parameters: {type: object,properties: {a: {type: number},b: {type: number}},required: [a, b]}}}]messages []while True:user_input input(\nYou: )if user_input exit:breakmessages.append({role: user,content: user_input})response client.chat.completions.create(modelgpt-4.1-mini,messagesmessages,toolstools)message response.choices[0].message# AI 想调用工具if message.tool_calls:tool_call message.tool_calls[0]function_name tool_call.function.namearguments json.loads(tool_call.function.arguments)if function_name multiply:result multiply(arguments[a],arguments[b])print(f\nTool Result: {result})# 把 tool call 加入历史messages.append(message)# 把 tool result 返回给 AImessages.append({role: tool,tool_call_id: tool_call.id,content: str(result)})# 再请求一次 AIsecond_response client.chat.completions.create(modelgpt-4.1-mini,messagesmessages)final_reply second_response.choices[0].message.contentprint(f\nAssistant: {final_reply})messages.append({role: assistant,content: final_reply})else:print(\nAssistant:)print(message.content)messages.append({role: assistant,content: message.content})注以上内容为 AI 辅助生成的参考回答仅供参考请自行核实关键信息。