精品欧美一区二区三区在线观看 _久久久久国色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修改
收藏
回復
舉報
回復
相關推薦
精品福利在线视频| 色天天综合网| 精品女厕一区二区三区| 蜜桃欧美视频| 97精品人妻一区二区三区在线| 久久影院一区| 精品88久久久久88久久久| 国产裸体舞一区二区三区| 免费网站成人| 91丝袜高跟美女视频| 国产精品第3页| 国产波霸爆乳一区二区| 精品中文字幕一区二区三区av| 欧美日韩不卡一区| 日本国产在线播放| 成人久久久精品乱码一区二区三区| 国产色爱av资源综合区| 国产精品专区一| 日韩高清免费av| 成人在线丰满少妇av| 精品国产青草久久久久福利| 日日摸天天爽天天爽视频| 韩国av网站在线| 久久网这里都是精品| 91九色视频在线观看| 日本精品入口免费视频| 激情综合中文娱乐网| 最新的欧美黄色| 玖草视频在线观看| 中文在线免费一区三区| 欧美视频一区二区在线观看| 男女私大尺度视频| 国产在线高清视频| 国产农村妇女毛片精品久久麻豆| 国产女主播一区二区| 91丨九色丨蝌蚪丨对白| 丝袜美腿亚洲综合| 91av视频导航| 日本五十熟hd丰满| 欧美日韩亚洲一区三区| 久久精品视频在线| 国产精品成人在线视频| 国产成人短视频在线观看| 日韩精品一区二| 亚洲男人天堂2021| 91精品国产色综合久久不卡粉嫩| 欧美性淫爽ww久久久久无| 国产男女无遮挡| 先锋成人av| 亚洲精品国产高清久久伦理二区| 一区二区三区的久久的视频| 成人午夜在线观看视频| 久久精品一区四区| 欧美性天天影院| 欧美xxx.com| www成人在线观看| 九色综合日本| 色综合久久网女同蕾丝边| 97久久精品人人爽人人爽蜜臀| 国产偷久久久精品专区| 手机av免费在线观看| 播五月开心婷婷综合| 国产视频在线观看一区| 天堂av2024| 337p粉嫩大胆色噜噜噜噜亚洲| 国产一区二区三区av在线| 特级丰满少妇一级aaaa爱毛片| 99麻豆久久久国产精品免费优播| 国产三区二区一区久久| 三级在线视频| 中文字幕av资源一区| 一本久道久久综合| 三级福利片在线观看| 亚洲国产欧美另类丝袜| av之家在线观看| 第84页国产精品| 欧美性色综合网| 四虎成人在线播放| 盗摄系列偷拍视频精品tp| 亚洲国产精品悠悠久久琪琪| 好吊日免费视频| 人人狠狠综合久久亚洲婷婷| 久久精品视频va| 国产精品美女毛片真酒店| 欧美亚洲一级| 成人在线视频网| 亚洲精品久久久久久无码色欲四季| 成人三级在线视频| 欧洲精品国产| 国产黄网站在线观看| 亚洲动漫第一页| 爱情岛论坛亚洲首页入口章节| 国产日韩一区二区三免费高清| 精品粉嫩aⅴ一区二区三区四区 | 日本小视频在线免费观看| 亚洲国产裸拍裸体视频在线观看乱了 | 日韩中文字幕免费在线观看| 久久久精品黄色| mm131午夜| 永久免费毛片在线播放| 欧美美女一区二区在线观看| 9.1在线观看免费| 精品视频免费| 久久久久久亚洲精品| 老熟妇一区二区三区| 国产精品白丝jk白祙喷水网站 | 亚洲人在线观看视频| 中文在线免费一区三区高中清不卡 | 嫩草在线播放| 亚洲精品成人a在线观看| 国产一区二区视频免费在线观看| 伊人久久大香| 一区二区在线视频| 国产精品6666| 激情综合色播五月| 日本在线视频一区| av美女在线观看| 欧美一区二区三区视频免费| 亚洲国产天堂av| 在线亚洲观看| 亚洲xxxx做受欧美| 欧美天天影院| 一本大道久久a久久精二百| 久久久精品人妻一区二区三区| 精品国产欧美日韩| 2018国产精品视频| 亚洲精品国偷拍自产在线观看蜜桃| 国产精品网站在线| 粗暴91大变态调教| 欧美电影完整版在线观看| 欧美大学生性色视频| 亚洲一级片免费看| 国产日韩精品一区二区浪潮av| 国产片侵犯亲女视频播放| 国产精品毛片无码| 日韩视频免费看| 又骚又黄的视频| 久久精品亚洲一区二区三区浴池 | 老熟妇高潮一区二区三区| 视频一区二区中文字幕| 久久本道综合色狠狠五月| 24小时免费看片在线观看| 亚洲成人精品视频在线观看| 美国黄色小视频| 国产美女一区二区| 日韩中文在线字幕| 免费精品一区| 九色91av视频| 性少妇videosexfreexxx片| 亚洲欧洲中文日韩久久av乱码| jizzzz日本| 91一区二区三区四区| 国产欧美精品久久久| 日本精品在线| 91麻豆精品国产91久久久久久久久| 免费看一级黄色| 国产一区二区三区免费播放| 日本在线视频www色| 免费看日产一区二区三区| 欧美日韩国产二区| 偷拍精品一区二区三区| 欧美性猛交xxxx乱大交极品| 91精品国产自产| 久久久久久久欧美精品| 日韩性感在线| 日韩一区二区三免费高清在线观看| 日韩中文字幕视频在线| 国产免费无遮挡| 一区二区三区中文字幕| 永久免费未满蜜桃| 久久国产免费| 亚洲精品不卡| 亚洲va欧美va人人爽成人影院| 欧美黑人狂野猛交老妇| 午夜性色福利视频| 欧美午夜一区二区| 青娱乐国产在线视频| 成人爱爱电影网址| 五月婷婷激情久久| 午夜久久黄色| 欧美激情导航| www.久久久.com| 7777精品视频| 免费在线观看av| 亚洲国产精品电影在线观看| 中文字幕 国产精品| 亚洲人成小说网站色在线| 欧美一区二区免费在线观看| 日韩制服丝袜av| 91看片淫黄大片91| 亚州综合一区| 成人免费网视频| 免费h在线看| 久久精品电影网站| 日韩大片b站免费观看直播| 欧美日韩国产综合久久 | 日本免费中文字幕在线| 精品福利在线导航| 在线免费看av片| 精品久久久中文| aa在线免费观看| 男同在线观看| 欧美日韩成人激情| 日韩av男人天堂| 国产精品久久久久久久久果冻传媒 | 日本不卡不卡| 欧美在线精品一区| 国产一区福利视频| 日韩成人一区| 欧美亚洲国产日本| 毛片激情在线观看| 亚洲午夜久久久影院| 精品国产伦一区二区三区| 色综合天天综合色综合av| 欧美另类videoxo高潮| 久久久蜜桃精品| 日本女人性视频| 看电视剧不卡顿的网站| 91丨porny丨探花| 欧美激情一级片一区二区| 日本精品二区| 免费看成人人体视频| 亚洲aaaaaa| 日日夜夜一区| 国产精品高清在线| 免费高潮视频95在线观看网站| 美日韩丰满少妇在线观看| 国产乱子伦三级在线播放| 亚洲高清免费观看高清完整版| 国产精品欧美激情在线| 欧美性生活久久| 性色av一区二区三区四区| 欧美性猛交xxxx免费看漫画 | 亚洲a∨日韩av高清在线观看| 日韩精品免费观看视频| 国产不卡一区二区在线播放| 天堂资源在线| 欧洲成人性视频| 亚洲电影观看| 日本国产一区二区三区| 在线天堂资源| 欧美尤物巨大精品爽| 在线男人天堂| 2019国产精品自在线拍国产不卡| 黑人另类精品××××性爽| 欧美夫妻性生活xx| 羞羞视频在线观看免费| 欧美大秀在线观看| 国产盗摄在线视频网站| 久久久久久有精品国产| 波多野结衣中文在线| 97在线日本国产| 在线观看爽视频| 热re91久久精品国99热蜜臀| 一区一区三区| 国产精品丝袜高跟| 中文字幕日韩亚洲| 999精品视频一区二区三区| 一区中文字幕| 精品无码久久久久久久动漫| 林ゆな中文字幕一区二区| 鲁片一区二区三区| 国产在视频线精品视频www666| 日韩欧美亚洲区| 天天综合网91| 91.com在线| 美女爽到呻吟久久久久| 免费看污污网站| 国产一区二区久久| 中文字幕99页| 久久你懂得1024| 国产精品一区二区亚洲| 亚洲精品视频免费观看| 日干夜干天天干| 色88888久久久久久影院野外| 中国女人真人一级毛片| 91精品国产综合久久香蕉麻豆 | 国产视频自拍一区| 三区四区电影在线观看| 色综合久久精品亚洲国产| 蜜桃视频动漫在线播放| 国产欧美精品在线| 高清一区二区三区| 日韩一区免费观看| 欧美国产专区| 欧美性猛交久久久乱大交小说| 极品少妇xxxx精品少妇偷拍| 挪威xxxx性hd极品| 国产精品精品国产色婷婷| 国产在线拍揄自揄拍无码视频| 色噜噜狠狠色综合欧洲selulu| 国产精品成人无码| 精品欧美黑人一区二区三区| 国产三级视频在线看| 欧美疯狂xxxx大交乱88av| 97成人超碰| 国内精品视频在线播放| 亚洲成人精品| 九九九九免费视频| 国产精品综合二区| 日本二区在线观看| 亚洲风情在线资源站| 亚洲影视一区二区| 亚洲精品视频免费在线观看| 国产调教视频在线观看| 日本免费久久高清视频| 一区二区在线免费播放| 一级二级三级欧美| 午夜亚洲视频| 一级黄色免费视频| 国产精品国产三级国产aⅴ中文 | 欧美成人aaa片一区国产精品| 色视频成人在线观看免| 好男人在线视频www| 日韩视频免费在线观看| 欧美最新精品| 精品国产二区在线| 影院欧美亚洲| 性鲍视频在线观看| 亚洲视频在线一区| 中文字幕精品在线观看| 亚洲夜晚福利在线观看| 亚洲妇女成熟| 久久草.com| 国产主播一区| 日韩精品国产一区| 亚洲视频一二三区| 一级做a爰片久久毛片16| 亚洲欧美日韩中文视频| 欧美三级网站| 久久久久免费网| 亚洲日本欧美| 国产人妻黑人一区二区三区| 最新中文字幕一区二区三区| 中文字幕一区二区在线视频| 亚洲欧美制服丝袜| 小h片在线观看| 六十路精品视频| 免费视频一区| 91精品人妻一区二区| 岛国精品视频在线播放| 桃花色综合影院| 欧美性受xxx| 欧美激情在线免费| 成人久久久久久久久| wwww国产精品欧美| 免费黄色av片| 伊人久久大香线蕉av一区二区| av激情成人网| 亚洲精品第一区二区三区| 老司机精品视频网站| 亚洲女优在线观看| 欧美色成人综合| 免费观看在线黄色网| 亚洲va久久久噜噜噜| 欧美在线亚洲| 久久免费精品国产| 欧美性生交xxxxxdddd| 欧美精品少妇| 国产日韩av在线| 欧美日韩国产欧| jizz日本免费| 精品婷婷伊人一区三区三| 欧美成人hd| 国产精品福利视频| 国产一区二区三区久久| 亚洲国产日韩一区无码精品久久久| 在线观看91视频| 大地资源网3页在线观看| 国产日韩在线一区二区三区| 香蕉久久a毛片| 国产精品久久国产精麻豆96堂| 91麻豆精品国产自产在线| 男女在线视频| 欧美日韩一区二区三| 久草中文综合在线| 国产精品6666| 自拍亚洲一区欧美另类| 99久久香蕉| 粉嫩虎白女毛片人体| 亚洲丝袜自拍清纯另类| 香蕉av在线播放| 成人国产在线视频| 一本综合久久| 熟女少妇a性色生活片毛片| 欧美r级在线观看| 激情亚洲影院在线观看| 女女百合国产免费网站| 99久久精品免费精品国产| 最近中文在线观看| 欧美激情精品久久久久久黑人 | 91成人在线网站| 亚洲国产精品久久久久婷蜜芽| 国产精品嫩草影院av蜜臀| 丰满人妻一区二区三区无码av| 国产成人拍精品视频午夜网站| 91精品一区二区三区综合| 毛茸茸多毛bbb毛多视频| 91精品一区二区三区久久久久久| 中国色在线日|韩|