成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

超越靜態管道:使用LlamaIndex增強人工智能代理

譯文 精選
人工智能
本文使用LlamaIndex的查詢引擎工具和函數工具構建人工智能代理,并演示如何有效地集成和利用這些工具。

譯者 | 李睿

審校 | 重樓

基本的檢索增強生成(RAG)數據管道通常依賴于硬編碼的步驟,每次運行時都遵循預定義的路徑。這些系統沒有實時決策,也不會根據輸入數據動態調整動作。這種限制會降低在復雜或不斷變化的環境中的靈活性和響應性,凸顯了傳統RAG系統的一個主要弱點。

LlamaIndex通過引入代理解決了這個限制。代理超越了查詢引擎,因為它們不僅可以從靜態數據源“讀取”數據,還可以動態地攝取和修改來自各種工具的數據。這些代理由LLM提供支持,通過從提供的工具集中選擇最合適的工具來執行一系列操作,以完成指定的任務。這些工具可以像基本功能一樣簡單,也可以像全面的LlamaIndex查詢引擎一樣復雜。他們處理用戶輸入或查詢,就如何處理這些輸入做出內部決策,并決定是否需要額外的步驟,或者是否可以交付最終結果。這種執行自動推理和決策的能力使代理對復雜的數據處理任務具有高度的適應性和高效性。

該圖說明了LlamaIndex代理的工作流程:它們如何生成步驟、做出決策、選擇工具和評估進度,從而根據用戶輸入動態地完成任務。

LlamaIndex代理的核心組件

LlamaIndex中的代理有兩個主要組件:AgentRunner和AgentWorker。

Agent Runner

Agent Runner是LlamaIndex中的編排器。它管理代理的狀態,包括會話內存,并為用戶交互提供高級界面。它創建和維護任務,并負責在每個任務中運行各個步驟。以下是其功能的詳細分解:

  • 任務創建:代理執行器根據用戶查詢或輸入創建任務。
  • 狀態管理:存儲和維護會話和任務的狀態。
  • 內存管理:它在內部管理會話內存,確保在交互中保持場景。
  • 任務執行:它與Agent Worker協調,在每個任務中執行各個步驟。

與LangChain代理(需要開發人員人工定義和傳遞內存)不同,LlamaIndex代理在內部處理內存管理。

Agent Worker

Agent Worker控制由Agent Runner給出的任務的逐步執行。它負責根據當前輸入生成任務中的下一步。Agent Worker可以定制以包含特定的推理邏輯,使其高度適應不同的任務。主要方面包括:

  • 步驟生成:根據當前數據確定任務的下一步。
  • 自定義:通過自定義,以處理特定類型的推理或數據處理。

Agent Runner管理任務的創建和狀態,而Agent Worker執行每個任務的步驟,在Agent Runner的指導下充當操作單元。

LlamaIndex中的代理類型

LlamIndex提供了針對特定任務和功能設計的不同類型的代理。

數據代理

數據代理是專門用于處理各種數據任務的代理,包括檢索和操作。它們可以在讀和寫模式下運行,并與不同的數據源無縫交互。

數據代理可以跨各種數據庫和API搜索、檢索、更新和操作數據。它們支持與Slack、Shopify、Google等平臺的交互,從而可以輕松地與這些服務集成。數據代理可以處理復雜的數據操作,例如查詢數據庫、調用API、更新記錄和執行數據轉換。其適應性強的設計使其適用于從簡單的數據檢索到復雜的數據處理管道的廣泛應用。

Python

1 from llama_index.agent import OpenAIAgent, ReActAgent
2 from llama_index.llms import OpenAI
3
4 # import and define tools
5 ...
6 # initialize llm
7 llm = OpenAI(model="gpt-3.5-turbo")
8 # initialize openai agent
9 agent = OpenAIAgent.from_tools(tools, llm=llm, verbose=True)
10 # initialize ReAct agent
11 agent = ReActAgent.from_tools(tools, llm=llm, verbose=True)
12 # use agent
13 response = agent.chat("What is (121 * 3) + 42?")

自定義代理

自定義代理(Custom Agents)為用戶提供了很多的靈活性和自定義選項。通過子類化CustomSimpleAgentWorker,可以為代理定義特定的邏輯和行為。這包括處理復雜查詢、集成多個工具和實現錯誤處理機制。

用戶可以通過定義分步邏輯、重試機制和集成各種工具來定制自定義代理以滿足特定需求。這種自定義允許用戶創建管理復雜任務和工作流的代理,使它們能夠高度適應不同的場景。無論是管理復雜的數據操作還是與獨特的服務集成,自定義代理都能提供構建專業、高效解決方案所需的工具。

工具和工具規格

工具是任何代理中最重要的組件,它們允許代理執行各種任務并擴展其功能。通過使用不同類型的工具,代理可以根據需要執行特定的操作。這使得該代理具有很高的適應性和效率。

函數工具

函數工具(FunctionTool)允許用戶將任何Python函數轉換為代理可以使用的工具。這一特性對于創建自定義操作非常有用,可以增強代理執行各種任務的能力。

用戶可以將簡單的函數轉換為代理將其集成到其工作流中的工具。這可以包括數學運算、數據處理函數和其他自定義邏輯。

可以將Python函數轉換為如下的工具:

Python

1 from llama_index.core.tools import FunctionTool
2 def multiply(a: int, b: int) -> int:
3    """Multiple two integers and returns the result integer"""
4    return a * b
5
6 multiply_tool = FunctionTool.from_defaults(fn=multiply)

LlamaIndex中的FunctionTool方法允許用戶將任何Python函數轉換為代理可以使用的工具。函數的名稱成為工具的名稱,函數的文檔字符串充當工具的描述。

查詢引擎工具

查詢引擎工具(QueryEngine Tools)包裝了現有的查詢引擎,允許代理對數據源執行復雜的查詢。這些工具與各種數據庫和API集成,使代理能夠高效地檢索和操作數據。

這些工具使代理能夠與特定的數據源交互、執行復雜的查詢和檢索相關信息。這種集成允許代理在決策過程中有效地使用數據。

要將任何查詢引擎轉換為查詢引擎工具,可以使用以下代碼:

Python

1 from llama_index.core.tools import QueryEngineTool
2 from llama_index.core.tools import ToolMetadata
3 query_engine_tools = QueryEngineTool(
4        query_engine="your_index_as_query_engine_here",
5        metadata=ToolMetadata(
6            name="name_your_tool",
7            description="Provide the description",
8        ),
9    )

QueryEngineTool方法允許用戶將查詢引擎轉換為代理可以使用的工具。ToolMetadata類幫助定義這個工具的名稱和描述。工具的名稱由name屬性設置,描述由description屬性設置。

  • 注意:工具的描述非常重要,因為它有助于LLM決定何時使用該工具。

使用MyScaleDB和LlamaIndex構建人工智能代理

使用查詢引擎工具和功能工具構建一個人工智能代理,以演示如何有效地集成和利用這些工具。

安裝必要的庫

首先,通過在終端運行以下命令安裝所需的庫:

Shell

1 pip install myscale-client llama

將使用MyScaleDB作為向量搜索引擎來開發查詢引擎。這是一個專門為可擴展應用程序設計的高級SQL向量數據庫。

獲取查詢引擎的數據

對于這個例子,將使用Nike目錄數據集。使用以下代碼下載并準備數據:

Python

1 from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
2 import requests
3
4 url = 'https://niketeam-asset-download.nike.net/catalogs/2024/2024_Nike%20Kids_02_09_24.pdf?cb=09302022'
5 response = requests.get(url)
6
7 with open('Nike_Catalog.pdf', 'wb') as f:
8    f.write(response.content)
9
10 reader = SimpleDirectoryReader(input_files=["Nike_Catalog.pdf"])
11 documents = reader.load_data()

這段代碼將下載Nike目錄PDF并加載數據以便在查詢引擎中使用。

連接MyScaleDB

在使用MyScaleDB之前,需要建立一個連接:

Python

1 import clickhouse_connect
2
3 client = clickhouse_connect.get_client(
4    host='your_host_here',
5    port=443,
6    username='your_username_here',
7    password='your_password_here'
8 )

要了解如何獲取集群詳細信息并閱讀有關MyScale的更多信息可以參考MyScaleDB快速入門指南。

創建查詢引擎工具

首先為代理構建第一個工具,即查詢引擎工具。為此,首先使用MyScaleDB開發查詢引擎,并將Nike目錄數據添加到矢量存儲中。

獲取查詢引擎的數據

Python

1 from llama_index.vector_stores.myscale import MyScaleVectorStore
2 from llama_index.core import StorageContext
3 vector_store = MyScaleVectorStore(myscale_client=client)
4 storage_context = StorageContext.from_defaults(vector_store=vector_store)
5 index = VectorStoreIndex.from_documents(
6   documents, storage_context=storage_context
7 )
8 query_engine = index.as_query_engine()

一旦數據被輸入到向量存儲中,就會創建一個索引。下一步是將查詢引擎轉換為工具。為此,將使用LlamaIndex的QueryEngineTool方法。

Python

1 from llama_index.core.tools import QueryEngineTool
2 from llama_index.core.tools import ToolMetadata
3
4 query_engine_tool = QueryEngineTool(
5    query_engine=index,
6    metadata=ToolMetadata(
7        name="nike_data",
8        description="Provide information about the Nike products. Use a detailed plain text question as input to the tool."
9    ),
10 )

QueryEngineTool接受query_engine和meta_data作為參數。在元數據中,采用描述定義工具的名稱。

創建函數工具

下一個工具是一個簡單的Python函數,它將兩個數字相乘。此方法將使用LlamaIndex的FunctionTool轉換為工具。

Python

1 from llama_index.core.tools import FunctionTool
2 # Define a simple Python function
3 def multiply(a: int, b: int) -> int:
4    """Multiply two integers and return the result."""
5    return a * b
6 # Change function to a tool
7 multiply_tool = FunctionTool.from_defaults(fn=multiply)

在此之后,完成了工具的創建。LlamaIndex代理將工具作為Python列表。然后把這些工具添加到一個列表中。

Python

1 tools = [multiply_tool, query_engine_tool]

定義LLM

定義LLM是任何LlamaIndex代理的核心。LLM的選擇是至關重要的,因為定義LLM的理解和性能越好,它就越能有效地充當決策者和處理復雜問題。將使用OpenAI的gpt-3.5 turbo模型。

Python

1 from llama_index.llms.openai import OpenAI
2 llm = OpenAI(model="gpt-3.5-turbo")

初始化代理

正如前面看到的,一個代理由一個Agent Runner和一個Agent Worker組成。這是代理的兩個組成部分。現在將探索它們在實踐中是如何工作的。以兩種方式實現了下面的代碼:

  • 自定義代理:第一種方法是首先使用工具和LLM初始化代理工作者。然后,將Agent Worker傳遞給Agent Runner以處理完整的代理。在這里將導入必要的模塊并編寫自己的代理。

Python

1 from llama_index.core.agent import AgentRunner
2 from llama_index.agent.openai import OpenAIAgentWorker
3
4 # Method 2: Initialize AgentRunner with OpenAIAgentWorker
5 openai_step_engine = OpenAIAgentWorker.from_tools(tools, llm=llm, verbose=True)
6 agent1 = AgentRunner(openai_step_engine)
  • 使用預定義代理:第二種方法是使用代理,代理是AgentRunner的子類,它在底層捆綁了OpenAIAgentWorker。因此不需要自己定義AgentRunner或AgentWorkers,因為它們是在后端實現的。

Python

1 from llama_index.agent.openai import OpenAIAgent
2
3 # Initialize OpenAIAgent
4 agent = OpenAIAgent.from_tools(tools, llm=llm, verbose=True)
  • 注意:當在LLM中設置verbose=true時,可以深入了解模型的思維過程,從而通過提供詳細的解釋和推理來理解它是如何得到答案的。

無論初始化方法是什么,都可以使用相同的方法測試代理。測試第一個:

Python

1 # Call the custom agent
2 agent = agent.chat("What's the price of BOYS NIKE DF STOCK RECRUIT PANT DJ573?")

應該得到類似這樣的結果:

現在采用數學運算調用第一個自定義代理。

Python

1 # Call the second agent
2 response = agent1.chat("What's 2+2?")

調用第二個代理,并要求進行數學運算。會得到類似這樣的回復:

人工智能代理自主處理復雜任務的潛力正在擴大,這使得它們在商業環境中具有不可估量的價值,在這些環境中,它們可以管理日常任務,并將人類解放出來從事更高價值的活動。隨著技術的進步和向前發展,人工智能代理的采用預計將會增長,進一步徹底改變人們與技術的互動方式,并優化工作流程。

結論

LlamaIndex代理提供了一種管理和處理數據的智能方式,超越了傳統的RAG系統。與靜態數據管道不同,這些代理可以做出實時決策,根據傳入的數據調整其操作。這種自動推理使它們對復雜任務具有高度的適應性和高效性。它們集成了從基本功能到高級查詢引擎的各種工具,以智能地處理輸入并提供優化的結果。

原文標題:Beyond Static Pipelines:Enhancing AI Agents With LlamaIndex,作者:Usama Jamil

責任編輯:姜華 來源: 51CTO內容精選
相關推薦

2023-12-11 11:41:49

機器學習數據注釋人工智能

2024-02-22 09:55:48

人工智能安全監控建筑工地安全

2022-03-26 22:24:31

區塊鏈人工智能技術

2021-05-28 13:15:54

人工智能領域地位

2019-09-27 11:46:06

人工智能數據技術

2019-08-14 15:27:39

人工智能技術經濟

2020-11-27 09:00:00

人工智能

2023-03-09 22:02:21

ChatGPT人工智能

2024-01-03 09:47:44

2023-08-30 16:04:13

人工智能AI

2023-10-19 11:10:18

人工智能邊緣部署

2021-03-09 16:32:12

人工智能科學教育

2021-08-10 08:54:10

人工智能中國美國

2021-09-02 09:44:51

AI人工智能

2023-11-01 06:55:05

人工智能可觀測性IT

2024-03-15 14:26:28

2025-03-13 13:29:32

2022-08-02 11:25:12

人工智能數據管道

2024-03-29 06:00:00

人工智能新興風險安全威脅

2022-09-14 13:49:34

人工智能金融服務公司
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品日韩高清伦字幕搜索 | 草b视频 | 成人亚洲网 | 羞羞网站在线观看 | 欧美九九九 | av免费电影在线 | 精产嫩模国品一二三区 | 亚洲热在线视频 | 婷婷久久精品一区二区 | 亚洲男人网 | 国产小视频在线 | 日韩免费视频一区二区 | 中文字幕在线精品 | 久久网站免费视频 | 亚洲高清网 | 欧美激情综合 | 国产精品久久久久aaaa樱花 | 亚洲成a人片 | 午夜精品 | 精品国产乱码久久久久久闺蜜 | 可以在线观看av的网站 | 怡红院怡春院一级毛片 | 成人精品一区亚洲午夜久久久 | 国内毛片毛片毛片毛片 | 91在线最新 | 黄色一级电影在线观看 | 欧美乱做爰xxxⅹ久久久 | 欧美性精品 | 亚洲视频在线观看免费 | 成人毛片在线视频 | 91性高湖久久久久久久久_久久99 | 中文字幕视频在线免费 | 成人国产一区二区三区精品麻豆 | 国产一区免费 | 激情欧美一区二区三区 | 亚洲成人中文字幕 | 久久中文字幕一区 | 91麻豆精品国产91久久久更新资源速度超快 | 午夜小电影 | av三级| 欧美国产日韩精品 |