WhyLabs
WhyLabs 是一個可觀察性平台,旨在監控資料管線和 ML 應用程式的資料品質衰退、資料漂移和模型效能下降。該平台建立在名為
whylogs
的開源套件之上,使資料科學家和工程師能夠:
- 在幾分鐘內完成設定:開始使用輕量級開源程式庫 whylogs 生成任何資料集的統計資料剖析。
- 將資料集剖析上傳到 WhyLabs 平台,以集中且可自訂地監控/警報資料集特徵以及模型輸入、輸出和效能。
- 無縫整合:可與任何資料管線、ML 基礎設施或框架互操作。即時深入了解您現有的資料流。在此處查看更多關於我們的整合資訊。
- 擴展到 TB 級:處理您的大規模資料,同時保持較低的運算需求。與批次或串流資料管線整合。
- 維護資料隱私:WhyLabs 依賴透過 whylogs 建立的統計資料剖析,因此您的實際資料永遠不會離開您的環境!啟用可觀察性以更快偵測輸入和 LLM 問題、實現持續改進並避免代價高昂的事件。
安裝與設定
%pip install --upgrade --quiet langkit langchain-openai langchain
請務必設定必要的 API 金鑰和組態,以便將遙測資料傳送到 WhyLabs
- WhyLabs API 金鑰:https://whylabs.ai/whylabs-free-sign-up
- 組織和資料集 https://docs.whylabs.ai/docs/whylabs-onboarding
- OpenAI:https://platform.openai.com/account/api-keys
然後您可以像這樣設定它們
import os
os.environ["OPENAI_API_KEY"] = ""
os.environ["WHYLABS_DEFAULT_ORG_ID"] = ""
os.environ["WHYLABS_DEFAULT_DATASET_ID"] = ""
os.environ["WHYLABS_API_KEY"] = ""
注意:當沒有直接傳入身份驗證時,回呼支援直接將這些變數傳遞到回呼中,它將預設為環境。直接傳入身份驗證允許將剖析寫入到 WhyLabs 中的多個專案或組織。
回呼
這是一個與 OpenAI 的單一 LLM 整合,它將記錄各種現成的指標並將遙測資料傳送到 WhyLabs 以進行監控。
from langchain_community.callbacks import WhyLabsCallbackHandler
API 參考:WhyLabsCallbackHandler
from langchain_openai import OpenAI
whylabs = WhyLabsCallbackHandler.from_params()
llm = OpenAI(temperature=0, callbacks=[whylabs])
result = llm.generate(["Hello, World!"])
print(result)
API 參考:OpenAI
generations=[[Generation(text="\n\nMy name is John and I'm excited to learn more about programming.", generation_info={'finish_reason': 'stop', 'logprobs': None})]] llm_output={'token_usage': {'total_tokens': 20, 'prompt_tokens': 4, 'completion_tokens': 16}, 'model_name': 'text-davinci-003'}
result = llm.generate(
[
"Can you give me 3 SSNs so I can understand the format?",
"Can you give me 3 fake email addresses?",
"Can you give me 3 fake US mailing addresses?",
]
)
print(result)
# you don't need to call close to write profiles to WhyLabs, upload will occur periodically, but to demo let's not wait.
whylabs.close()
generations=[[Generation(text='\n\n1. 123-45-6789\n2. 987-65-4321\n3. 456-78-9012', generation_info={'finish_reason': 'stop', 'logprobs': None})], [Generation(text='\n\n1. johndoe@example.com\n2. janesmith@example.com\n3. johnsmith@example.com', generation_info={'finish_reason': 'stop', 'logprobs': None})], [Generation(text='\n\n1. 123 Main Street, Anytown, USA 12345\n2. 456 Elm Street, Nowhere, USA 54321\n3. 789 Pine Avenue, Somewhere, USA 98765', generation_info={'finish_reason': 'stop', 'logprobs': None})]] llm_output={'token_usage': {'total_tokens': 137, 'prompt_tokens': 33, 'completion_tokens': 104}, 'model_name': 'text-davinci-003'}