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

文章目录

    • 一、维护生产级别的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",
)

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

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

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

相关文章

打开snipaste软件的界面后,上次的截图无法销毁?

现象&#xff1a; 鼠标放上去&#xff0c;如图会有1个圆圈&#xff0c;无法消除一直显示在电脑桌面上&#xff0c;无法使图片消失 解决办法&#xff1a; 你应该是点到了空格&#xff0c;开启了编辑模式&#xff0c;然后又选中了其中一个功能例如橡皮檫导致无法移动和销毁&…

Linux线程补充1

十、多线程中线程间的"独立" ​ 1.线程在代码段通过执行不同的函数&#xff0c;实现代码段的独立&#xff1b; ​ 2.新线程通过在共享区划分不同的管理属性和不同的栈空间&#xff0c;实现栈的独立&#xff0c;而主线程使用的是栈空间&#xff1b; ​ 3.线程通过获…

计算机二级大题

题目来源&#xff1a;计算机二级Python半个月抱佛脚大法&#xff08;内呈上真题版&#xff09; - 知乎 1.大题1 注意csv文件读取的处理 ls[] for line in f: ls.append(line.strip(\n).split(,)) 2. 大题2 第一问&#xff1a; #计算有效票张数 fopen("vote.txt",…

微服务鉴权的几种实现方案

1.Token 1.1 Token透传&#xff08;不推荐&#xff09; 刚开始接触微服务时网上给的方案大都数是通过透传Token做鉴权&#xff0c;但我认为这种方式不是很妥当。接着往下看&#xff1a; 这种方式通过透传Token使得各微服务都能获取到当前登录人信息&#xff0c;在代码编写上确…

SCI一区 | Matlab实现WOA-TCN-BiGRU-Attention鲸鱼算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测

SCI一区 | Matlab实现WOA-TCN-BiGRU-Attention鲸鱼算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测 目录 SCI一区 | Matlab实现WOA-TCN-BiGRU-Attention鲸鱼算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测预测效果基本介绍模型描述程序…

面试算法-78-两两交换链表中的节点

题目 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09;。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4] 输出&#xff…

NLP 笔记:LDA(训练篇)

1 前言&#xff1a;吉布斯采样 吉布斯采样的基本思想是&#xff0c;通过迭代的方式&#xff0c;逐个维度地更新所有变量的状态 1.1 举例 收拾东西 假设我们现在有一个很乱的屋子&#xff0c;我们不知道东西应该放在哪里&#xff08;绝对位置&#xff09;&#xff0c;但知道哪…

汉字之美,拼音之韵

title: 汉字之美&#xff0c;拼音之韵 date: 2024/3/23 18:41:56 updated: 2024/3/23 18:41:56 tags: 汉字拼音文化语言美学传承中文 1. 汉字之美 汉字作为中文的书写形式&#xff0c;承载着丰富的文化内涵。每一个汉字都蕴含着历史、传统和智慧&#xff0c;是中华文明的瑰宝…

关于Java发邮件提醒写周报实现(一)环境搭建

背景 由于公司每周都要写周报&#xff0c;而日常工作很忙&#xff0c;所以很容易忘记这件事件&#xff0c;因此开发一个写周报提醒的机器人&#xff0c;进行特定时间提醒是时候写周报了。 有一个大前提&#xff0c;本技术实现&#xff0c;本着不开通任何收费服务的态度去考察使…

JetBrains CLion 2022 for Windows:C++开发者的强大助手,引领编程新风尚

在数字化浪潮席卷全球的今天&#xff0c;编程语言的多样性和复杂性日益凸显。而在众多编程语言中&#xff0c;C以其独特的优势和广泛的应用领域&#xff0c;成为众多开发者的首选。JetBrains CLion 2022&#xff0c;作为一款专为C开发者打造的集成开发环境&#xff08;IDE&…

深度学习(二)安装tensorflow深度学习框架

0.前言 速度更新新的一期&#xff0c;快夸奖我。前情提要这是我在window10系统下完成的操作&#xff0c;并不是ubuntu&#xff0c;所以有相应的区别。 1.安装tensorflow和d2l 这里默认大家已经安装好了anconda或者miniconda并且以及创建了虚拟环境。 conda create -n huahuaji…

Cesium安装部署运行

目录 1.简介 2.Cesium项目下载 3.Cesium项目运行 4.cesium运行 1.简介 Cesium是国外一个基于JavaScript编写的使用WebGL的地图引擎。Cesium支持3D,2D,2.5D形式的地图展示&#xff0c;可以自行绘制图形&#xff0c;高亮区域&#xff0c;并提供良好的触摸支持&#xff0c;且支…

(一)基于IDEA的JAVA基础6

赋值运算符 int a10&#xff1b;是把10赋值给了变量a&#xff0c; 那这里有两组数值: int num11&#xff1b; int num22&#xff1b; 想把两个数值互关该怎么办呢&#xff0c; 理想状态我们直接num1num2&#xff1b;num2num1&#xff1b;看一下结果: 全变成了2&#xff0…

【计算机网络】常见面试题汇总

文章目录 1.计算机网络基础1.1网络分层模型/OSI七层模型是什么&#xff1f;1.2TCP/IP四层模型是什么&#xff1f;每一层的作用&#xff1f;1.2.1TCP四层模型&#xff1f;1.2.2为什么网络要分层&#xff1f; 1.2常见网络协议1.2.1应用层常见的协议1.2.2网络层常见的协议 2.HTTP2…

如何查看局域网内所有的ip和对应的mac地址

1、windows下查看 方法一、 按快捷键“winr”打开运行界面&#xff0c;输入“CMD”回车: 输入以下命令&#xff1a; for /L %i IN (1,1,254) DO ping -w 1 -n 1 192.168.0.%i 其中 192.168.0.%i 部分要使用要查询的网段&#xff0c;比如 192.168.1.%i 192.168.137.%i 172.16.2…

git 上传文件夹至远端仓库的方法

上传的远端git可以是gitlab、github、gitee、gitblit或者gitCode等等 以下以GitHub为例说明&#xff1a; 1、登录GitHub网站&#xff08;账户/密码&#xff09; 2、创建一个新的空白项目&#xff08;或者已有的项目&#xff09;hello-world 分支是master &#xff0c;这里默认即…

【c++初阶】C++入门(下)

✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅ ✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨ &#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1…

Spark与flink计算引擎工作原理

Spark是大批量分布式计算引擎框架&#xff0c;scale语言开发的&#xff0c;核心技术是弹性分布式数据集&#xff08;RDD&#xff09;可以快速在内存中对数据集进行多次迭代&#xff0c;支持复杂的数据挖掘算法及图形计算算法&#xff0c;spark与Hadoop区别主要是spark多个作业之…

试题E(求阶乘)

解题思路&#xff1a; 写不出来&#xff0c;看的题解。要想凑个10&#xff0c;就必须要有一个2和5&#xff0c;但是明显在一个阶乘里&#xff0c;因子为2的数量一定多余5的数量&#xff0c;所以计算5的数量。 解题代码&#xff1a; import java.util.Scanner; ​ public clas…

题目:异或森林(蓝桥OJ 3400)

问题描述&#xff1a; 解题思路&#xff1a; 一个数也可以看作是一段区间&#xff0c;当该区间的异或和为完全平方数时则符合题意。 我们需要注意枚举的完全平方的上限。 异或前缀和减小时间复杂度。 题解&#xff1a; #include <bits/stdc.h> using namespace std; usi…