LlamaIndex 是一個使用法學碩士建立情境增強生成式 AI 應用程式的框架。
上下文增強是指向 LLM 模型提供附加相關資訊或上下文的技術,從而提高其對給定查詢的理解和回應。這種增強通常涉及檢索、整合外部資料來源(例如文件、嵌入)或將其附加到模型的輸入。目標是透過為模型提供必要的上下文來幫助模型提供更好、更準確和細緻的答案,從而使模型更加明智。檢索增強生成(RAG)是上下文增強最受歡迎的範例。
代理是由法學碩士提供支援的自動推理和決策引擎,它們使用工具來執行研究、資料擷取、網路搜尋和更多任務。它們可用於簡單的用例,例如基於資料回答問題,以便能夠決定並採取行動來完成任務。
在這篇文章中,我們將使用 LlamaIndex 建立一個簡單的 RAG 代理程式。
我們將使用 Python 使用 LlamaIndex 建立簡單的 RAG 代理程式。讓我們先安裝所需的依賴項,如下所示:
pip install llama-index python-dotenv
我們將使用 OpenAI 的 gpt-4o-mini 作為法學碩士。您需要將 API 金鑰放入環境變數檔案中。您可以在此處閱讀有關使用 LLamaIndex 設置本地法學碩士的更多資訊。
from llama_index.core import SimpleDirectoryReader, VectorStoreIndex, Settings from llama_index.llms.openai import OpenAI from dotenv import load_dotenv # Load environment variables (e.g., OPENAI_API_KEY) load_dotenv() # Configure OpenAI model Settings.llm = OpenAI(model="gpt-4o-mini") # Load documents from the local directory documents = SimpleDirectoryReader("./data").load_data() # Create an index from documents for querying index = VectorStoreIndex.from_documents(documents) query_engine = index.as_query_engine()
現在,讓我們定義代理可以用來執行任務的一些基本函數。
def multiply(a: float, b: float) -> float: """Multiply two numbers and returns the product""" return a * b def add(a: float, b: float) -> float: """Add two numbers and returns the sum""" return a + b
接下來,我們將根據先前定義的函數和查詢引擎建立工具,代理程式將使用這些工具來執行任務。這些工具可作為代理在處理不同類型的查詢時可以利用的實用程式。
from llama_index.core.tools import FunctionTool, QueryEngineTool # Wrap functions as tools add_tool = FunctionTool.from_defaults(fn=add) multiply_tool = FunctionTool.from_defaults(fn=multiply) # Create a query engine tool for document retrieval space_facts_tool = QueryEngineTool.from_defaults( query_engine, name="space_facts_tool", description="A RAG engine with information about fun space facts." )
我們現在將使用 ReActAgent 建立代理程式。代理將負責決定何時使用這些工具以及如何回應查詢。
from llama_index.core.agent import ReActAgent # Create the agent with the tools agent = ReActAgent.from_tools( [multiply_tool, add_tool, space_facts_tool], verbose=True )
該代理程式使用 ReAct 框架,該框架允許模型透過以邏輯順序利用給定工具來推理並採取行動。代理程式使用我們建立的工具進行初始化,並且 verbose=True 標誌將輸出有關代理如何推理和執行任務的詳細資訊。
最後,讓我們在互動式循環中執行代理,它會處理使用者查詢,直到我們退出。
while True: query = input("Query: ") if query == "/bye": exit() response = agent.chat(query) print(response) print("-" * 10)
以上是使用 LlamaIndex 建立簡單的 RAG 代理的詳細內容。更多資訊請關注PHP中文網其他相關文章!