Skip to main content

Weights & Biases

这个笔记本介绍了如何将您的LangChain实验跟踪到一个集中的Weights and Biases仪表板中。要了解有关提示工程和回调的更多信息,请参阅此报告,该报告解释了两者以及您可以期望看到的结果仪表板。

查看报告

注意: WandbCallbackHandler正在被弃用,推荐使用WandbTracer。将来请使用WandbTracer,因为它更灵活,允许更精细的日志记录。要了解有关WandbTracer的更多信息,请参阅agent_with_wandb_tracing.html笔记本或使用以下colab笔记本。要了解有关Weights & Biases Prompts的更多信息,请参阅以下prompts文档

pip install wandb
pip install pandas
pip install textstat
pip install spacy
python -m spacy download en_core_web_sm
import os

os.environ["WANDB_API_KEY"] = ""
# os.environ["OPENAI_API_KEY"] = ""
# os.environ["SERPAPI_API_KEY"] = ""
from datetime import datetime
from langchain.callbacks import WandbCallbackHandler, StdOutCallbackHandler
from langchain.llms import OpenAI
用于记录到Weights and Biases的回调处理程序。

参数:
job_type (str): 作业类型。
project (str): 要记录到的项目。
entity (str): 要记录到的实体。
tags (list): 要记录的标签。
group (str): 要记录到的组。
name (str): 运行的名称。
notes (str): 要记录的注释。
visualize (bool): 是否可视化运行。
complexity_metrics (bool): 是否记录复杂度指标。
stream_logs (bool): 是否将回调操作流式传输到W&B
WandbCallbackHandler(...)的默认值

visualize: bool = False,
complexity_metrics: bool = False,
stream_logs: bool = False,

注意:对于beta工作流程,我们已经基于textstat进行了默认分析,并基于spacy进行了可视化

"""主要函数。

此函数用于尝试回调处理程序。
场景:
1. OpenAI LLM
2. 在多个生成上具有多个子链的链
3. 带有工具的代理
"""
session_group = datetime.now().strftime("%m.%d.%Y_%H.%M.%S")
wandb_callback = WandbCallbackHandler(
job_type="inference",
project="langchain_callback_demo",
group=f"minimal_{session_group}",
name="llm",
tags=["test"],
)
callbacks = [StdOutCallbackHandler(), wandb_callback]
llm = OpenAI(temperature=0, callbacks=callbacks)
wandb: 当前已登录为: harrison-chase。使用 `wandb login --relogin` 强制重新登录
正在跟踪wandb版本0.14.0的运行
运行数据本地保存在 <code>/Users/harrisonchase/workplace/langchain/docs/ecosystem/wandb/run-20230318_150408-e47j1914</code>
将运行 <strong><a href='https://wandb.ai/harrison-chase/langchain_callback_demo/runs/e47j1914' target="_blank">llm</a></strong> 同步到 <a href='https://wandb.ai/harrison-chase/langchain_callback_demo' target="_blank">Weights & Biases</a> (<a href='https://wandb.me/run' target="_blank">docs</a>)<br/>
<a href='https://wandb.ai/harrison-chase/langchain_callback_demo' target="_blank">https://wandb.ai/harrison-chase/langchain_callback_demo</a> 查看项目
<a href='https://wandb.ai/harrison-chase/langchain_callback_demo/runs/e47j1914' target="_blank">https://wandb.ai/harrison-chase/langchain_callback_demo/runs/e47j1914</a> 查看运行
# WandbCallbackHandler.flush_tracker(...)的默认值

reset: bool = True,
finish: bool = False,

flush_tracker函数用于将LangChain会话记录到Weights & Biases。它接受LangChain模块或代理,并将至少记录提示和生成以及LangChain模块的序列化形式到指定的Weights & Biases项目。默认情况下,我们重置会话而不是直接结束会话。

# SCENARIO 1 - LLM
llm_result = llm.generate(["Tell me a joke", "Tell me a poem"] * 3)
wandb_callback.flush_tracker(llm, name="simple_sequential")
等待W&B进程完成... <strong style="color:green">(成功)。</strong>
<a href='https://wandb.ai/harrison-chase/langchain_callback_demo/runs/e47j1914' target="_blank">https://wandb.ai/harrison-chase/langchain_callback_demo/runs/e47j1914</a> 查看运行<br/>同步了5个W&B文件,2个媒体文件,5个artifact文件和0个其他文件
<code>./wandb/run-20230318_150408-e47j1914/logs</code> 找到日志
VBox(children=(Label(value='Waiting for wandb.init()...\r'), FloatProgress(value=0.016745895149999985, max=1.0…
正在跟踪wandb版本0.14.0的运行
运行数据本地保存在 <code>/Users/harrisonchase/workplace/langchain/docs/ecosystem/wandb/run-20230318_150534-jyxma7hu</code>
将运行 <strong><a href='https://wandb.ai/harrison-chase/langchain_callback_demo/runs/jyxma7hu' target="_blank">simple_sequential</a></strong> 同步到 <a href='https://wandb.ai/harrison-chase/langchain_callback_demo' target="_blank">Weights & Biases</a> (<a href='https://wandb.me/run' target="_blank">docs</a>)<br/>
<a href='https://wandb.ai/harrison-chase/langchain_callback_demo' target="_blank">https://wandb.ai/harrison-chase/langchain_callback_demo</a> 查看项目
<a href='https://wandb.ai/harrison-chase/langchain_callback_demo/runs/jyxma7hu' target="_blank">https://wandb.ai/harrison-chase/langchain_callback_demo/runs/jyxma7hu</a> 查看运行
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
# SCENARIO 2 - Chain
template = """You are a playwright. Given the title of play, it is your job to write a synopsis for that title.
Title: {title}
Playwright: This is a synopsis for the above play:"""
prompt_template = PromptTemplate(input_variables=["title"], template=template)
synopsis_chain = LLMChain(llm=llm, prompt=prompt_template, callbacks=callbacks)

test_prompts = [
{
"title": "documentary about good video games that push the boundary of game design"
},
{"title": "cocaine bear vs heroin wolf"},
{"title": "the best in class mlops tooling"},
]
synopsis_chain.apply(test_prompts)
wandb_callback.flush_tracker(synopsis_chain, name="agent")
等待W&B进程完成... <strong style="color:green">(成功)。</strong>
<a href='https://wandb.ai/harrison-chase/langchain_callback_demo/runs/jyxma7hu' target="_blank">https://wandb.ai/harrison-chase/langchain_callback_demo/runs/jyxma7hu</a> 查看运行<br/>同步了4个W&B文件,2个媒体文件,6个artifact文件和0个其他文件
<code>./wandb/run-20230318_150534-jyxma7hu/logs</code> 找到日志
VBox(children=(Label(value='Waiting for wandb.init()...\r'), FloatProgress(value=0.016736786816666675, max=1.0…
正在跟踪wandb版本0.14.0的运行
运行数据本地保存在 <code>/Users/harrisonchase/workplace/langchain/docs/ecosystem/wandb/run-20230318_150550-wzy59zjq</code>
将运行 <strong><a href='https://wandb.ai/harrison-chase/langchain_callback_demo/runs/wzy59zjq' target="_blank">agent</a></strong> 同步到 <a href='https://wandb.ai/harrison-chase/langchain_callback_demo' target="_blank">Weights & Biases</a> (<a href='https://wandb.me/run' target="_blank">docs</a>)<br/>
<a href='https://wandb.ai/harrison-chase/langchain_callback_demo' target="_blank">https://wandb.ai/harrison-chase/langchain_callback_demo</a> 查看项目
<a href='https://wandb.ai/harrison-chase/langchain_callback_demo/runs/wzy59zjq' target="_blank">https://wandb.ai/harrison-chase/langchain_callback_demo/runs/wzy59zjq</a> 查看运行
from langchain.agents import initialize_agent, load_tools
from langchain.agents import AgentType
# SCENARIO 3 - Agent with Tools
tools = load_tools(["serpapi", "llm-math"], llm=llm)
agent = initialize_agent(
tools,
llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
)
agent.run(
"Who is Leo DiCaprio's girlfriend? What is her current age raised to the 0.43 power?",
callbacks=callbacks,
)
wandb_callback.flush_tracker(agent, reset=False, finish=True)
> 进入新的AgentExecutor链...
我需要找出谁是Leonardo DiCaprio的女朋友,然后计算她的年龄的0.43次方。
行动:搜索
行动输入:"Leonardo DiCaprio girlfriend"
观察结果:DiCaprio有一个稳定的女朋友Camila Morrone。他们已经在一起将近五年了,因为他们在2017年底首次被认为在约会。现年26岁的Morrone对好莱坞并不陌生。
思考:我需要计算她的年龄的0.43次方。
行动:计算器
行动输入:26^0.43
观察结果:答案:4.059182145592686

思考:我现在知道最终答案了。
最终答案:Leonardo DiCaprio的女朋友是Camila Morrone,她的当前年龄的0.43次方是4.059182145592686。

> 完成链。
等待W&B进程完成... <strong style="color:green">(成功)。</strong>
<a href='https://wandb.ai/harrison-chase/langchain_callback_demo/runs/wzy59zjq' target="_blank">https://wandb.ai/harrison-chase/langchain_callback_demo/runs/wzy59zjq</a> 查看运行<br/>同步了5个W&B文件,2个媒体文件,7个artifact文件和0个其他文件
<code>./wandb/run-20230318_150550-wzy59zjq/logs</code> 找到日志