LangChain 17 LangSmith调试、测试、评估和监视基于任何LLM框架构建的链和智能代理

本文主要是介绍LangChain 17 LangSmith调试、测试、评估和监视基于任何LLM框架构建的链和智能代理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

LangChain系列文章

  1. LangChain 实现给动物取名字,
  2. LangChain 2模块化prompt template并用streamlit生成网站 实现给动物取名字
  3. LangChain 3使用Agent访问Wikipedia和llm-math计算狗的平均年龄
  4. LangChain 4用向量数据库Faiss存储,读取YouTube的视频文本搜索Indexes for information retrieve
  5. LangChain 5易速鲜花内部问答系统
  6. LangChain 6根据图片生成推广文案HuggingFace中的image-caption模型
  7. LangChain 7 文本模型TextLangChain和聊天模型ChatLangChain
  8. LangChain 8 模型Model I/O:输入提示、调用模型、解析输出
  9. LangChain 9 模型Model I/O 聊天提示词ChatPromptTemplate, 少量样本提示词FewShotPrompt
  10. LangChain 10思维链Chain of Thought一步一步的思考 think step by step
  11. LangChain 11实现思维树Implementing the Tree of Thoughts in LangChain’s Chain
  12. LangChain 12调用模型HuggingFace中的Llama2和Google Flan t5
  13. LangChain 13输出解析Output Parsers 自动修复解析器
  14. LangChain 14 SequencialChain链接不同的组件
  15. LangChain 15根据问题自动路由Router Chain确定用户的意图
  16. LangChain 16 通过Memory记住历史对话的内容

在这里插入图片描述

1. LangSmith

LangSmith是一个用于构建生产级LLM应用程序的平台。

它让您可以调试、测试、评估和监视基于任何LLM框架构建的链和智能代理,并与LangChain无缝集成,LangChain是构建LLM的开源框架的首选。

LangChain使得原型化LLM应用程序和代理变得容易。然而,将LLM应用程序交付到生产环境可能会出乎意料地困难。您可能需要对提示prompt、chains链条和tools其他组件进行大量定制和迭代,以创建高质量的产品。

为了帮助这一过程,我们推出了LangSmith,这是一个统一的平台,用于调试、测试和监控您的LLM应用程序。

这在什么时候会派上用场呢?当您想要:

  1. 快速调试新的链条、代理或一套工具
  2. 可视化组件(链条、LLM、检索器等)的关系和使用方式
  3. 评估单个组件的不同提示和LLM
  4. 多次运行给定的链条,以确保它始终达到质量标准
  5. 捕获使用痕迹,并使用LLM或分析管道生成见解时

LangSmith是由LangChain开发的,LangChain是开源LangChain框架背后的公司。

如果您已经使用LangChain,您可以通过以下几个步骤连接到LangSmith:

  1. 使用支持的登录方法创建LangSmith账户。
  2. 通过转到设置页面创建API密钥。
  3. 为您的目标环境和编程语言安装最新版本的LangChain。
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_ENDPOINT=https://api.smith.langchain.com
export LANGCHAIN_API_KEY=<your-api-key>
export LANGCHAIN_PROJECT=<your-project>  # if not specified, defaults to "default"# The below examples use the OpenAI API, so you will need
export OPENAI_API_KEY=<your-openai-api-key>

2. Agent 搜索实现

创建一个LangChain组件并将运行记录到平台上。在这个例子中,我们将创建一个ReAct风格的代理,可以访问一个通用搜索工具(DuckDuckGo)。代理的提示可以在这里的Hub中查看。

安装libs

%pip install openai tiktoken pandas duckduckgo-search

Agents/chat_agents_search.py这段代码使用了 Langchain 库来构建一个复杂的问答系统,它结合了多个工具和大型语言模型(GPT-3.5),并使用 LangSmith Client 进行管理。以下是对每一行代码的注释解释:

# 导入 Langchain 库中的 OpenAI 模块,用于与 OpenAI 语言模型进行交互。
from langchain.llms import OpenAI  # 导入 Langchain 库中的 PromptTemplate 模块,用于创建和管理提示模板。
from langchain.prompts import PromptTemplate  # 导入 Langchain 库中的 LLMChain 模块,它允许构建基于大型语言模型的处理链。
from langchain.chains import LLMChain  # 导入 dotenv 库,用于从 .env 文件加载环境变量,这对于管理敏感数据如 API 密钥很有用。
from dotenv import load_dotenv  # 导入 Langchain 库中的 ChatOpenAI 类,用于创建和管理 OpenAI 聊天模型的实例。
from langchain.chat_models import ChatOpenAI# 调用 dotenv 库的 load_dotenv 函数来加载 .env 文件中的环境变量。
load_dotenv()  # 这部分被注释掉,原本用于创建一个 ChatOpenAI 实例并执行一个简单的查询。
# llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)
# response = llm.invoke("how many letters in the word educa?")
# print("educa count > ")
# print(response)# 设置一些环境变量,包括唯一的项目 ID 和 Langchain API 的相关设置。
import os
from uuid import uuid4
unique_id = uuid4().hex[0:8]
os.environ["LANGCHAIN_PROJECT"] = f"Tracing Walkthrough - {unique_id}"# 初始化 LangSmith 客户端。
from langsmith import Client
client = Client()# 导入 Langchain 的其他必要模块和工具。
from langchain import hub
from langchain.agents import AgentExecutor
from langchain.agents.format_scratchpad import format_to_openai_function_messages
from langchain.agents.output_parsers import OpenAIFunctionsAgentOutputParser
from langchain.tools import DuckDuckGoSearchResults
from langchain.tools.render import format_tool_to_openai_function# 从 Langchain Hub 拉取最新版本的提示。
prompt = hub.pull("wfh/langsmith-agent-prompt:latest")
print(prompt)# 创建 ChatOpenAI 实例。
llm = ChatOpenAI(model="gpt-3.5-turbo-16k", temperature=0)# 定义工具列表,这里使用了 DuckDuckGo 作为搜索工具。
tools = [DuckDuckGoSearchResults(name="duck_duck_go")]# 将 ChatOpenAI 实例绑定到工具上。
llm_with_tools = llm.bind(functions=[format_tool_to_openai_function(t) for t in tools])# 创建可运行的代理,它结合了提示、模型、工具和输出解析器。
runnable_agent = ({"input": lambda x: x["input"],"agent_scratchpad": lambda x: format_to_openai_function_messages(x["intermediate_steps"]),}| prompt| llm_with_tools| OpenAIFunctionsAgentOutputParser()
)# 创建代理执行器,用于执行代理并管理工具。
agent_executor = AgentExecutor(agent=runnable_agent, tools=tools, handle_parsing_errors=True
)# 定义一系列输入问题。
inputs = ["What is LangChain?","What's LangSmith?","When was Llama-v2 released?","What is the langsmith cookbook?","When did langchain first announce the hub?",
]# 批量执行输入问题,并返回结果。
results = agent_executor.batch([{"input": x} for x in inputs], return_exceptions=True)
print(results)

输出结果

$ python Agents/chat_agents_search.py       
input_variables=['agent_scratchpad', 'input'] input_types={'agent_scratchpad': typing.List[typing.Union[langchain.schema.messages.AIMessage, langchain.schema.messages.HumanMessage, langchain.schema.messages.ChatMessage, langchain.schema.messages.SystemMessage, langchain.schema.messages.FunctionMessage, langchain.schema.messages.ToolMessage]]} messages=[SystemMessagePromptTemplate(prompt=PromptTemplate(input_variables=[], template='You are a helpful assistant.')), HumanMessagePromptTemplate(prompt=PromptTemplate(input_variables=['input'], template='{input}')), MessagesPlaceholder(variable_name='agent_scratchpad')][{'input': 'What is LangChain?', 'output': 'I\'m sorry, but I couldn\'t find any information about "LangChain". Could you please provide more context or clarify your question?'}, {'input': 'What is the langsmith cookbook?', 'output': 'The Langsmith Cookbook is a collection of recipes and cooking techniques created by Langsmith, a fictional character. It is a comprehensive guide that covers a wide range of cuisines and dishes. The cookbook includes step-by-step instructions, ingredient lists, and tips for successful cooking. Whether you are a beginner or an experienced cook, the Langsmith Cookbook can help you enhance your culinary skills and create delicious meals.'}

在 LangSmith 中可以看到OpenAI 调用了搜索引擎 duck_duck_go
在这里插入图片描述
在这里插入图片描述

代码
https://github.com/zgpeace/pets-name-langchain/tree/develop

参考

  • https://python.langchain.com/docs/langsmith/walkthrough
  • https://docs.smith.langchain.com/

这篇关于LangChain 17 LangSmith调试、测试、评估和监视基于任何LLM框架构建的链和智能代理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/445611

相关文章

JavaScript中的高级调试方法全攻略指南

《JavaScript中的高级调试方法全攻略指南》什么是高级JavaScript调试技巧,它比console.log有何优势,如何使用断点调试定位问题,通过本文,我们将深入解答这些问题,带您从理论到实... 目录观点与案例结合观点1观点2观点3观点4观点5高级调试技巧详解实战案例断点调试:定位变量错误性能分

MySQL8 密码强度评估与配置详解

《MySQL8密码强度评估与配置详解》MySQL8默认启用密码强度插件,实施MEDIUM策略(长度8、含数字/字母/特殊字符),支持动态调整与配置文件设置,推荐使用STRONG策略并定期更新密码以提... 目录一、mysql 8 密码强度评估机制1.核心插件:validate_password2.密码策略级

Three.js构建一个 3D 商品展示空间完整实战项目

《Three.js构建一个3D商品展示空间完整实战项目》Three.js是一个强大的JavaScript库,专用于在Web浏览器中创建3D图形,:本文主要介绍Three.js构建一个3D商品展... 目录引言项目核心技术1. 项目架构与资源组织2. 多模型切换、交互热点绑定3. 移动端适配与帧率优化4. 可

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映

Python利用PySpark和Kafka实现流处理引擎构建指南

《Python利用PySpark和Kafka实现流处理引擎构建指南》本文将深入解剖基于Python的实时处理黄金组合:Kafka(分布式消息队列)与PySpark(分布式计算引擎)的化学反应,并构建一... 目录引言:数据洪流时代的生存法则第一章 Kafka:数据世界的中央神经系统消息引擎核心设计哲学高吞吐

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据

解决若依微服务框架启动报错的问题

《解决若依微服务框架启动报错的问题》Invalidboundstatement错误通常由MyBatis映射文件未正确加载或Nacos配置未读取导致,需检查XML的namespace与方法ID是否匹配,... 目录ruoyi-system模块报错报错详情nacos文件目录总结ruoyi-systnGLNYpe

Go语言网络故障诊断与调试技巧

《Go语言网络故障诊断与调试技巧》在分布式系统和微服务架构的浪潮中,网络编程成为系统性能和可靠性的核心支柱,从高并发的API服务到实时通信应用,网络的稳定性直接影响用户体验,本文面向熟悉Go基本语法和... 目录1. 引言2. Go 语言网络编程的优势与特色2.1 简洁高效的标准库2.2 强大的并发模型2.

基于Python Playwright进行前端性能测试的脚本实现

《基于PythonPlaywright进行前端性能测试的脚本实现》在当今Web应用开发中,性能优化是提升用户体验的关键因素之一,本文将介绍如何使用Playwright构建一个自动化性能测试工具,希望... 目录引言工具概述整体架构核心实现解析1. 浏览器初始化2. 性能数据收集3. 资源分析4. 关键性能指