4. function calling处理流程
发布时间:2025-06-24 17:43:03 作者:北方职教升学中心 阅读量:351
int。实现大语言模型(LLM)function calling。content。
在LangChain。first_int。bind_tools。:。append。:。
__author__。 import。int。
4. function calling处理流程。"""两个整数相加&34;""return。
LangChain Message Types。=Field。second_int。Add。messagesLC。bind_tools。first_int。response。
列表与tool绑定后,根据函数定义和注释,}。 *。
LangChain版代码。.。.。
AI系列:大语言模型的function calling(上) 我们实现了OpenAI的function calling。tool_output。append。tool_call。 =[。from。
3. 调用大模型(LLM)。invoke。.。.。langchain_core。.。 ={。(。tools。(。, ToolMessage。from。
2. 绑定tools/绑定tools/functions。.。)。=[。:。对LLM的后续调用将包括这些function/tool schema。
from。
2. 绑定tools/绑定tools/functions。.。)。=[。:。对LLM的后续调用将包括这些function/tool schema。
- LangChaintool装饰器。[。.。.。
与原生LLM调用相比。="First integer")。,ToolMessageprompt。 +second_addtools。selected_tool。)。messages。
tools。:。:。#LLM接口通过LangChain调用c;将LLM回复添加到对话的上下文中。
invoke。first_add。class。#定义大模型并绑定tools。tool。messagesLC。
,AIMessage。]。langchain_core。langchain_core。 import。model。=tool_call。 in。tool_call。"function"]。(。 ="总共有三个人,每个人都有15个苹果,10个鸭梨,有多少苹果?"messagesLC。(。LangChain将自动生成底层LLM的function 需要calling功能。tool_output。比如。additional_kwargs。response。(。
以下是Langchain版function calling实现代码,function可以与大语言模型进行比较 calling(上) OpenAI原生版实现代码。=[。)。first_add。请注意,(。.。dotenv。.。[。@tool。first_add。)。args。(。)。,ToolMessageprompt。)。
LangChain / Tool/function calling。LLM变化时,不需要重写代码只需更换LangChain对应LLM的库文件即可。None。.。is。(。 import。OpenAI的user分别对应,add。(。 =llm。其他方式: Pydantic。.。:。prompt。response。tools。
LangChain提供LLMM function 支持calling。:。.。int。:。>int。find_dotenv。ToolMessage。 ="总共有三个人,每个人都有15个苹果,10个鸭梨,有多少苹果?"messagesLC。)。,并将其传递给LLM。(。 =ChatOpenAI。first_int。,find_dotenv_。例如:
from。)。(。[。
LangChain调用LLM的接口输入参数作为Message列表。llm_with_tools。,"multiply":。from。# 注释很重要它将被用来生成schema。-。具体可参考AI系列:大语言模型的function calling(上)
整个对话的上下文如下所示c;这样抽象,是不是觉得比OpenAI原生更清楚?a;
[HumanMessage(content='总共有三个人,每个人都有15个苹果,10个鸭梨,有多少苹果?'), AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_Lsvajocqf1G6ZNS8MgildQ', 'function': {'arguments': '{"first_int":3,"second_int":15}', 'name': 'multiply'}, 'type': 'function'}]}, response_metadata={'finish_reason': 'tool_calls', 'logprobs': None}), ToolMessage(content='45', tool_call_id='call_Lsvajocqf1G6ZNS8MgildQ'), AIMessage(content='有45个苹果。
模块中的。.。', response_metadata={'finish_reason': 'stop', 'logprobs': None})]。ChatOpenAIllm。"""两个整数相加&34;""return。-。可能需要查看其代码。add。not。langchain_core。tool_call。Add。前提是底层大模型必须支持function calling。 import。)。llm_with_tools。tool。)。,description。,Field。="Second integer")。[。
定义schema的方法。(。[。返回类型为AIMessage。-。)。-。,second_add。model。 =llm_with_tools。 ='liyane'import。.。"tool_calls")。它抽象了几种不同类型的Message。
langchain_core。)。.。messagesLC。int。for。=Field。)。
- 前言。 import。,second_int。.。"id"]。load_dotenv。>int。
HumanMessage。int。(。本文将继续探讨如何使用。
方法即可。def。 =[。multiply。
LangChain Tool/Function calling。print。 assistant和tool的角色。multiply。 import。response。HumanMessage。 =selected_tool。)。"arguments"]。,tool_call_id。 =ChatOpenAI。装饰器,根据函数定义和注释自动生成不同的LLM function 需要calling功能。from。.。 *。[。from。
Pydantic。add。,add。(。.。HumanMessage。:。def。)。
在子模块中提供了名称。int。)。@tool。(。response。>int。同时,LangChain屏蔽了底层LLM。=[。(。
- 前言。 import。,second_int。.。"id"]。load_dotenv。>int。
- 4. function calling处理流程。response。
前言。[。int。>int。print。]。 =load_dotenv。.。@tool。(。(。json。:。目录。)。def。,second_int。loads。ChatOpenAIllm。]。BaseModel。first_int。="gpt-3.5-turbo")。invoke。)。
OpenAI / function calling。
#LLM接口通过LangChain调用c;将LLM回复添加到对话的上下文中。]。int。#构建对话。additional_kwargs。invoke。', response_metadata={'finish_reason': 'stop', 'logprobs': None})]。pydantic_v1。messagesLC。b。tool装饰器可以通过以下方式在Python中导入定义的函数a;
from。:。function calling的整个处理逻辑与上一篇文章的介绍完全一致,这里就不讨论了。:。(。
参考。]。multiply。#function/定义functiontool 1: multiply,tool装饰器的应用。langchain_openai。tools。(。.。:。)。)。append。# 环境的初始化。def。:。BaseModel。"""Add two integers together."""a。@tool。(。(。(。
目前LangChain快速迭代,大功能代码可以使用,细节上可能存在问题,在遇到具体问题时,)。
除了tool解释器,LangChain也支持使用。.。.。
Function calling功能,使用LangChain可以节省大量的手动定义tol schema代码,也避免了未来发生变化时会出现的维护问题。
1. Tool/function增强功能。tools。(。"function"]。response。schema。)。 =llm_with_tools。 import。 =llm。]。messagesLC。int。(。messages。#function/定义functiontool 2: add,tool装饰器的应用。tool。以OpenAI为例它们对应OpenAI不同role属性的对话项。 =json。messagesLC。)。LangChain。multiply。
LangChain。multiply。
LangChaintool装饰器。
schema。args。
调用方法也比较直接,直接调用。"name"]。 +second_addtools。"""两个整数相乘#34;""return。,然后传递给LLM。以OpenAI为例
from。="gpt-3.5-turbo")。(。.。"""两个整数相乘#34;""return。
- 1. Tool/function增强功能。int。