赞
踩
1、各种指标监控与统计:访问记录、响应时长、Token用量、计费等等(系统各个模块的访问记录和响应时间,整体的费用)
2、调试 Prompt
3、测试/验证系统的相关评估指标
4、数据集管理(便于回归测试,看以往测试的结果)
5、Prompt 版本管理(便于升级/回滚)
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"]=""
简介
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
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、·Trace 一般表示用户与系统的一次交互,其中记录输入、输出,也包括自定义的 metadata 比如用户名、session id等;
2、一个 trace 内部可以包含多个子过程,这里叫 observarions;
3、Observation 可以是多个类型:
4、Observation 可以嵌套使用。
from langfuse.callback import CallbackHandler handler = CallbackHandler( trace_name="SayHello", user_id="wzr", ) --------------------------------------- from langchain.prompts import ( ChatPromptTemplate, HumanMessagePromptTemplate, ) from langchain_core.output_parsers import StrOutputParser from langchain_openai import ChatOpenAI from langchain_core.runnables import RunnablePassthrough model = ChatOpenAI(model="gpt-3.5-turbo-0613") prompt = ChatPromptTemplate.from_messages([ HumanMessagePromptTemplate.from_template("Say hello to {input}!") ]) # 定义输出解析器 parser = StrOutputParser() chain = ( { "input":RunnablePassthrough()} | prompt | model | parser ) chain.invoke(input="AGIClass", config={ "callbacks":[handler]})
'Hello AGIClass! How can I assist you today?'
#1、构建 PromptTemplate from langchain.prompts import PromptTemplate need_answer=PromptTemplate.from_template(""" ********* 你是AIGC课程的助教,你的工作是从学员的课堂交流中选择出需要老师回答的问题,加以整理以交给老师回答。 课程内容: {outlines} ********* 学员输入: {user_input} ********* 如果这是一个需要老师答疑的问题,回复Y,否则回复N。 只回复Y或N,不要回复其他内容。""") check_duplicated=PromptTemplate.from_template(""" ********* 已有提问列表: [ {question_list} ] ********* 新提问: {user_input} ********* 已有提问列表是否有和新提问类似的问题? 回复Y或N, Y表示有,N表示没有。 只回复Y或N,不要回复其他内容。""") outlines=""" LangChain 模型 I/O 封装 模型的封装 模型的输入输出 PromptTemplate OutputParser 数据连接封装 文档加载器:Document Loaders 文档处理器 内置RAG:RetrievalQA 记忆封装:Memory 链架构:Chain/LCEL 大模型时代的软件架构:Agent ReAct SelfAskWithSearch LangServe LangChain.js """ question_list=[ "LangChain可以商用吗", "LangChain开源吗", ] #2、创建 chain model = ChatOpenAI(temperature=0,model_kwargs={ "seed":42}) parser = StrOutputParser() chain1 = ( need_answer | model | parser
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。