精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

LangChain實戰 | Tool Calling :讓AI真正動起來的關鍵技術

發布于 2024-12-20 10:27
瀏覽
0收藏

近年來大模型發展過程中面臨的幾個核心挑戰:靜態知識的局限性、執行能力的缺失、與外部系統的割裂。為了應對這些挑戰,推動大模型從單純的語言生成工具演變為真正的任務執行引擎,Function calling 誕生了,成為大模型一項不可或缺的核心能力。

概念 Function calling 和 Tool Calling 會混用

我們在做應用開發的時候,大部分時候盡量避免直接耦合到OpenAI,會使得程序兼容性不好,這時只要面向 LangChain 開發就可以了。

LangChain 是一個靈活的框架,它提供了與多種大模型進行交互的能力。

它的設計允許集成和使用來自不同源的多種模型,包括但不限于OpenAl、Cohere和 Hugging Face 等模型庫中的模型。這樣,你不必拘泥于某種模型,而是為自己的應用選擇最合適的模型。對于Tool Calling能力來說,LangChain 也做了抽象。

調用其他工具的 API(如:Database Tool) 通常需要特定的有效負載格式。可以使用 Tool Calling 來向模型請求與特定格式匹配的響應。隨后可以使用這個響應作為負載去做“工具(Tool)實際的執行”。

LangChain實戰 | Tool Calling :讓AI真正動起來的關鍵技術-AI.x社區

通俗來將就是:讓大模型通過理解用戶的提示詞,來決定是否需要調用工具(如上圖),

如果需要調用工具,會返回需要調用的工具名稱和調用參數(不是直接執行工具),后續由代碼去執行對應的工具(Tool)。

如果不需要調用工具,那么就直接回復自然語言(如:How can I assist you?)。

工具(Tool)

tool抽象 在 LangChain 中將 Python函數 與 定義“函數名稱、描述和預期參數”的schema 關聯起來。

工具(Tool) 可以傳給支持 tool calling 的 聊天模型,允許模型使用特定輸入執行特定函數。

創建工具的推薦方法是使用@tool 裝飾器。此裝飾器旨在簡化工具創建過程,在大多數情況下應使用它。定義函數后,可以使用@tool 對其進行裝飾,以創建實現工具接口 的工具。

代碼如:

from langchain_core.tools import tool

@tool
def multiply(a: int, b: int) -> int:
   """兩個數字相乘."""
   return a * b

默認情況下,裝飾器使用函數名稱作為工具名稱。

裝飾器將使用函數的文檔字符串作為工具的描述 —— 因此必須提供文檔字符串。

定義工具后,可以通過調用直接使用它。

result = multiply.invoke({"a": 2, "b": 3})
print(result) 
# Output: 6

也能直接看到工具的具體信息。

print(multiply.name)
print(multiply.description)
print(multiply.args)

# 輸出
multiply
兩個數字相乘.
{'a': {'title': 'A', 'type': 'integer'}, 'b': {'title': 'B', 'type': 'integer'}}

通過參數自定義工具

@tool("multiplication-tool", args_schema=CalculatorInput, return_direct=True)

屬性

類型

描述

名稱

str

在提供給 LLM 或代理的一組工具中必須是唯一的。

描述

str

描述工具的作用。用作 LLM 或代理的上下文。

args_schema

pydantic.BaseModel

可選但推薦,如果使用回調處理程序則為必需。它可用于提供更多信息(例如,少量示例)或驗證預期參數。

return_direct

布爾值

僅與agent相關。當為 True 時,在調用給定的工具后,代理將停止并將結果直接返回給用戶。

代碼如:

from pydantic import BaseModel, Field

class CalculatorInput(BaseModel):
   a: int = Field(descriptinotallow="第一個數字")
   b: int = Field(descriptinotallow="第二個數字")

# 通過參數自定義
@tool("multiplication-tool", args_schema=CalculatorInput, return_direct=True)
def multiply(a: int, b: int) -> int:
   """兩個數字相乘."""
   return a * b

# 查看工具的具體信息
print(multiply.name)
print(multiply.description)
print(multiply.args)
print(multiply.return_direct)

輸出:

# 輸出
multiplication-tool
兩個數字相乘.
{'a': {'description': '第一個數字', 'title': 'A', 'type': 'integer'}, 'b': {'description': '第二個數字', 'title': 'B', 'type': 'integer'}}
True

通過解析文檔字符串配置定義工具

@tool 可以選擇性地解析Google Style 文檔字符串,并將文檔字符串組件(例如參數描述)與工具schame的相關部分關聯起來。使用這種方法,需要指定 parse_docstring

代碼如:

@tool(parse_docstring=True)  # 解析文檔字符串
def multiply(a: int, b: int) -> int:
   """兩個數字相乘.

   Args:
      a: 第一個數字
      b: 第二個數字

   Returns:
      兩個數字相乘的結果
   """
   return a * b

# 查看工具的具體信息
print(multiply.name)
print(multiply.description)
print(multiply.args)
print(multiply.return_direct)

結果:

# 輸出
multiply
兩個數字相乘.
{'a': {'description': '第一個數字', 'title': 'A', 'type': 'integer'}, 'b': {'description': '第二個數字', 'title': 'B', 'type': 'integer'}}
False

通過大模型的 Tool calling 調用工具

Tool calling 允許聊天模型通過“Tool calling”來響應給定的提示詞。

雖然“Tool calling”這個名字暗示模型正在直接執行某些操作,但實際上并非如此!模型僅生成工具的參數,而是否運行工具(或不運行)取決于用戶。

LangChain實戰 | Tool Calling :讓AI真正動起來的關鍵技術-AI.x社區

Tool calling 可以從模型生成結構化輸出,即使您不打算調用任何工具,也可以使用它。該技術是從非結構化文本中提取信息。

如下圖,把用戶輸入的文本,通過大模型的Tool calling提取出了符合工具get_weather的信息。

LangChain實戰 | Tool Calling :讓AI真正動起來的關鍵技術-AI.x社區

代碼示例

第一步:定義工具

from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage

model = ChatOpenAI(
    api_key='hk-iwtb1e427',
    base_url='https://api.openai-hk.com/v1',
    temperature=0
)

print("第一步 :定義工具")
@tool
def multiply(a: int, b: int) -> int:
    """兩個數字相乘."""
    return a * b

tools = [multiply]

第二步:把工具綁定到大模型

# Tool binding
print("第二步 :把工具綁定到大模型")
model_with_tools = model.bind_tools(tools)

第三步:大模型 Tool calling

# Tool calling
print("第三步 :大模型Tool calling")
query = "2乘以3"
messages = [HumanMessage(query)]
ai_msg = model_with_tools.invoke(messages)
print(ai_msg)
# 獲取返回的response中工具名稱和調用參數
print("大模型 Tool calling 返回結果 : ",ai_msg.tool_calls)
# [{'name': 'multiplication-tool', 'args': {'a': 2, 'b': 3}, 'id': 'call_2bJbBe74qhuDfg3ZGCu7p9e3', 'type': 'tool_call'}]
messages.append(ai_msg)

第四步:工具的執行(Tool calling 返回需要執行的工具)

print("第四步 :工具的執行")
# 定義所有的工具字典
all_tools = {
    "multiply": multiply
}

for tool_call in ai_msg .tool_calls:
    selected_tool = all_tools[tool_call["name"].lower()]
    tool_msg = selected_tool.invoke(tool_call)
    print("工具的執行 返回結果 : ",tool_msg)
    messages.append(tool_msg)
    # cnotallow='6' name='multiply' tool_call_id='call_CTCJAFlibfN3zhM9jMMStBlp'
print("聊天上下文 :")
print(messages)

第五步:大模型處理工具的返回結果

print("第五步:大模型處理工具的返回結果")
response = model_with_tools.invoke(messages)
print("大模型返回 :",response.content)
# 大模型返回 : 2乘以3的結果是6。


用戶輸入 :2乘以3

大模型返回 : 2乘以3的結果是6。

日志:

LangChain實戰 | Tool Calling :讓AI真正動起來的關鍵技術-AI.x社區

本文轉載自 ??AI取經路??,作者: AI取經路

已于2024-12-20 10:45:27修改
收藏
回復
舉報
回復
相關推薦
凹凸成人精品亚洲精品密奴| 自拍偷拍欧美视频| 国产高清无密码一区二区三区| 欧美日韩成人黄色| 日韩片在线观看| 91p九色成人| 91日韩欧美| 天天亚洲美女在线视频| 日本在线播放不卡| 亚洲AV无码国产精品午夜字幕 | 亚洲毛片在线免费观看| 国产精品无码乱伦| 婷婷五月综合激情| 老司机精品视频一区二区三区| 亚洲精品99999| 国产激情在线观看视频| av在线看片| 日韩激情中文字幕| 欧美久久久精品| 亚洲成人黄色av| 亚洲成av人片在线观看www| 色哟哟欧美精品| av影院在线播放| 国产污视频在线| 成人免费看的视频| 91久久精品国产91性色| 国产一级免费视频| 亚洲二区在线| 久久中文字幕视频| 久久久久亚洲av无码a片| 国产色噜噜噜91在线精品| 欧美日韩国产欧美日美国产精品| 天天夜碰日日摸日日澡性色av| 麻豆视频在线播放| 国产精品天美传媒| 国产精品久久综合av爱欲tv| 日本精品人妻无码77777| 日韩三级毛片| 精品福利av导航| 三区视频在线观看| 欧美视频免费看| 在线观看日韩国产| 国内外成人免费激情视频| 成年网站在线| 久久久久亚洲综合| 精品日本一区二区三区| 狠狠躁夜夜躁av无码中文幕| 亚洲国产专区| 欧美激情一区二区久久久| 一二三区视频在线观看| 亚洲综合视频| 欧美日韩三级在线| 一区二区成人网| 超鹏97在线| 国产精品电影一区二区| 97久草视频| 国产精品熟女久久久久久| 老司机精品视频在线| 国产日韩在线观看av| 成人黄色免费网| 免费欧美在线视频| 国产欧美在线视频| 91成人在线免费| 精品一区二区国语对白| 91久久嫩草影院一区二区| 97超碰中文字幕| 国产一区二区精品久久91| 成人在线精品视频| jizz中国少妇| 久久九九99| 国产91久久婷婷一区二区| 亚洲天堂男人av| 麻豆精品网站| 国产精品一区二区三| 国产精品久久777777换脸| 国产一区欧美二区| 国产精品午夜av在线| 亚洲色大成网站www| 欧美aaa在线| 国产精品一二区| 国产女人高潮的av毛片| 国产成人免费av在线| 九色91视频| 国产乱码久久久久| 风流少妇一区二区| 麻豆成人小视频| chinese偷拍一区二区三区| 亚洲少妇中出一区| 欧美一区二区中文字幕| 日本欧美一区| 日韩一区二区电影在线| 中文字幕乱码在线| 欧美电影《轻佻寡妇》| 欧美极品少妇xxxxⅹ免费视频| 国产毛片aaa| 日本aⅴ免费视频一区二区三区| 欧美丰满少妇xxxx| 波多野结衣国产| 麻豆一区二区三| 国产高清自拍99| 国产高中女学生第一次| 成人福利在线看| 日韩精品欧美在线| 国产乱码在线| 欧美中文字幕久久| 黄色在线免费播放| 日韩在线观看| 97免费视频在线| 妺妺窝人体色www婷婷| 91综合视频| 国内揄拍国内精品| 91亚洲国产成人久久精品麻豆| 不卡区在线中文字幕| 亚洲一区二区三区免费看| segui88久久综合9999| 欧美日韩国产在线观看| 亚州av综合色区无码一区| 91麻豆精品国产91久久久平台| 97国产在线视频| 国产美女三级无套内谢| 久久久美女毛片| 欧美激情亚洲天堂| 婷婷色在线播放| 在线免费一区三区| 麻豆精品国产传媒av| 亚洲经典一区| 国产精品热视频| 色av男人的天堂免费在线| 91麻豆精东视频| 日本10禁啪啪无遮挡免费一区二区 | 国产精品视频一区二区三区经| shkd中文字幕久久在线观看| 欧美视频二区36p| 国产一级黄色录像| 欧美人成在线| 欧美精品激情blacked18| 做爰视频毛片视频| 久久视频一区二区| 欧美国产亚洲一区| 欧美变态挠脚心| 欧美大秀在线观看| av网站免费播放| 最新欧美精品一区二区三区| 国产福利一区视频| 日日夜夜亚洲| 主播福利视频一区| 中文在线免费观看| 欧美国产日韩一二三区| 国产精品无码一本二本三本色| 亚洲美女久久| 日产精品99久久久久久| 人人九九精品| 色999日韩国产欧美一区二区| 狠狠人妻久久久久久综合蜜桃| 亚洲欧洲一级| 精品日本一区二区三区| gay欧美网站| 亚洲新声在线观看| 在线视频 91| 国产欧美一区二区精品仙草咪 | eeuss鲁一区二区三区| 精品国产乱子伦一区| 蜜臀av午夜精品久久| 国产美女久久久久| 免费网站永久免费观看| 高清欧美性猛交xxxx黑人猛| 久久久人成影片一区二区三区观看| 亚洲欧美另类综合| 狠狠爱在线视频一区| 成人影视免费观看| 强制捆绑调教一区二区| www亚洲国产| 成人直播在线观看| av黄色免费在线观看| 日av在线不卡| 三年中文高清在线观看第6集 | 欧美日韩视频在线观看一区二区三区| 五月婷婷六月香| 国产一区二区三区av电影| www.在线观看av| 西野翔中文久久精品国产| 国产精品久久久久久久久久ktv| 色网站免费在线观看| 欧美成人激情免费网| 中文字幕一区在线播放| 国产精品精品国产色婷婷| 成人性生交视频免费观看| av自拍一区| 2019日本中文字幕| 夜级特黄日本大片_在线 | 国产一二三四在线视频| 国产精品xxxav免费视频| 日本精品视频在线观看| 黄网站视频在线观看| 精品粉嫩aⅴ一区二区三区四区| 久久久久在线视频| 亚洲人亚洲人成电影网站色| 波多野结衣一二三区| 三级亚洲高清视频| 成年丰满熟妇午夜免费视频 | 日韩少妇视频| 国产亚洲欧美日韩美女| 亚洲黄色在线播放| 欧美少妇bbb| 国产成人无码精品久在线观看| 国产伦精品一区二区三区免费| 国产亚洲黄色片| 色97色成人| 精品无码久久久久久久动漫| 99re8精品视频在线观看| 青青草精品毛片| 影音先锋在线视频| 色噜噜狠狠色综合网图区| 天堂中文在线官网| 日韩欧美不卡在线观看视频| 国产成人自拍偷拍| 天天操天天综合网| 麻豆亚洲av熟女国产一区二 | 日韩欧美亚洲国产精品字幕久久久| 91在线看视频| 一区二区三区在线播| 免费看一级黄色| 久久精品视频一区二区三区| 国产国语老龄妇女a片| 激情综合色综合久久综合| 日韩有码免费视频| 999亚洲国产精| 欧美一级中文字幕| 99久久99久久精品国产片桃花| 欧美精品成人一区二区在线观看 | 免费在线观看av| 亚洲色图五月天| 日本成人一区| 国产丝袜一区视频在线观看| 亚洲精品无遮挡| 欧美一区二区三区白人| 在线观看国产精品视频| 色综合天天综合色综合av| 日韩欧美国产亚洲| 亚洲一区二区三区在线| 亚洲av鲁丝一区二区三区 | 亚洲精品日韩成人| 国产一区二区三区日韩精品 | 日韩av资源| 亚洲黄在线观看| 亚洲av成人无码久久精品老人| 欧美不卡123| 亚洲乱色熟女一区二区三区| 日韩欧美色综合网站| 亚洲精品97久久中文字幕| 欧美大片日本大片免费观看| 亚洲国产精品成人久久蜜臀| 日韩欧美激情在线| 成人无码一区二区三区| 亚洲国产精品99久久| 婷婷五月综合激情| 亚洲欧洲视频在线| 黄色软件在线观看| 亚洲男人天堂古典| 国产九色在线| 日韩三级影视基地| 超鹏97在线| 国内外成人免费激情在线视频 | 亚洲mv在线观看| 国产成人自拍视频在线| 欧美性生交xxxxxdddd| 波多野结衣一区二区三区四区| 欧美亚洲动漫另类| 最近中文在线观看| 欧美高清视频不卡网| 精品国产亚洲av麻豆| 亚洲成人动漫在线播放| 三级理论午夜在线观看| 中文在线资源观看视频网站免费不卡| 欧美边添边摸边做边爱免费| 欧美久久久精品| 日韩精品美女| 国产精品中文字幕在线| 日本在线一区二区三区| 久久久久一区二区| 久久电影院7| 国内少妇毛片视频| 免费精品视频| 色91精品久久久久久久久| 成人激情动漫在线观看| 日本激情小视频| 韩国v欧美v亚洲v日本v| 国产欧美视频一区| 久久精品网站免费观看| 欧美h片在线观看| 亚洲国产精品天堂| 成年人av电影| 欧美丝袜美女中出在线| 国产一区二区在线视频聊天| 精品国产99国产精品| 亚洲色欧美另类| 色噜噜狠狠狠综合曰曰曰| 男女在线视频| 国产精品成人播放| 7777精品| 日本午夜精品一区二区三区| 一本到12不卡视频在线dvd| 精品视频免费在线播放| 麻豆成人91精品二区三区| 99精品一区二区三区无码吞精| 国产欧美精品一区aⅴ影院| 久久精品www| 欧美性猛xxx| 不卡视频在线播放| 亚洲欧美激情四射在线日| 在线中文资源天堂| 欧美激情videoshd| 日本免费在线一区| 久99久视频| 亚洲无中文字幕| 看欧美ab黄色大片视频免费| 成人综合婷婷国产精品久久| 手机看片国产日韩| 色综合婷婷久久| 日韩在线观看视频一区二区三区| 精品三级在线观看| 女女色综合影院| 日本欧美一级片| 精品嫩草影院| 999久久欧美人妻一区二区| 六月丁香综合在线视频| 熟女俱乐部一区二区视频在线| 一区二区三区美女| 国产黄色片视频| 色综合久久久网| 人妻视频一区二区三区| 久久亚洲精品视频| 少妇高潮一区二区三区99| 日韩av电影在线观看| 羞羞答答国产精品www一本 | 亚洲综合影院| 国产在线拍揄自揄拍无码| 卡一卡二国产精品| 大吊一区二区三区| 欧美探花视频资源| 成人三级黄色免费网站| 国产精品白嫩初高中害羞小美女 | 致1999电视剧免费观看策驰影院| 日韩有码一区二区三区| 一级性生活毛片| 欧美日韩色婷婷| 五月激情丁香婷婷| 91chinesevideo永久地址| 欧美xxxx在线| 色诱视频在线观看| 久久精品亚洲精品国产欧美 | 91精品国模一区二区三区| 91在线免费看| 成人国产精品一区二区| 中文字幕一区二区三区欧美日韩 | 日韩精品成人免费观看视频| 亚洲精品美女久久| 亚洲精品国产精品国产| 青青影院一区二区三区四区| 日韩和欧美一区二区三区| 欧美成人另类视频| 欧美日韩aaaaaa| 26uuu亚洲电影在线观看| 成人看片在线| 一本综合久久| 中文字幕国产综合| 欧美视频在线观看一区二区| 日本成a人片在线观看| 2022国产精品| 一区在线播放| www在线观看免费视频| 欧美人牲a欧美精品| 神马午夜伦理不卡 | 黑人精品一区二区| 69精品小视频| 久久香蕉国产| 人妻 丝袜美腿 中文字幕| 欧美日韩亚洲视频| 日本在线视频网| 国产精品播放| 久久中文字幕一区二区三区| 久草手机视频在线观看| 精品国产免费人成在线观看| 这里有精品可以观看| 亚洲一区二区不卡视频| 粉嫩一区二区三区性色av| 无码人妻精品一区二区三区不卡| 精品国产欧美一区二区五十路| www.成人网| 青青草精品视频在线观看| 一区二区三区精品在线| 青青草免费在线视频| 91欧美激情另类亚洲| 国产亚洲精品bv在线观看| 亚洲国产精品一区二区久久hs| 欧美va天堂va视频va在线| 成人午夜亚洲| 久草热视频在线观看| 亚洲天堂免费看| 日韩毛片在线一区二区毛片|