文章目录
-
- 一、维护生产级别的LLM应用,需要做的事
- 二、符合需求的LLM App维护平台
- 三、LangFuse
-
- 1)替换OpenAI客户端(把跟OpenAI交互记录到LangFuse)
- 1.1)几个基本概念
- 2)通过LangChain的回调函数触发记录(上面用的原生OpenAI接口,下面是调用LangChain的接口)
- 3)构建一个实际应用
- 3.1)用trace记录一个多次调用LLM的过程
- 3.2)用session记录一个用户的多轮对话
- 4)数据集与测试
- 4.1)在线标注
- 4.2)上传已有数据集
- 4.3)定义评估函数
- 4.4)运行测试
- 4.5)promp调优与回归测试
- 5)prompt版本管理
- 6)如何比较两个句子的相似性(一些经典 NLP 的评测方法)
- 7)基于LLM的测试方法
- 四、LangSmith
-
- 1)准备工作(安装注册)
- 2)基本功能演示
- 3)数据集管理与测试
- 五、Prompt Flow
-
- 1)安装及运行
- 2)Vscode插件
- 3)与Semantic Kernel结合使用
- 六、总结
一、维护生产级别的LLM应用,需要做的事
1、各种指标监控与统计:访问记录、响应时长、Token用量、计费等等(系统各个模块的访问记录和响应时间,整体的费用)
2、调试 Prompt
3、测试/验证系统的相关评估指标
4、数据集管理(便于回归测试,看以往测试的结果)
5、Prompt 版本管理(便于升级/回滚)
二、符合需求的LLM App维护平台
1、LangFuse(重点)
): 开源 + SaaS(免费/升级版付费),LangSmith 平替,可集成 LangChain 也可直接对接 OpenAI API;
2、 LangSmith
: LangChain 的官方平台,SaaS 服务(付费),非开源;
3、 Prompt Flow
:微软开发,开源 + Azure AI云服务,可集成 Semantic Kernel(但貌合神离)。
import os
os.environ["LANGCHAIN_TRACING_V2"]=""
os.environ["LANGCHAIN_API_KEY"]=""
三、LangFuse
1)替换OpenAI客户端(把跟OpenAI交互记录到LangFuse)
-
简介
1、开源,支持 LangChain 集成或原生 OpenAI API 集成
2、官方网站:https://langfuse.com/
3、项目地址:https://github.com/langfuse -
注册(通过官方云服务使用:)
注册: cloud.langfuse.com
创建 API Key
LANGFUSE_SECRET_KEY="sk-lf-..."
LANGFUSE_PUBLIC_KEY="pk-lf-..."
- 部署(源码部署)
#1、Clone repository
git clone https://github.com/langfuse/langfuse.git
cd langfuse
# 2、Run server and db
docker compose up -d
# 3、在自己部署的系统中生成上述两个 KEY
# 并在环境变量中指定服务地址
LANGFUSE_SECRET_KEY="sk-lf-..."
LANGFUSE_PUBLIC_KEY="pk-lf-.."
LANGFUSE_HOST="http://localhost:3000"
- 安装相关库
!pip install --upgrade langfuse
- 开始替换OpenAI客户端
from datetime import datetime
from langfuse.openai import openai
from langfuse import Langfuse
import os
trace = Langfuse().trace(
name = "hello-world",
user_id = "wzr",
release = "v0.0.1"
)
completion = openai.chat.completions.create(
name="hello-world",
model="gpt-3.5-turbo",
messages=[
{
"role": "user", "content": "对我说'Hello, World!'"}
],
temperature=0,
trace_id=trace.id,
)
print(completion.choices[0].message.content)
- 回复
Hello, World!
-
该回答的记录
-
提问记录
1.1)几个基本概念
1、·Trace 一般表示用户与系统的一次交互,其中记录输入、输出,也包括自定义的 metadata 比如用户名、session id等;
2、一个 trace 内部可以包含多个子过程,这里叫 observarions;
3、Observation 可以是多个类型:
- Event 是最基本的单元,用于记录一个 trace 中的每个事件;
- Span 表一个 trace 中的一个"耗时"的过程;
- Generation 是用于记录与 AI 模型交互的 span,例如:调用 embedding 模型、调用 LLM。
4、Observation 可以嵌套使用。
- 举例
2)通过LangChain的回调函数触发记录(上面用的原生OpenAI接口,下面是调用LangChain的接口)
from langfuse.callback import CallbackHandler
handler = CallbackHandler(
trace_name="SayHello",
user_id="wzr",
)
------------------------</