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

一、前言

    在许多应用程序中,特别是在大型语言模型(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 Clientos.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 Clientclient = Client()client.create_feedback(run_id,key=key,value=value,score=1.0,comment="comment",)if __name__ == '__main__':@traceabledef format_prompt(system_prompt,prompt,value="format_prompt"):run = get_current_run_tree()run_id = run.idfeedback(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.idfeedback(run_id, key,value)openai = Client()return openai.chat.completions.create(messages=messages, model="gpt-3.5-turbo", temperature=0)@traceabledef parse_output(response,value="parse_output"):run = get_current_run_tree()run_id = run.idfeedback(run_id, key,value)return response.choices[0].message.content@traceabledef run_pipeline(system_prompt,prompt,value='run_pipeline'):run:run_trees.RunTree = get_current_run_tree()run_id = run.idfeedback(run_id, key,value)# 格式化promptmessages = format_prompt(system_prompt,prompt)# 调用GPT进行推理response = invoke_llm(messages)# 解析输出result = parse_output(response)return resultsystem_prompt = "你是一位专业的导游,对历史文化、自然地理、艺术风光等方面都有丰富的知识积累。"prompt = "我家在北京,请推荐一下特色景点?"result = run_pipeline(system_prompt,prompt)print(result)

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

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

相关文章

for循环

基本语法 语法: for ( /*初始表达式*/; /*条件表达式*/; /*增量表达式*/ ) {//循环代码逻辑; }第一个空(初始表达式): 一般声明一个临时变量,用来计数用。 第二个空(条件表达式): …

迎接未来:2024年养老新趋势展望

随着全球人口结构的变化和科技的不断进步,养老服务业正在经历前所未有的变革。2024年,我们预见到几个关键的养老新趋势将重塑我们对老年生活的认知和支持方式。以下是对这一年养老新趋势的深入分析与建议: 1. 智慧养老的普及 随着物联网、大…

实体关系图三种对应关系

数据库三种关系,一对一,一对多最普遍。多对多需要拆表。 数据库一对一、一对多、多对多关系_一对多关系-CSDN博客

neo4j入门并使用案例说明

1、neo4j是什么 Neo4j是一个高性能的NoSQL图形数据库,它将结构化数据存储在网络(在数学角度称为图)上,而不是传统的表中。Neo4j是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎。它因其高性能、轻量级、易嵌入和…

2024前端面试准备-HTMLCSS

重头回顾一下知识 HTML面试题 1.怎么理解HTML语义化 让人更容易读懂(增加代码可读性),让搜索引擎更容易读懂(SEO) 2.默认情况下哪些是块元素,哪些是内联元素 块元素: display:block/table; 有dev、h1、h2、table、ul、ol、p等. 内联元素: display:inline/inline-block;有span、…

React Router v5 和 v6 中,路由对象声明方式有什么区别?

一、在React Router 6.x开始&#xff0c;路由对象的声明需要引用RouteObject。 import { RouteObject } from react-router-dom;const routes: RouteObject[] [{path: /,element: <Home />},{path: /about,element: <About />},// ... ];二、一些老项目使用的是R…

大模型时代的具身智能系列专题(九)

NYU Lerrel Pinto团队 Lerrel Pinto是NYU Courant的计算机科学助理教授&#xff0c;也是用机器人和人工智能实验室(CILVR小组)的一员。在加州大学伯克利分校读博士后&#xff0c;在CMU机器人研究所读博士&#xff0c;在印度理工学院古瓦哈蒂读本科。研究目标是让机器人在我们生…

Linux 35.5 + JetPack v5.1.3@FUEL编译安装

Linux 35.5 JetPack v5.1.3FUEL编译安装 1. 源由2. 编译&安装Step 1&#xff1a;依赖库安装Step 2&#xff1a;建立工程Step 3&#xff1a;编译工程Step 4&#xff1a;安装工程 3. 问题汇总3.1 fuel_planner/exploration_manager - dw3.2 fuel_planner/plan_env - OpenCV库…

前后端分离项目中Spring Boot返回的时间与前端相差8个小时

概述 今天在做一个前后端分离项目时,发现从后端获取的时间与从数据库获取的时间相差八个小时&#xff0c;最终排查后发现由于Springboot使用本地时区导致&#xff0c;修改SpringBoot时区后解决 环境 MySQL8SpringBoot 原因排查 发现从后端获取的数据总是比前端快八个小时 …

找不到d3dx9_43.dll怎么修复?这个几种修复方法轻松解决

在计算机使用过程中&#xff0c;我们常常会遇到一些错误提示&#xff0c;其中之一就是“d3dx943.dll丢失”。这个问题通常会导致某些游戏或应用程序无法正常运行。为了解决这个问题&#xff0c;我总结出了以下五种解决方法&#xff0c;希望能对遇到类似问题的朋友们有所帮助。 …

【Leetcode Python】70.爬楼梯

麻烦大家要自己去leetcode看题目 第一个思路 用递归会超时 return self.climbStairs(n - 1) self.climbStairs(n - 2)第二个思路 滚动数组思想 class Solution(object):def climbStairs(self, n):""":type n: int:rtype: int"""if(n<2)…

Android Camera APP预览画面镜像及旋转处理

Android Camera APP开发调试中经常会遇到预览画面镜像或者旋转处理。网上可以找到很多种方案&#xff0c;本文介绍最简单的实现方案&#xff0c;来达到镜像预览画面和画面旋转的效果。 整体来说画面的镜像和旋转大概有三种方案&#xff1a; 第一种方案&#xff1a;从Camera底层…

2.1 QT随手简记(三)

新建QT工程 1.方法 第一种&#xff1a;点击new project按钮&#xff0c;弹出对话框&#xff0c;新建即可 第二种&#xff1b;点击文件菜单&#xff0c;选择新建文件或者工程 2.QT工程文件介绍 (1).pro文件 --》QT工程配置文件 QT …

QNX 7.0.0开发总结

1 QNX编译 1.1 基本概念 QNX可以直接使用Linux Makefile编译库和二进制&#xff0c;在Makefile文件中指定CCaarch64-unknown-nto-qnx7.0.0-g&#xff0c;或者CCx86_64-pc-nto-qnx7.0.0-g&#xff0c;保存退出后&#xff0c;运行source /qnx_sdk_path/qnxsdp-env.sh&#xff0c;…

前端canvas绘图,利用canvas在图片上面绘制标记以及给canvas添加点击事件。

前端canvas绘图&#xff0c;利用canvas在图片上面绘制标记以及给canvas添加点击事件。 需要实现的效果如下图: 首先需要一个承载的核心画布 <canvas id"canvas" width"800" height"600"></canvas>全部代码&#xff1a; <!DOCT…

程序员职业素养的探索与实践

在数字化飞速发展的今天&#xff0c;程序员作为技术创新的核心力量&#xff0c;其职业素养的重要性愈发凸显。那么&#xff0c;对于程序员而言&#xff0c;什么样的职业素养是至关重要的呢&#xff1f;在我的职业生涯中&#xff0c;我深刻体会到&#xff0c;除了扎实的技术功底…

LabVIEW减压阀和温控阀综合测试系统

在使用LabVIEW开发阀门测试软件时&#xff0c;特别是针对减压阀和温控阀&#xff0c;测试内容和注意事项包括以下方面&#xff1a; 测试内容 压力测试&#xff1a; 入口压力&#xff1a;测量阀门在不同入口压力下的表现。 出口压力&#xff1a;确保减压阀能够将出口压力控制在…

k8s系列-使用containerd下载镜像并导入

1. 使用 containerd 下载镜像 首先&#xff0c;确保 containerd 已经安装并运行。然后使用 ctr 命令来拉取镜像&#xff1a; sudo ctr image pull docker.io/rancher/rancher-webhook:v0.4.32. 导出镜像 将拉取的镜像导出为 tar 文件&#xff1a; sudo ctr image export ra…

Spring AI 第二讲 之 Chat Model API 第五节HuggingFace Chat

HuggingFace Inference Endpoints 允许您在云中部署和提供机器学习模型&#xff0c;并通过 API 对其进行访问。 开始使用 有关 HuggingFace Inference Endpoints 的更多详细信息&#xff0c;请访问此处。 前提条件 添加 spring-ai-huggingface 依赖关系&#xff1a; <d…

systemctlm-cosim-demo项目分析

概述 systemctlm-cosim-demo项目是Xilinx的systemc库的demo工程。 环境安装 qemu安装 cd xilinx_proj/Downloads git clone https://github.com/Xilinx/qemu.git cd qemu git checkout 74d70f8008# Configure and build # zynq7000 # ./configure --target-list"arm-s…