大模型学习笔记七:LLM应用

news2024/12/25 0:03:26

文章目录

    • 一、维护生产级别的LLM应用,需要做的事
    • 二、符合需求的LLM App维护平台
    • 三、LangFuse
      • 1)替换OpenAI客户端(把跟OpenAI交互记录到LangFuse)
      • 1.1)几个基本概念
      • 2)通过LangChain的回调函数触发记录(上面用的原生OpenAI接口,下面是调用LangChain的接口)
      • 3)构建一个实际应用
      • 3.1)用trace记录一个多次调用LLM的过程
      • 3.2)用session记录一个用户的多轮对话
      • 4)数据集与测试
      • 4.1)在线标注
      • 4.2)上传已有数据集
      • 4.3)定义评估函数
      • 4.4)运行测试
      • 4.5)promp调优与回归测试
      • 5)prompt版本管理
      • 6)如何比较两个句子的相似性(一些经典 NLP 的评测方法)
      • 7)基于LLM的测试方法
    • 四、LangSmith
      • 1)准备工作(安装注册)
      • 2)基本功能演示
      • 3)数据集管理与测试
    • 五、Prompt Flow
      • 1)安装及运行
      • 2)Vscode插件
      • 3)与Semantic Kernel结合使用
    • 六、总结

一、维护生产级别的LLM应用,需要做的事

1、各种指标监控与统计:访问记录、响应时长、Token用量、计费等等(系统各个模块的访问记录和响应时间,整体的费用)
2、调试 Prompt
3、测试/验证系统的相关评估指标
4、数据集管理(便于回归测试,看以往测试的结果)
5、Prompt 版本管理(便于升级/回滚)

二、符合需求的LLM App维护平台

1、LangFuse(重点)): 开源 + SaaS(免费/升级版付费),LangSmith 平替,可集成 LangChain 也可直接对接 OpenAI API;
2、 LangSmith: LangChain 的官方平台,SaaS 服务(付费),非开源;
3、 Prompt Flow:微软开发,开源 + Azure AI云服务,可集成 Semantic Kernel(但貌合神离)。

import os
os.environ["LANGCHAIN_TRACING_V2"]=""
os.environ["LANGCHAIN_API_KEY"]=""

三、LangFuse

1)替换OpenAI客户端(把跟OpenAI交互记录到LangFuse)

  • 简介
    1、开源,支持 LangChain 集成或原生 OpenAI API 集成
    2、官方网站:https://langfuse.com/
    3、项目地址:https://github.com/langfuse

  • 注册(通过官方云服务使用:)

注册: cloud.langfuse.com
创建 API Key

LANGFUSE_SECRET_KEY="sk-lf-..."
LANGFUSE_PUBLIC_KEY="pk-lf-..."
  • 部署(源码部署)
#1、Clone repository
git clone https://github.com/langfuse/langfuse.git
cd langfuse
 
# 2、Run server and db
docker compose up -d


# 3、在自己部署的系统中生成上述两个 KEY
# 并在环境变量中指定服务地址
LANGFUSE_SECRET_KEY="sk-lf-..."
LANGFUSE_PUBLIC_KEY="pk-lf-.."
LANGFUSE_HOST="http://localhost:3000"
  • 安装相关库
!pip install --upgrade langfuse
  • 开始替换OpenAI客户端
from datetime import datetime
from langfuse.openai import openai
from langfuse import Langfuse 
import os

trace = Langfuse().trace(
    name = "hello-world",
    user_id = "wzr",
    release = "v0.0.1"
)

completion = openai.chat.completions.create(
  name="hello-world",
  model="gpt-3.5-turbo",
  messages=[
      {
   "role": "user", "content": "对我说'Hello, World!'"}
  ],
  temperature=0,
  trace_id=trace.id,
)

print(completion.choices[0].message.content)
  • 回复
Hello, World!
  • 该回答的记录
    在这里插入图片描述

  • 提问记录
    在这里插入图片描述

1.1)几个基本概念

1、·Trace 一般表示用户与系统的一次交互,其中记录输入、输出,也包括自定义的 metadata 比如用户名、session id等;
2、一个 trace 内部可以包含多个子过程,这里叫 observarions;
3、Observation 可以是多个类型:

  • Event 是最基本的单元,用于记录一个 trace 中的每个事件;
  • Span 表一个 trace 中的一个"耗时"的过程;
  • Generation 是用于记录与 AI 模型交互的 span,例如:调用 embedding 模型、调用 LLM。

4、Observation 可以嵌套使用。

  • 举例
    在这里插入图片描述

2)通过LangChain的回调函数触发记录(上面用的原生OpenAI接口,下面是调用LangChain的接口)

from langfuse.callback import CallbackHandler

handler = CallbackHandler(
    trace_name="SayHello",
    user_id="wzr",
)

------------------------</

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

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

相关文章

3.20刷题--备赛ing

距离十五届蓝桥杯还有23天&#xff0c;奶奶的拼了。备赛ing 今天刷题 5道 有序分数递归方法 如何1/2 2/4都是相同的结果&#xff0c;但是需要的是1/2&#xff0c;如何解决这个问题呢&#xff0c;可以看出分子和分母约分最简的时候&#xff0c;他们的gcd1&#xff0c;所以求…

Socket类

2.2 Socket类 Socket 类&#xff1a;该类实现客户端套接字&#xff0c;套接字指的是两台设备之间通讯的端点。 构造方法 public Socket(String host, int port) :创建套接字对象并将其连接到指定主机上的指定端口号。如果指定的host是null &#xff0c;则相当于指定地址为回送…

【HTML】悄悄分享两个好玩的html代码

最近整理U盘资源&#xff0c;本来打算清理掉一些“无用”的文件&#xff0c;结果翻到了之前保存的一个保存着好玩代码的文件夹&#xff0c;默默点开了命名为"大佬做的html.html”这个文件&#xff08;谁还不是一个中二少年呢&#xff09;话不多说&#xff0c;上代码&#…

0301taildir-source报错-flume-大数据

1 基础环境简介 linux系统&#xff1a;centos&#xff0c;前置安装&#xff1a;jdk、hadoop、zookeeper、kafka&#xff0c;版本如下 软件版本描述centos7linux系统发行版jdk1.8java开发工具集hadoop2.10.0大数据生态基础组件zookeeper3.5.7分布式应用程序协调服务kafka3.0分…

成都正信晟锦:亲戚借了钱不认账怎么办是现金

在人际交往中&#xff0c;金钱往来往往是敏感而复杂的议题&#xff0c;尤其是与亲戚间的借贷。若遭遇亲戚借了钱却不认账的尴尬局面&#xff0c;我们该如何妥善处理呢? 沟通始终是解决问题的第一步。尝试与该亲戚进行坦诚的对话&#xff0c;了解不认账的原因。可能是对方遇到了…

基于springboot的车辆充电桩管理平台

技术&#xff1a;springbootmysqlvue 一、背景 科学技术日新月异的如今&#xff0c;计算机在生活各个领域都占有重要的作用&#xff0c;尤其在信息管理方面&#xff0c;在这样的大背景下&#xff0c;学习计算机知识不仅仅是为了掌握一种技能&#xff0c;更重要的是能够让它真正…

【深度学习】手动实现RNN循环神经网络

&#x1f33b;个人主页&#xff1a;相洋同学 &#x1f947;学习在于行动、总结和坚持&#xff0c;共勉&#xff01; 目录 01 回顾 02 RNN神经网络原理 03 RNN神经网络实现 04 RNN神经网络实验 RNN的特别结构使得RNN具备了短期记忆能力&#xff0c;使其能够学习部分语义信息…

php 对接IronSource海外广告平台收益接口Reporting API

今天对接的是IronSource广告reporting api接口&#xff0c;拉取广告收益回来自己做统计。记录分享给大家 首先是文档地址,进入到IronSource后台就能看到文档地址以及参数&#xff1a; 文档地址&#xff1a;https://developers.is.com/ironsource-mobile/air/reporting/ 在这里插…

用户中心项目(前后端环境搭建)

文章目录 1.企业做项目流程2.需求分析1.登录/注册2.用户管理&#xff08;仅管理员可见&#xff09;3.用户校验 3.技术选型4.计划5.初始化项目1.前端初始化1.ant design pro 官网2.ant design pro 初始化1.本地创建一个文件夹存放项目2.cmd进入该目录3.根据官网进行初始化项目4.…

《C语言深度剖析》---------关键字(1)

1.双击实质--->加载内存 windows系统里面&#xff0c;双击的本质就是运行程序&#xff0c;把程序加载到内存里面&#xff1b; 任何程序运行的时候都必须加载到内存里面&#xff1b; 程序没有运行之前在硬盘里面&#xff0c;为什么程序运行之前必须加载到内存里面呢&#…

免费的chatgpt网站(包含最新版4.0)

相信每个人在生活工作学习中都逃不过用chatgpt来解决一些问题&#xff0c;下面我长话短说&#xff0c;为大家简单介绍几款免费且好用的chatgpt网站 1、YesChat 网址&#xff1a;YesChat-ChatGPT4V Dalle3 Claude 3 All in One Free 第一个就给大家介绍一个狠角色&#xff0c;最…

万界星空科技铜杆加工行业生产管理MES系统

传统的铜管加工方法有&#xff1a; &#xff08;1&#xff09;铜管挤压加工技术&#xff08;2&#xff09;铜管上引连铸法&#xff08;3&#xff09;铜管(有缝)焊接生产技术&#xff08;4&#xff09;铸轧法生产精密铜管铸轧法 生产精密铜管是一种全新的生产工艺&#xff0c;…

154.乐理基础-和弦固定标记法(三)九音、十一音、十三音

如果到这五线谱还没记住还不认识的话去看102.五线谱-高音谱号与103.五线谱-低音谱号这两个里&#xff0c;这里面有五线谱对应的音名&#xff0c;对比着看 内容参考于&#xff1a;三分钟音乐社 上一个内容&#xff1a;153.和弦的织体 上一个内容里练习的答案&#xff1a; 接下…

开放签开源电子签章白皮书-简版

开放签开源电子签章白皮书-简版 一、摘要&#xff1a; 开放签电子签章团队源自于电子合同SaaS公司&#xff0c;立志于通过开源、开放的模式&#xff0c;结合团队十多年的行业经验&#xff0c;将电子签章产品更简单、更低门槛的推广到各行各业中。让电子签章应用更简单&#x…

31.HarmonyOS App(JAVA)鸿蒙系统app Service服务的用法

鸿蒙系统app Service服务的用法 后台任务调度和管控 HarmonyOS将应用的资源使用生命周期划分为前台、后台和挂起三个阶段。前台运行不受资源调度的约束&#xff0c;后台会根据应用业务的具体任务情况进行资源使用管理&#xff0c;在挂起状态时&#xff0c;会对应用的资源使用进…

2024年熔化焊接与热切割证模拟考试题库及熔化焊接与热切割理论考试试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年熔化焊接与热切割证模拟考试题库及熔化焊接与热切割理论考试试题是由安全生产模拟考试一点通提供&#xff0c;熔化焊接与热切割证模拟考试题库是根据熔化焊接与热切割最新版教材&#xff0c;熔化焊接与热切割大…

n皇后问题(典dfs )注意对角线状态判断

思路&#xff1a;用的dfs思想&#xff0c;第一种是全排列思路&#xff0c;和数字排列同样的步骤。要注意对对角线的判断。下面画了个图简单示意一下&#xff0c;但是 u 和 i 的位置变了&#xff0c;在代码里呈现不一样。明天再改吧。先睡了。 代码&#xff1a; #include<io…

IDE(集成开发环境)插件是安全开发的便捷方式之一

开发人员每天都使用插件&#xff0c;插件的功能在于简化开发流程&#xff0c;例如自动检测所有特殊字符&#xff08;如“;”、“:”&#xff09;或语法合规性。创建插件的目的本身就是为了让开发人员能够在编写代码时检测漏洞&#xff0c;并在无需离开 IDE 环境的情况下立即修复…

STM32CubeMX学习笔记25---FreeRTOS信号量

一、信号量简介 信号量用于同步&#xff0c;任务间或者任务和中断间同步 互斥量用户互锁&#xff0c;用于保护同时只能有一个任务访问的资源&#xff0c;为资源上一把锁。 二值信号量&#xff1a;同步。如果存在两个线程&#xff0c;为线程1和线程2&#xff0c;如果线程1发送了…

大载重无人机基础技术,研发一款50KG负重六旋翼无人机技术及成本分析

六旋翼无人机是一种多旋翼无人机&#xff0c;具有六个旋翼&#xff0c;通常呈“X”形布局。它采用电动串列式结构&#xff0c;具有垂直起降、悬停、前飞、后飞、侧飞、俯仰、翻滚等多种飞行动作的能力。六旋翼无人机通常被用于航拍、农业植保、环境监测、地形测绘等领域。 六旋…