
使用這些基本 REST API 最佳實踐構建出色的 API
Agents 的核心概念是利用語言模型來選擇一系列要執行的動作。與傳統的硬編碼動作鏈不同,Agents 使用語言模型作為推理引擎來確定要執行哪些動作以及它們的執行順序。
Agents
The core idea of agents is to use a language model to choose a sequence of actions to take. In chains, a sequence of actions is hardcoded (in code). In agents, a language model is used as a reasoning engine to determine which actions to take and in which order.
Agents能干什么?
Agent System由多個協作的智能代理構成,這些代理能自主行動、響應環境、與其他代理或用戶交互,并根據目標、規則和知識執行任務或決策。
在Lilian Weng的博客中,她闡述了以LLM為核心的AI Agents系統,其中LLM負責推理、決策和生成語言,還需結合規劃、記憶和工具使用等關鍵組件來完善功能。
Agents的工作流程:通過結合大型語言模型(LLM)的推理能力和外部工具的執行能力,接收任務后進行思考、行動、接收反饋并重復這些步驟,直至任務完成或達到終止條件。
如果任務還沒有完成,LLM Agent會重復上述步驟,直到任務完成或達到某個終止條件。
Agents的工作流程
Agent Types:在LangChain中,Agent Types定義了不同類型的代理(Agents),這些代理使用不同的策略和方法來與用戶和工具進行交互,以完成各種任務。
args_schema
,Agent可以理解每個工具所需輸入參數的結構和類型,從而與用戶進行更結構化的對話以收集必要的信息。這有助于確保與工具的交互是準確和一致的。Agents應用場景:在需要根據不同輸入動態決定工具使用次數和順序的復雜任務中,實現靈活智能的決策和處理。
工具鏈:有些任務的處理流程是固定的,我們可以預先設定一個工具鏈來按順序處理。
工具鏈
但有些任務的處理流程是動態的,需要根據輸入來決定使用哪些工具以及如何使用。
Agents是一種可以實現這種動態決策的機制,它可以根據輸入和當前狀態來選擇下一步的操作,從而實現更加靈活和智能的任務處理。
Agents應用創建:使用 LangChain 庫創建一個簡單的代理(agent),該代理能夠處理數學運算任務。
一、創建工具函數:通過裝飾器?@tool 創建了三個工具函數:multiply(乘法)、add(加法)和 exponentiate(指數運算)。這些函數接收整數作為參數,并返回運算結果。
@tool
1
2 def multiply(first_int: int, second_int: int) -> int:
3 return first_int * second_int
4
5 @tool
6 def add(first_int: int, second_int: int) -> int:
7 return first_int + second_int
8
9 @tool
10 def exponentiate(base: int, exponent: int) -> int:
11 return base ** exponent
二、創建提示模板:從 LangChain Hub 中獲取一個提示模板。這個模板用于指導大型語言模型(LLM)如何生成響應。
from langchain import hubfrom langchain.agents import AgentExecutor, create openai tools agentfrom langchain openai import ChatOpenAI
# Get the prompt to use - you can modify this!prompt = hub.pull("hwchase17/openai-tools-agent"prompt.pretty_print()
三、創建代理和執行器:選擇一個大型語言模型來驅動代理。使用所選的模型、工具函數和提示模板來構建 OpenAI Tools 代理。同時,創建一個代理執行器,將代理和工具函數傳遞給它。
model = ChatOpenAl(model="gpt-3.5-turbo-1106" temperature=0)agent = create openai tools agent(model, tools, prompt)agent executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
四、調用代理:代理會根據輸入和提示模板動態地調用適當的工具函數來完成運算,并返回運算結果。
agent executor.invoke(
0
"input. "Take 3 to the fifth power and multiply that by the sum of twelve and three, then square tl
5
本文章轉載微信公眾號@架構師帶你玩轉AI