LangChain 76 LangSmith 从入门到精通一

LangChain系列文章

  1. LangChain 60 深入理解LangChain 表达式语言23 multiple chains链透传参数 LangChain Expression Language (LCEL)
  2. LangChain 61 深入理解LangChain 表达式语言24 multiple chains链透传参数 LangChain Expression Language (LCEL)
  3. LangChain 62 深入理解LangChain 表达式语言25 agents代理 LangChain Expression Language (LCEL)
  4. LangChain 63 深入理解LangChain 表达式语言26 生成代码code并执行 LangChain Expression Language (LCEL)
  5. LangChain 64 深入理解LangChain 表达式语言27 添加审查 Moderation LangChain Expression Language (LCEL)
  6. LangChain 65 深入理解LangChain 表达式语言28 余弦相似度Router Moderation LangChain Expression Language (LCEL)
  7. LangChain 66 深入理解LangChain 表达式语言29 管理prompt提示窗口大小 LangChain Expression Language (LCEL)
  8. LangChain 67 深入理解LangChain 表达式语言30 调用tools搜索引擎 LangChain Expression Language (LCEL)
  9. LangChain 68 LLM Deployment大语言模型部署方案
  10. LangChain 69 向量数据库Pinecone入门
  11. LangChain 70 Evaluation 评估、衡量在多样化数据上的性能和完整性
  12. LangChain 71 字符串评估器String Evaluation衡量在多样化数据上的性能和完整性
  13. LangChain 72 reference改变结果 字符串评估器String Evaluation
  14. LangChain 73 给结果和参考评分 Scoring Evaluator
  15. LangChain 74 有用的或者有害的helpful or harmful Scoring Evaluator
  16. LangChain 75 打造你自己的OpenAI + LangChain网页应用

在这里插入图片描述

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

LangSmith使得调试、测试和持续改进LLM应用程序变得容易。

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

  • 快速调试新的chain、agent代理或一组工具tools
  • 创建和管理数据集,用于微调fine-tuning、少样本提示few-shot prompting和评估evaluation
  • 对应用程序运行回归测试,以自信地开发
  • 捕获生产分析数据,以获取产品见解和持续改进时

1. 先决条件

创建一个LangSmith账户并生成一个API密钥(见左下角)。通过查看文档来熟悉平台。

请注意,LangSmith目前处于封闭测试阶段;我们正在逐步向更多用户推出。但是,您可以在网站上填写表格以获得加快访问速度。

现在,让我们开始吧!

2. 日志运行到LangSmith

首先,配置您的环境变量,告诉LangChain记录跟踪。这可以通过将LANGCHAIN_TRACING_V2环境变量设置为true来完成。您可以通过设置LANGCHAIN_PROJECT环境变量(如果未设置,运行将被记录到默认项目)来告诉LangChain要记录到哪个项目。如果该项目不存在,这将自动为您创建该项目。您还必须设置LANGCHAIN_ENDPOINTLANGCHAIN_API_KEY环境变量。

有关设置跟踪的其他方法的更多信息,请参考LangSmith文档

注意:您还可以在Python中使用上下文管理器来记录跟踪。

from langchain_core.tracers.context import tracing_v2_enabled

with tracing_v2_enabled(project_name="My Project"):
    agent.run("How many people live in canada as of 2023?")

然而,在这个例子中,我们将使用环境变量。

%pip install --upgrade --quiet  langchain langsmith langchainhub --quiet
%pip install --upgrade --quiet  langchain-openai tiktoken pandas duckduckgo-search --quiet
import os
from uuid import uuid4

unique_id = uuid4().hex[0:8]
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_PROJECT"] = f"Tracing Walkthrough - {unique_id}"
os.environ["LANGCHAIN_ENDPOINT"] = "https://api.smith.langchain.com"
os.environ["LANGCHAIN_API_KEY"] = "<YOUR-API-KEY>"  # Update to your API key

# Used by the agent in this tutorial
os.environ["OPENAI_API_KEY"] = "<YOUR-OPENAI-API-KEY>"

创建langsmith客户端以与API交互

from langsmith import Client

client = Client()

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

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_community.tools import DuckDuckGoSearchResults
from langchain_openai import ChatOpenAI

# Fetches the latest version of this prompt
prompt = hub.pull("wfh/langsmith-agent-prompt:5d466cbc")

llm = ChatOpenAI(
    model="gpt-3.5-turbo-16k",
    temperature=0,
)

tools = [
    DuckDuckGoSearchResults(
        name="duck_duck_go"
    ),  # General internet search using DuckDuckGo
]

llm_with_tools = llm.bind_functions(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
)

我们正在同时在多个输入上运行代理,以减少延迟。运行日志会在后台记录到LangSmith,因此执行延迟不受影响。

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[:2])
[{'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's LangSmith?",
  'output': 'I\'m sorry, but I couldn\'t find any information about "LangSmith". It could be a company, a product, or a person. Can you provide more context or details about what you are referring to?'}]

假设你已经成功设置好了你的环境,你的代理追踪应该会显示在应用程序的“项目”部分。恭喜!
在这里插入图片描述
看起来代理并没有有效地使用这些工具。让我们评估一下,这样我们就有一个基准。

代码

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

参考

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

### LangChain4j入门教程 #### 3.1 初识LangChain4j LangChain4j是个强大的AI框架,旨在通过智能化的方式提升开发者的工作效率并简化复杂任务处理过程。对于初次接触该工具的技术人员来说,理解其核心概念和应用场景至关重要[^1]。 #### 3.2 安装配置环境 为了开始使用LangChain4j,在本地环境中安装必要的依赖项是第步。这通常涉及到设置Java运行时环境以及下载官方提供的SDK包。确保遵循官方文档中的指导完成这些准备工作可以避免后续可能出现的基础性错误。 ```bash # 示例命令用于安装JDK (仅作为示例, 实际操作需参照具体版本说明) sudo apt-get install default-jdk ``` #### 3.3 编写第个程序 当环境搭建完成后,可以通过创建简单的应用程序来熟悉API接口调用方式。比如尝试实现个自动化的代码片段生成功能,利用内置模板快速生成符合特定模式的源码文件。这种练习有助于加深对框架特性的认识。 ```java // Java代码示例:简单应用展示如何初始化LangChain4j客户端 import com.langchain.client.LangChainClient; public class FirstApp { public static void main(String[] args) { // 创建个新的LangChain客户端实例 LangChainClient client = new LangChainClient(); System.out.println("欢迎来到LangChain4j的世界!"); } } ``` #### 3.4 遇到挑战与解决方法 ##### 数据集准备不足 在实际项目中,如果数据量不够充分或者质量不高,则可能导致训练效果不佳等问题。此时建议收集更多高质量的数据样本,并考虑采用预处理手段提高数据可用性。 ##### 提示工程技术难题 有效运用提示工程(Prompt Engineering),即合理设计输入给定条件下的自然语言指令,对于发挥大型模型的最佳性能非常重要。面对这难点,学习最佳实践案例、参与社区交流都是不错的解决方案[^3]。 ##### 整合现有业务逻辑 将先进的AI能力融入传统信息系统并非易事,尤其是在保持原有架构稳定性和安全性的同时引入新特性。针对这种情况,逐步迭代升级策略往往更为稳妥;另外也可以寻求专业的咨询服务支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值