LangSmith 是一个强大的工具,可以帮助开发者追踪、监控和分析语言模型应用程序的性能。下面我将介绍两种基本的追踪方式:追踪 OpenAI 调用和追踪整个应用程序。
1. 追踪 OpenAI 调用 (Trace OpenAI calls)
这种方法主要用于追踪对 OpenAI API 的调用,可以帮助您了解每个 API 调用的详细信息、性能和结果。
from openai import OpenAI
from langsmith.wrappers import wrap_openai
import os
openai_client = wrap_openai(OpenAI(api_key = "",base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
)
os.environ["LANGSMITH_TRACING"] = "true"
os.environ["LANGCHAIN_API_KEY"] = ""def retriever(query: str):results = ["Harrison worked at Kensho"]return resultsdef rag(question):docs = retriever(question)system_message = """Answer the users question using only the provided information below:{docs}""".format(docs="\n".join(docs))res= openai_client.chat.completions.create(messages=[{"role": "system", "content": system_message},{"role": "user", "content": question},],model="qwen-turbo",)print(res.choices[0].message.content)return resif __name__ == "__main__":rag("where did harrison work")
在这个例子中,wrap_openai
函数会自动追踪所有通过包装后的客户端进行的 API 调用。这些调用会被记录到 LangSmith 平台,您可以在那里查看详细信息。
2. 追踪整个应用程序 (Trace entire application)
这种方法可以追踪整个应用程序的流程,包括中间步骤和函数调用,提供更全面的视图。
from openai import OpenAI
from langsmith import traceable
from langsmith.wrappers import wrap_openai
import os# 设置环境变量
os.environ["LANGSMITH_TRACING"] = "true" # 启用全局追踪
os.environ["LANGCHAIN_API_KEY"] = ""# 包装 OpenAI 客户端
openai_client = wrap_openai(OpenAI(api_key="",base_url="https://dashscope.aliyuncs.com/compatible-mode/v1")
)# 定义可追踪的检索函数
@traceable
def retriever(query: str):results = ["Harrison worked at Kensho"]return results# 定义可追踪的 RAG 函数
@traceable
def rag(question):# 追踪检索步骤docs = retriever(question)# 构建系统消息system_message = """Answer the users question using only the provided information below:{docs}""".format(docs="\n".join(docs))# 追踪 LLM 调用步骤return openai_client.chat.completions.create(messages=[{"role": "system", "content": system_message},{"role": "user", "content": question},],model="qwen-turbo",)if __name__ == "__main__":# 整个应用程序流程将被追踪response = rag("where did harrison work")print(response.choices[0].message.content)
在这个例子中,我们使用了:
LANGSMITH_TRACING=true
环境变量来启用全局追踪@traceable
装饰器来追踪特定函数- 包装的 OpenAI 客户端来追踪 API 调用
这样,整个应用程序的流程都会被记录下来,包括:
- 检索函数的输入和输出
- RAG 函数的整个流程
- OpenAI API 调用的详细信息
查看追踪结果
完成追踪后,您可以在 LangSmith 平台 (https://smith.langchain.com/) 上查看详细的追踪信息,包括:
- 函数调用链
- 每个步骤的输入和输出
- 执行时间和性能指标
- API 调用的详细信息
总结
- 追踪 OpenAI 调用:使用
wrap_openai
包装 OpenAI 客户端,适合只关注 API 调用的场景。 - 追踪整个应用程序:使用
LANGSMITH_TRACING=true
和@traceable
装饰器,适合需要全面了解应用程序流程的场景。