使用 Arize Phoenix 追蹤和評估您的智慧體
您已經構建了智慧體。它接收輸入和工具,處理它們,並生成響應。也許它正在做決策、檢索資訊、自主執行任務,或者三者兼有。但現在最大的問題來了——它的表現有多有效?更重要的是,您怎麼知道?
構建智慧體是一回事;理解其行為是另一回事。這就是追蹤和評估發揮作用的地方。追蹤允許您一步步地精確檢視智慧體正在做什麼——它接收到什麼輸入,如何處理資訊,以及如何得出最終輸出。可以把它想象成您智慧體決策過程的 X 光片。同時,評估幫助您衡量效能,確保您的智慧體不僅功能正常,而且實際上有效。它是否產生了正確的答案?其在每個步驟中的發現有多相關?智慧體的響應制作得如何?它是否符合您的目標?
Arize Phoenix 提供了一個集中式平臺,可以即時追蹤、評估和除錯您的智慧體決策——所有這些都在一個地方。我們將深入探討如何實施這些功能來完善和最佳化您的智慧體。因為構建只是開始——真正的智慧來自於準確瞭解幕後發生的一切。
為此,讓我們確保我們有一個智慧體設定!您可以按照以下步驟進行操作,或者使用您自己的智慧體。
構建智慧體
步驟 1:安裝所需的庫
pip install -q smolagents
步驟 2:匯入所有必要的構建塊
現在,讓我們引入將要使用的類和工具
from smolagents import (
CodeAgent,
DuckDuckGoSearchTool,
VisitWebpageTool,
HfApiModel,
)
步驟 3:設定我們的基礎模型
我們將建立一個由 Hugging Face Hub 無伺服器 API 提供支援的模型例項
hf_model = HfApiModel()
步驟 4:建立工具呼叫智慧體
agent = CodeAgent(
tools=[DuckDuckGoSearchTool(), VisitWebpageTool()],
model=hf_model,
add_base_tools=True
)
步驟 5:執行智慧體
現在是神奇時刻——讓我們看看我們的智慧體是如何運作的。我們向智慧體提出的問題是
“獲取 Google 從 2020 年到 2024 年的股價,並從中建立一個折線圖?”
agent.run("fetch the share price of google from 2020 to 2024, and create a line graph from it?")
您的智慧體現在將:
- 使用 DuckDuckGoSearchTool 搜尋 Google 的歷史股價。
- 可能使用 VisitWebpageTool 訪問頁面以查詢該資料。
- 嘗試收集資訊並生成或描述如何建立折線圖。
追蹤您的智慧體
一旦您的智慧體執行起來,下一個挑戰就是理解其內部工作流程。追蹤可以幫助您跟蹤智慧體採取的每一步——從呼叫工具到處理輸入和生成響應——使您能夠除錯問題、最佳化效能並確保其行為符合預期。
為了啟用追蹤,我們將使用 Arize Phoenix 進行視覺化,並使用 OpenTelemetry + OpenInference 進行儀器化。
從 smolagents 安裝 telemetry 模組
pip install -q 'smolagents[telemetry]'
您可以透過多種方式執行 Phoenix。此命令將在您的機器上執行 Phoenix 的本地例項
python -m phoenix.server.main serve
對於 Phoenix 的其他託管選項,您可以建立一個免費的線上 Phoenix 例項,在本地自託管應用程式,或在 Hugging Face Spaces 上託管應用程式。
啟動後,我們註冊一個追蹤器提供程式,指向我們的 Phoenix 例項。
from phoenix.otel import register
from openinference.instrumentation.smolagents import SmolagentsInstrumentor
tracer_provider = register(project_name="my-smolagents-app") # creates a tracer provider to capture OTEL traces
SmolagentsInstrumentor().instrument(tracer_provider=tracer_provider) # automatically captures any smolagents calls as traces
現在,對 smolagents 的所有呼叫都將透過我們的 Phoenix 例項傳送。
現在追蹤已啟用,讓我們用一個簡單的查詢來測試它
agent.run("What time is it in Tokyo right now?")
一旦 OpenInference 與 SmolAgents 設定好,每次智慧體呼叫都將在 Phoenix 中自動追蹤。

評估您的智慧體
一旦您的智慧體啟動並執行受到監控,下一步就是評估其效能。評估(evals)有助於確定您的智慧體在檢索、處理和呈現資訊方面的表現如何。
您可以執行多種型別的評估,例如響應相關性、事實準確性、延遲等等。檢視 Phoenix 文件,深入瞭解不同的評估技術。
在此示例中,我們將重點評估智慧體使用的 DuckDuckGo 搜尋工具。我們將使用大型語言模型(LLM)作為判斷者——特別是 OpenAI 的 GPT-4o——來衡量其搜尋結果的相關性。
步驟 1:安裝 OpenAI
首先,安裝必要的軟體包
pip install -q openai
我們將使用 GPT-4o 評估搜尋工具的響應是否相關。
這種方法,稱為“LLM 作為判斷者”,利用語言模型對響應進行分類和評分。
步驟 2:檢索工具執行跨度
為了評估 DuckDuckGo 檢索資訊的表現,我們首先需要提取呼叫該工具的執行軌跡。
from phoenix.trace.dsl import SpanQuery
import phoenix as px
import json
query = SpanQuery().where(
"name == 'DuckDuckGoSearchTool'",
).select(
input="input.value", # this parameter must be named input to work with the RAG_RELEVANCY_PROMPT_TEMPLATE
reference="output.value", # this parameter must be named reference to work with the RAG_RELEVANCY_PROMPT_TEMPLATE
)
# The Phoenix Client can take this query and return the dataframe.
tool_spans = px.Client().query_spans(query, project_name="my-smolagents-app")
tool_spans["input"] = tool_spans["input"].apply(lambda x: json.loads(x).get("kwargs", {}).get("query", ""))
tool_spans.head()
步驟 3:匯入提示模板
接下來,我們載入 RAG 相關性提示模板,它將幫助 LLM 分類搜尋結果是否相關。
from phoenix.evals import (
RAG_RELEVANCY_PROMPT_RAILS_MAP,
RAG_RELEVANCY_PROMPT_TEMPLATE,
OpenAIModel,
llm_classify
)
import nest_asyncio
nest_asyncio.apply()
print(RAG_RELEVANCY_PROMPT_TEMPLATE)
步驟 4:執行評估
現在,我們使用 GPT-4o 作為判斷者執行評估
from phoenix.evals import (
llm_classify,
OpenAIModel,
RAG_RELEVANCY_PROMPT_TEMPLATE,
)
eval_model = OpenAIModel(model="gpt-4o")
eval_results = llm_classify(
dataframe=tool_spans,
model=eval_model,
template=RAG_RELEVANCY_PROMPT_TEMPLATE,
rails=["relevant", "unrelated"],
concurrency=10,
provide_explanation=True,
)
eval_results["score"] = eval_results["explanation"].apply(lambda x: 1 if "relevant" in x else 0)
這裡發生了什麼?
- 我們使用 GPT-4o 分析搜尋查詢(輸入)和搜尋結果(輸出)。
- LLM 根據提示將結果分類為相關或不相關。
- 我們分配一個二進位制分數(1 = 相關,0 = 不相關)以進行進一步分析。
檢視您的結果
eval_results.head()
步驟 5:將評估結果傳送到 Phoenix
from phoenix.trace import SpanEvaluations
px.Client().log_evaluations(SpanEvaluations(eval_name="DuckDuckGoSearchTool Relevancy", dataframe=eval_results))
透過此設定,我們現在可以系統地評估 DuckDuckGo 搜尋工具在我們的智慧體中的有效性。使用 LLM 作為判斷者,我們可以確保我們的智慧體檢索到準確和相關的資訊,從而提高效能。
使用本教程可以輕鬆設定任何評估——只需將 RAG_RELEVANCY_PROMPT_TEMPLATE 替換為適合您需求的另一個提示模板即可。Phoenix 提供了各種預先編寫和預先測試的評估模板,涵蓋了忠實度、響應連貫性、事實準確性等領域。檢視 Phoenix 文件以探索完整列表,併為您的智慧體找到最佳選擇!
評估模板 | 適用的智慧體型別 |
---|---|
幻覺檢測 | RAG 智慧體 普通聊天機器人 知識型助手 |
檢索資料問答 | RAG 智慧體 研究助理 文件搜尋工具 |
RAG 相關性 | RAG 智慧體 基於搜尋的 AI 助手 |
摘要 | 摘要工具 文件摘要器 會議筆記生成器 |
程式碼生成 | 程式碼助手 AI 程式設計機器人 |
毒性檢測 | 內容稽核機器人 內容過濾 AI |
AI vs. 人類(真實情況) | 評估和基準測試工具 AI 生成內容驗證器 |
參考(引用)連結 | 研究助理 引用工具 學術寫作輔助工具 |
SQL 生成評估 | 資料庫查詢智慧體 SQL 自動化工具 |
智慧體函式呼叫評估 | 多步推理智慧體 API 呼叫 AI 任務自動化機器人 |
