LangSmith-智能应用可见性

部署运行你感兴趣的模型镜像

     1.概述

        LangSmith提供了用于开发、调试和部署大模型应用的工具,使用LangSmith,开发人员可以对智能应用运行进行跟踪,从而实现应用的可观察性;对输出结果进行评估,从而对智能应用质量进行评价;实施提示词工程,创建、管理和优化提示词。LangSmith提供的免费版和收费版,个人开发和测试使用免费版即可。本文基于一个简单的RAG应用,说明如何使用LangSmith跟踪智能应用的运行过程。

      2.创建简单RAG

        如下代码创建一个基础RAG,不需赘述:

from langchain_community.document_loaders import PyPDFLoader
from langchain_huggingface import HuggingFaceEmbeddings
from langchain_chroma import Chroma
from langchain_text_splitters  import RecursiveCharacterTextSplitter

from openai import OpenAI
#PDF加载器加载文档
loader = PyPDFLoader ("../data/beijing_annual_report_2024.pdf")
docs = loader.load()

#使用RecursiveCharacterTextSplitter进行文档切分

character_splitter = RecursiveCharacterTextSplitter(
    #separators=["\n\n", "\n", ". ", " ", ""],英文文档的分割符示例
    separators=["\n\n", "\n", "。", ",", "、", ";", ""],
    chunk_size=1000,
    chunk_overlap=0)

splits = character_splitter.split_documents(docs)

#把分块保存到向量库,向量库使用chromadb

embedding = HuggingFaceEmbeddings(
    model_name='../models/text2vec-base-chinese'  # 高效的语义模型
)
persist_directory = "../data/chroma"
vectordb = Chroma.from_documents(
    documents=splits,
    embedding=embedding,
    persist_directory=persist_directory  # 允许我们将persist_directory目录保存到磁盘上
)

#定义检索函数

def retrieve(query: str):
    """Retrieve information to help answer a query."""
    retrieved_docs = vectordb.similarity_search(query, k=2)
    serialized = "\n\n".join(
        (f"Source: {doc.metadata}\nContent: {doc.page_content}")
        for doc in retrieved_docs
    )
    return serialized, retrieved_docs

#创建大模型,使用千问
client = OpenAI(
    api_key="sk-*",
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)

#定义RAG方法

def rag(question: str) -> str:
    serialized, raw_docs = retrieve(question)
    system_message = (
        f"Answer the user's question using only the provided information below:{serialized}\n"
    )

    resp = client.chat.completions.create(
        model="qwen-max",
        messages=[
            {"role": "system", "content": system_message},
            {"role": "user", "content": question},
        ],
    )
    return resp.choices[0].message.content

     3.增加可见性

        设置LangSmith相关的环境变量,需要事先在LangSmith注册才能获取KEY和工作空间ID:

import os
os.environ['LANGSMITH_TRACING'] = 'true'
os.environ['LANGSMITH_API_KEY'] = 'lsv2_sk_*'
os.environ['LANGSMITH_WORKSPACE_ID'] = '*'

        对大模型进行封装,修改相关代码:

from langsmith.wrappers import wrap_openai  # traces openai calls
model = OpenAI(
    api_key="sk-*",
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
client = wrap_openai(model)

        运行应用:

rag("北京市政府工作报告中关于改善民生有哪些举措?")

        登录LangSmith平台,可以看到调用大模型时的输入、输出:

        以上示例中仅跟踪大模型调用,还可以对整个应用进行跟踪,此时需要用@traceable对rag方法增加注解:

from langsmith import traceable

@traceable

def rag(question: str) -> str:

    ……

       再次运行后,查看跟踪页面,效果如下:

     4.langchain agent

        前面的应用使用的标准OpenAI接口创建大模型,LangSmith当然对于langchain(包括链、图和智能体)更是原生支持。对于你既有的应用,仅需要增加三个必须得环境变量即可,原有代码不需做任何修改就可以使用LangSmith进行跟踪。

        以下是示例代码是用的langchain  agent:

#增加三个环境变量

import os
os.environ['LANGSMITH_TRACING'] = 'true'
os.environ['LANGSMITH_API_KEY'] = 'lsv2_sk_*'
os.environ['LANGSMITH_WORKSPACE_ID'] = '*'

      agent代码如下:

#创建大模型

from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    model = 'qwen-plus',
    api_key = "sk-*",
    base_url = "https://dashscope.aliyuncs.com/compatible-mode/v1")

#定义检索工具

@tool
def retrieve(query: str):
    """Retrieve information to help answer a query."""
    retrieved_docs = vectordb.similarity_search(query, k=2)
    serialized = "\n\n".join(
        (f"Source: {doc.metadata}\nContent: {doc.page_content}")
        for doc in retrieved_docs
    )
    return serialized, retrieved_docs

#创建智能体

from langchain.agents import create_agent
agent = create_agent(
    model=llm,
    tools=[retrieve,]
    )

#调用

result = agent.invoke({
    "messages": [{"role": "user", "content": "北京市政府工作报告中关于促进就业有哪些举措?"}]
})

        登录LangSmith,查看跟踪页面如下:

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

无界云图(开源在线图片编辑器源码)是由四川爱趣五科技推出的一款类似可画、创客贴、图怪兽的在线图片编辑器。该项目采用了React Hooks、Typescript、Vite、Leaferjs等主流技术进行开发,旨在提供一个开箱即用的图片编辑解决方案。项目采用 MIT 协议,可免费商用。 无界云图提供了一系列强大的图片编辑功能,包括但不限于: 素材管理:支持用户上传、删除和批量管理素材。 操作便捷:提供右键菜单,支持撤销、重做、导出图层、删除、复制、剪切、锁定、上移一层、下移一层、置顶、置底等操作。 保存机制:支持定时保存,确保用户的工作不会丢失。 主题切换:提供黑白主题切换功能,满足不同用户的视觉偏好。 多语言支持:支持多种语言,方便全球用户使用。 快捷键操作:支持快捷键操作,提高工作效率。 产品特色 开箱即用:无界云图采用了先进的前端技术,用户无需进行复杂的配置即可直接使用。 免费商用:项目采用MIT协议,用户可以免费使用和商用,降低了使用成本。 技术文档齐全:提供了详细的技术文档,包括技术文档、插件开发文档和SDK使用文档,方便开发者进行二次开发和集成。 社区支持:提供了微信技术交流群,用户可以在群里进行技术交流和问题讨论。 环境要求 Node.js:需要安装Node.js环境,用于运行和打包项目。 Yarn:建议使用Yarn作为包管理工具,用于安装项目依赖。 安装使用 // 安装依赖 yarn install // 启动项目 yarn dev // 打包项目 yarn build 总结 无界云图是一款功能强大且易于使用的开源在线图片编辑器。它不仅提供了丰富的图片编辑功能,还支持免费商用,极大地降低了用户的使用成本。同时,详细的文档和活跃的社区支持也为开发者提供了便利的二次开发和集成条件。无论是个人用户还是企业用户,都可以通过无界云图轻
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值