开源模型应用落地-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 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)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

工控一体机5寸显示器电容触摸屏(YA05WK)产品规格说明书

如果您对工控一体机有任何疑问或需求,或者对如何集成工控一体机到您的业务感兴趣,可移步控芯捷科技。 一、硬件功能介绍 YA05WK是我公司推出的一款新型安卓屏,4核Cortex-A7 架构,主频1.2GHz的CPU。采用12V供电,标配5寸…

使用QT生成二维码的两种方式

目录 使用QRenCode生成二维码编译生成QRenCode库使用QRenCode结果演示优缺点: 使用QZXing进行二维码的编码和解码编译源码使用QZXing库运行结果优缺点 使用QRenCode生成二维码 编译生成QRenCode库 QRenCode开源库 下载好之后使用cmake-gui打开进行构建生成。 点击…

mathtype7.0产品密钥及2024最新软件激活教程步骤

在数字化教育日益普及的今天,如何有效利用技术工具来提高数学学习的效率和质量,成为了教育工作者和学生共同关注的热点。特别是在处理复杂的数学公式、符号以及方程式时,传统的输入方式往往费时费力,且容易出错。为此,…

如何用python做一个用户登录界面——浔川python社

1 需解决的问题: 1.1如何用python做一个用户登录界面? 1.2需要用到哪些库、模块? 2 问题解决: 2.1 回答 1.1 :合理即可,无标准回答。 2.2 回答 1.2 :tk库(缩写)、GUL界面…

redis基础学习

redis是一个键值对类型的NoSql类型的数据库。 NoSql(Non-relational SQL的缩写,也有人看作是not only sql的缩写)型数据库,具有以下特征: 1、非结构化:几乎没有约束,约束很少,这要看…

【LLM】两篇多模态LLM综述MultiModal Large Language Models

note (一)现有的 MM-LLM 的趋势: (1)从专门强调 MM 理解对特定模态的生成的进展,并进一步演变为任何到任何模态的转换(例如,MiniGPT-4 → MiniGPT-5 → NExT-GPT); (2) 从 MM PT 提…

神经网络与深度学习——第7章 网络优化与正则化

本文讨论的内容参考自《神经网络与深度学习》https://nndl.github.io/ 第7章 网络优化与正则化 网络优化与正则化 网络优化 网络结构多样性 高维变量的非凸优化 神经网络优化的改善方法 优化算法 小批量梯度下降 批量大小选择 学习率调整 学习率衰减 学习率预热 周期性学习率调…

装甲车启动电源的安全性能分析

装甲车辆启动电源是一种为装甲车辆提供启动动力的专业设备。它通常被用于 火箭兵 、步兵战车、装甲运兵车等JS车辆,这些车辆通常需要较高的启动功率来启动其发动机,尤其是装甲车的发动机,由于其功率大,启动对电力要求很高。在现代…

3DMAX一键虚线图形插件DashedShape使用方法

3DMAX一键虚线图形插件使用方法 3dMax一键虚线图形插件,允许从场景中拾取的样条线创建虚线形状。该工具使你能够创建完全自定义的填充图案,为线段设置不同的材质ID,并在视口中进行方便的预览。 【版本要求】 3dMax 2012 – 2025(…

HarmonyOS应用开发学习历程(1)初识DevEco Studio

1.create project Bundle name:包名,标识应用程序,默认应用ID也使用该名 Compile SDK:编译时API版本 2.工程目录 AppScope:应用全局所需资源 entry:应用的主模块,含代码、资源 hvigor&#…

Java多线程问题

线程 何为线程:线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不同的是同类的多个线程共享进程的堆和方法区资源,但每个线程有自己的程序计数器、虚拟机栈和本地方法栈,所以系统在产生一个线程&#xf…

OSEK错误处理及跟踪调试

1 前言 如表1所示,OSEK提供了一些特殊的钩子例程(Hook routines),应用层可以在钩子函数中自定义操作,以参与到操作系统的内部处理中。 表1 钩子函数类型 钩子函数例程功能用途ErrorHook用于错误处理StartupHook在系统启…

【论文复现|智能算法改进】基于多策略麻雀搜索算法的机器人路径规划

目录 1.算法原理2.改进点3.结果展示4.参考文献5.代码获取 1.算法原理 【智能算法】麻雀搜索算法(SSA)原理及实现 2.改进点 改进的无限折叠迭代混沌映射 无限折叠迭代映射(ICMIC) 常用于图像加密方向的研究, 基本思想是首先生成[0,1]之间的混沌序列, …

【Qt秘籍】[008]-Qt中的connect函数

在Qt框架中,connect函数是一个非常核心的函数,用于实现信号(Signals)和槽(Slots)之间的连接,它是Qt信号槽机制的关键所在。信号槽机制是一种高级的通信方式,允许对象在状态改变时通知…

掘金AI 商战宝典-系统班:2024掘金AIGC课程(30节视频课)

课程目录 1-第一讲学会向Al提问:万能提问公式_1.mp4 2-第二讲用AI写视频脚本_1.mp4 3-第三讲用AI写视频口播文案_1.mp4 4-第四讲用AI自动做视频(上)_1.mp4 5-第五讲用AI自动做视频(中)_1.mp4 6-第六讲用AI自动做视…

1. Mybatis基础操作

目录 1.1 需求 1.2 准备 1.3 删除 1.3.1 功能实现 1.3.2 日志输入 1.3.3 预编译SQL 1.3.3.1 介绍 1.3.3.2 SQL注入 1.3.3.3 参数占位符 1.4 新增 1.4.1 基本新增 1.4.2 主键返回 1.5 更新 1.6 查询 1.6.1 根据ID查询 1.6.2 数据封装 1.6.3 条件查询 1.6.4 参…

Tree——输出项目的文件结构(Linux)

输出项目中的文件结构可以使用tree命令。tree是一个用于以树状结构显示目录内容的命令行工具。它非常适合快速查看项目的文件结构。安装: sudo apt-get install tree 使用: 在命令行中导航到项目的根目录,输出文件结构。 tree 也可以将结构输…

NXP RT1060学习总结 - CANFD功能

1、RT1060-CAN FD功能简介 这里使用RT1060系列的1064芯片进行开发,测试板是官方提供的开发板;RT1060系列支持3路CAN功能,CAN1和CAN2只能最为普通的CAN外设,支持CAN2.0,而CAN3支持CAN-FD功能;CAN-FD功能这里…

数据库概念

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人能接…

Java学习Lambda表达式

Lambda表达式 有且只有一个未实现的方法叫做Lambda表达式,可以实现函数式编程 // 这个注解是用来检查你写的函数是否是函数式接口 FunctionalInterfaceinterface Myinterface {int sum(int a, int b);default String priteTitle(String name, int age, String sex)…