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"] = ""  # Update to your API key

# Used by the agent in this tutorial
os.environ["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

你可能感兴趣的:(LLM-Large,Language,Models,langchain,chatgpt,python,conda,人工智能,langsmith)