开源模型应用落地-LangSmith试炼-入门初体验-监控和自动化(五)

news2025/1/17 23:24:52

一、前言

    在许多应用程序中,特别是在大型语言模型(LLM)应用程序中,收集用户反馈以了解应用程序在实际场景中的表现是非常重要的。

    LangSmith可以轻松地将用户反馈附加到跟踪数据中。通常最好提供一个简单的机制(如赞成和反对按钮)来收集用户对应用程序响应的反馈。然后,再使用 LangSmith SDK 或 API 发送跟踪反馈。    本章学习Monitoring and automations功能,帮助开发者更好地管理和优化LangChain应用程序,提高其性能、可靠性和用户体验。


二、术语

2.1.Monitoring and automations

    具体功能包括:

  1. 数据收集与分析:收集应用程序在运行过程中的各种数据,如输入、输出、响应时间等,并进行分析和统计,以了解应用程序的性能和行为。
  2. 性能监控:实时监测应用程序的性能指标,如响应时间、吞吐量、资源利用率等,及时发现性能问题并进行预警。
  3. 错误检测与预警:检测应用程序在运行过程中出现的错误、异常或故障,并及时发出预警信息,以便开发者及时采取措施进行修复。
  4. 自动化测试:支持自动化测试,通过预设的测试用例对应用程序进行定期测试,以确保其功能的正确性和稳定性。
  5. 报告与可视化:生成详细的监控报告和可视化图表,帮助开发者更好地理解应用程序的性能和问题,并为决策提供依据。

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

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.在应用程序中过滤数据

4.1.1.导航栏过滤

PS:默认情况下,会自动创建IsRoottrue的过滤条件

4.1.1.1.根据属性过滤

根据自定义条件过滤,例如:Nameinvoke_llm

全文检索,例如:Full-Text Search为"导游"

4.1.1.2.根据查询语言过滤

在Raw Query中输入:eq(feedback_key,"test_key")

点击添加后,会把Raw查询添加到现有查询中(不是覆盖现有的查询条件

4.1.1.3.根据AI自动生成过滤条件

在AI Query中输入“导游

点击添加后,会自动生成Full-Text Search为"导游"的过滤条件

4.1.2.侧边栏过滤

4.2.使用监控图表

LangSmith 有一组可访问每个跟踪项目的监控图表。

过页面顶部的选项卡,可以查看不同时间段的监控,默认情况下,设置为七天。


下面设置为三十天



4.3.设置自动化规则

LangSmith 提供了一项自动化记录功能,可让触发跟踪数据的某些操作。

4.3.1.导航至规则创建

4.3.2.定义过滤器

创建一个过滤器来过滤项目中的记录。

4.3.3.定义采样率

为自动化指定一个采样率(介于 0 和 1 之间),用于控制发送到自动化操作的记录的百分比。例如,将采样率设置为 0.5,则通过过滤器的 50% 的记录将被发送到该操作。

4.3.4.定义动作

  • Add to dataset: Add the inputs and outputs of the trace to a dataset.
  • Add to annotation queue: Add the trace to an annotation queue.
  • Run online evaluation: Run an online evaluation on the trace. 
  • Trigger webhook: Trigger a webhook with the trace data. 

4.3.5.查看自动化日志

未调用程序,自动化日志为空

调用程序,让模型进行推理:我家在北京,请推荐一下特色景点?


五、附带说明

5.1.测试代码

# -*-  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

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

    system_prompt = "你是一位专业的导游,对历史文化、自然地理、艺术风光等方面都有丰富的知识积累。"
    prompt = "我家在北京,请推荐一下特色景点?"
    result = run_pipeline(system_prompt,prompt)
    print(result)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1790578.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解决MAC M1 Docker Desktop启动一直在starting

问题描述: 今天使用docker buildx 构建Multi-platform,提示如下错误: ERROR: Multi-platform build is not supported for the docker driver. Switch to a different driver, or turn on the containerd image store, and try again. 于是按…

RTOS笔记--任务状态与调度

任务状态 freertos中的任务分为四个状态:就绪状态(ready)、运行状态(running)、阻塞状态(blocked)、暂停状态(suspended) 完整的任务状态转换图: 在使用vTas…

短剧市场大爆炸:小米和华为的亿万争夺战,谁能笑到最后?

在数字化媒体的浪潮中,内容消费模式正经历着翻天覆地的变化。短视频的兴起引领了一种全新的娱乐方式,而短剧作为其衍生形式,正逐渐成为各大科技巨头争夺的新战场。 小米和华为,作为中国科技界的两大巨头,也在这一新兴…

Android Studio的Gradle面板里不显示task,build ,assemble 无法出aar包

按照以下方式把对应开关打开就可以正常进行build/assemble进行aar的生成了

回归预测 | MATLAB实现基于GOOSE-LightGBM的多特征输入单输出数据回归预测(鹅优化算法)

回归预测 | MATLAB实现基于GOOSE-LightGBM的多特征输入单输出数据回归预测(鹅优化算法) 目录 回归预测 | MATLAB实现基于GOOSE-LightGBM的多特征输入单输出数据回归预测(鹅优化算法)效果一览基本介绍程序设计参考资料 效果一览 基本介绍 MATLAB实现基于LightGBM算法的数据回归预…

配置Kubernetes资源管理Secret与ConfigMap

前言 Kubernetes 中的 Secret(提供加密模式)和 ConfigMap(提供配置)是关键的资源,用于安全地存储和管理敏感信息和配置数据。它们在应用程序开发和部署过程中扮演着重要的角色。本文将介绍如何有效地配置和管理这些资…

YOLOv8改进有效涨点专栏目录——包含backbone、head、neck和损失函数上百余种改进技巧

专栏地址:YOLOv8改进有效涨点——持续更新中 backbone——主干 YOLOv8改进 | 主干网络 | 将主干网络替换为轻量化的ShuffleNetv2【原理 完整代码】 YOLOv8改进 | 主干网络 | 增加网络结构增强小目标检测能力【独家创新——附结构图】 YOLOv8改进 | 主干网络 | 在…

基于JS实现《国家基本比例尺地形图分幅和编号》标准

1、标准 GB T 13989-2012国家基本比例尺地形图分幅和编号 地址:【高清版】GB T 13989-2012国家基本比例尺地形图分幅和编号 - 道客巴巴 2、1:100万比例尺 2.1 说明 2.2 计算公式 2.3 计算代码 2.3.1 元素数据定义 由于中国只到N层,所以只定义到O. …

2022.9.25DAY677

今日图书馆恢复开放,被同学邀约去图书馆占座位。来到图书馆,想着既然来到了,那就开始复习吧。高数看了第一章的一二节,看着看着,想着光看教材难以去衡量自己有没有掌握,于是又想着要是有章节练习就好了。习…

Xcode下载安装

1.Xcode可用版本判断: 2.Xcode下载安装: 方案1:AppStore 下载更新 若方案1失败则 方案2:指定版本Xcode包下载解压安装 苹果下载 3.Xcode命令行工具插件安装 xcode-select --install 备注: xcode_x.x.x.xip(压缩包存在时效性(使用前24h/…

E10:流程主表表单字段值变化触发事件

效果– //window.WeFormSDK.showMessage("这是一个E10的提示", 3, 2); const onClickCreate () > console.log("create"); const onClickSave () > console.log("save"); const onClickCancel () > dialogComponent?.destroy();/…

教师工龄工资怎么算的

常听到有的老师这样问:“我的工龄工资是怎么计算的?”这个问题可能时常萦绕在老师们的心头。毕竟,工龄工资作为我们辛勤工作的一种肯定,关系到我们的收入,更是一种认可。 工龄工资是依据教师的工作年限来计算的。工龄工…

微软云计算[3]之Windows Azure AppFabric

Windows Azure AppFabric AppFabric概述AppFabric关键技术服务总线访问控制高速缓存 AppFabric概述 AppFabric为本地应用和云中应用提供了分布式的基础架构服务 用户本地应用与云应用之间进行安全联接和信息传递 云应用和现有应用或服务之间的连接及跨语言、跨平台、跨不同标…

现代密码学-国密算法

商用密码算法种类 商用密码算法 密码学概念、协议与算法之间的依赖关系 数字签名、证书-公钥密码、散列类算法 消息验证码-对称密码 ,散列类 安全目标与算法之间的关系 机密性--对称密码、公钥密码 完整性--散列类算法 可用性--散列类、公钥密码 真实性--公…

C++设计模式-单例模式,反汇编

文章目录 25. 单例模式25.1. 饿汉式单例模式25.2. 懒汉式单例模式25.2.1. 解决方案125.2.2. 解决方案2 (推荐写法) 运行在VS2022,x86,Debug下。 25. 单例模式 单例即该类只能有一个实例。 应用:如在游戏开发中&#x…

网易有道QAnything使用CPU模式和openAI接口安装部署

网易有道QAnything可以使用本地部署大模型(官网例子为qwen)也可以使用大模型接口(OPENAI或者其他大模型AI接口 )的方式,使用在线大模型API接口好处就是不需要太高的硬件配置。 本机环境windows11 首先安装WSL环境, 安装方法参考https://zhuan…

如何在springboot项目中使用Mybatisplus

文章目录 1.mybatisplus的作用2.mybatisplus使用流程2.1pom.xml文件中增加依赖(点击右上角蓝色按钮下载依赖)2.2navicat新建数据库,增加application.properties数据库配置2.3 启动类添加注解,增加mapper包操作数据库2.5添加实体类…

外资企业使用卓豪Zoho CRM优势有哪些?

外资企业在中国市场的竞争愈发激烈,为了在众多本土与国际对手中脱颖而出,高效管理客户关系、提升销售业绩、并实现市场精准定位成为了企业不可或缺的竞争力。在这场数字化转型的浪潮中,卓豪Zoho CRM以其卓越的性能和全面的功能,成…

Nginx配置详细解释:(1)全局配置

自启动安装nginx:前面博客有解释 systemctl stop firewalld setenforce 0 [rootNode1 ~]#:mkdir /data [rootNode1 ~]#:cd /data [rootNode1 data]#:yum -y install gcc pcre-devel openssl-devel zlib-devel openssl openssl-devel [rootNode1 data]#:wget http://nginx.o…

【计算机网络】P3 计算机网络协议、接口、服务的概念、区别以及计算机网络提供的三种服务方式

目录 协议什么是协议协议是水平存活的协议的组成 接口服务服务是什么服务原语 协议与服务的区别计算机网络提供的服务的三种方式面向连接服务与无连接服务可靠服务与不可靠服务有应答服务与无应答服务 协议 什么是协议 协议,就是规则的集合。 在计算机网络中&…