一、前言
在许多应用程序中,特别是在大型语言模型(LLM)应用程序中,收集用户反馈以了解应用程序在实际场景中的表现是非常重要的。
本章是LangSmith系列最后一篇文章,通过学习Prompts功能,用户可以上传、浏览、检索和管理提示(Prompt)。这个Prompts功能简化了提示(Prompt)的管理,使开发过程更加流畅。
二、术语
2.1.Prompts
具体功能包括:
- 上传和分享Prompt:将自己创建的Prompt上传到平台上,与其他用户分享和交流;
- 浏览和检索Prompt:浏览其他用户上传的Prompt,通过筛选和搜索功能找到感兴趣的Prompt;
- 管理Prompt:对自己上传的Prompt进行管理,如编辑、删除等;
- 快速试验:在Prompt Playground中尝试不同的Prompt、模型和参数,快速验证和优化自己的应用。
2.2.LangChain
是一个全方位的、基于大语言模型这种预测能力的应用开发工具。LangChain的预构建链功能,就像乐高积木一样,无论你是新手还是经验丰富的开发者,都可以选择适合自己的部分快速构建项目。对于希望进行更深入工作的开发者,LangChain提供的模块化组件则允许你根据自己的需求定制和创建应用中的功能链条。
LangChain本质上就是对各种大模型提供的API的套壳,是为了方便我们使用这些 API,搭建起来的一些框架、模块和接口。
LangChain的主要特性:
1.可以连接多种数据源,比如网页链接、本地PDF文件、向量数据库等
2.允许语言模型与其环境交互
3.封装了Model I/O(输入/输出)、Retrieval(检索器)、Memory(记忆)、Agents(决策和调度)等核心组件
4.可以使用链的方式组装这些组件,以便最好地完成特定用例。
5.围绕以上设计原则,LangChain解决了现在开发人工智能应用的一些切实痛点。
2.3.LangSmith
是一个用于构建生产级 LLM 应用程序的平台,它提供了调试、测试、评估和监控基于任何 LLM 框架构建的链和智能代理的功能,并能与 LangChain 无缝集成。其主要作用包括:
- 调试与测试:通过记录langchain构建的大模型应用的中间过程,开发者可以更好地调整提示词等中间过程,优化模型响应。
- 评估应用效果:langsmith可以量化评估基于大模型的系统的效果,帮助开发者发现潜在问题并进行优化。
- 监控应用性能:实时监控应用程序的运行情况,及时发现异常和错误,确保其稳定性和可靠性。
- 数据管理与分析:对大语言模型此次的运行的输入与输出进行存储和分析,以便开发者更好地理解模型行为和优化应用。
- 团队协作:支持团队成员之间的协作,方便共享和讨论提示模板等。
- 可扩展性与维护性:设计时考虑了应用程序的可扩展性和长期维护,允许开发者构建可成长的系统。
2.4.LangChain和LangSmith的关系
LangSmith是LangChain的一个子产品,是一个大模型应用开发平台。它提供了从原型到生产的全流程工具和服务,帮助开发者构建、测试、评估和监控基于LangChain或其他 LLM 框架的应用程序。
LangSmith与LangChain 的关系可以概括为:LangChain是一个开源集成开发框架,而 LangSmith是基于LangChain 构建的一个用于大模型应用开发的平台。
三、前提条件
3.1.安装虚拟环境
conda create --name langsmith python=3.10
conda activate langsmith
pip install -U langsmith -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install openai -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install langchainhub -i https://pypi.tuna.tsinghua.edu.cn/simple
3.2.创建API key
操作入口:LangSmithhttps://smith.langchain.com/settings未登录的需要先进行登录:
登录成功:
点击Settings:
点击Create API Key:
记录API Key:
3.3.设置环境变量
windows:
linux:
export LANGCHAIN_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ps:
1.需要替换3.2创建的API Key
四、技术实现
4.1.创建私有Prompt
4.1.1.导航至创建Prompt位置
4.1.2.创建新的私有Prompt
私有类型的Prompt提示仅对自己的工作区可见
4.1.3.编写Prompt明细
选择prompt类型
填写prompt模版
提交
4.2.创建公共Prompt
4.2.1.导航至创建Prompt位置
4.2.2.创建新的公共Prompt
公共类型的Prompt对LangChain Hub中的任何人可见
首次创建公共Prompt时,需要设置 LangChain Hub handle。
4.2.3.编写Prompt明细
选择prompt类型
填写prompt模版
提交
4.2.在本地使用Prompt
点击指定prompt数据
查询代码示例
LangSmith集成示例一
# -*- coding = utf-8 -*-
import os
from langchain import hub
os.environ['LANGCHAIN_API_KEY'] = 'lsv2_pt_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
if __name__ == '__main__':
prompt = hub.pull("custom_prompt")
print(prompt)
调用结果:
LangSmith集成示例二
# -*- coding = utf-8 -*-
import os
from langsmith import traceable
from langsmith.run_helpers import get_current_run_tree
from langsmith import run_trees
from openai import Client
from langchain import hub
os.environ["OPENAI_API_KEY"] = 'sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
os.environ['LANGCHAIN_TRACING_V2'] = 'true'
os.environ['LANGCHAIN_API_KEY'] = 'lsv2_pt_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
key = 'test_key'
def feedback(run_id,key,value):
from langsmith import Client
client = Client()
client.create_feedback(
run_id,
key=key,
value=value,
score=1.0,
comment="comment",
)
if __name__ == '__main__':
@traceable
def format_prompt(system_prompt,prompt,value="format_prompt"):
run = get_current_run_tree()
run_id = run.id
feedback(run_id, key,value)
return [
{
"role": "system",
"content": system_prompt,
},
{
"role": "user",
"content": prompt
}
]
@traceable(run_type="llm")
def invoke_llm(messages,value="invoke_llm"):
run = get_current_run_tree()
run_id = run.id
feedback(run_id, key,value)
openai = Client()
return openai.chat.completions.create(
messages=messages, model="gpt-3.5-turbo", temperature=0
)
@traceable
def parse_output(response,value="parse_output"):
run = get_current_run_tree()
run_id = run.id
feedback(run_id, key,value)
return response.choices[0].message.content
@traceable
def run_pipeline(system_prompt,prompt,value='run_pipeline'):
run:run_trees.RunTree = get_current_run_tree()
run_id = run.id
feedback(run_id, key,value)
# 格式化prompt
messages = format_prompt(system_prompt,prompt)
# 调用GPT进行推理
response = invoke_llm(messages)
# 解析输出
result = parse_output(response)
return result
prompt_template = hub.pull("custom_prompt")
system_prompt_obj = prompt_template.messages[0]
system_prompt = system_prompt_obj.prompt.template
human_prompt_obj = prompt_template.messages[1]
human_prompt_template = human_prompt_obj.prompt.template
human_prompt = human_prompt_template.replace('{region}','北京')
print(system_prompt)
print(human_prompt)
result = run_pipeline(system_prompt, human_prompt)
print(result)
调用结果:
PS:切记要安装langchainhub库
4.3.查询自有工作空间的Prompt
4.3.1.查询公共的Prompt
4.3.2.查询私有的Prompt
4.3.2.根据条件查询Prompt
4.4.查询公共仓库的Prompt
跳转至LangChain Hub,根据右侧条件进行筛选
例如:选择Language:Chinese,Top Download
黏贴下面代码即可拉取仓库中的Prompt到本地
4.5.运行Prompt
点击进入明细 >> 点击Try It按钮
输入变量 >>点击Start按钮
PS:需要先填Open AI Key
五、附带说明
5.1.问题一:提示名称必须以字母开头,并且只能包含小写字母、数字、连字符或下划线
5.2.问题二:Error: OpenAI or Azure OpenAI API key or Token Provider not found
在Prompt Playground中试验需要填入各自的OPENAI_API_KEY
5.3.问题三:ImportError: Could not import langchainhub, please install with `pip install langchainhub`.
需要安装langchainhub库
标签:试炼,初体验,prompt,LangChain,Prompts,API,run,Prompt,id From: https://blog.csdn.net/qq839019311/article/details/139390235pip install langchainhub -i https://pypi.tuna.tsinghua.edu.cn/simple