【AI大模型应用开发】【LangSmith: 生产级AI应用维护平台】1. 快速上手数据集与测试评估过程

简介: 【AI大模型应用开发】【LangSmith: 生产级AI应用维护平台】1. 快速上手数据集与测试评估过程
  • 大家好,我是同学小张,日常分享AI知识和实战案例
  • 欢迎 点赞 + 关注 👏,持续学习持续干货输出
  • +v: jasper_8017 一起交流💬,一起进步💪。
  • 微信公众号也可搜【同学小张】 🙏

本站文章一览:


今天是LangSimth平台实战的第二篇文章。

上篇文章我们介绍了该平台的Tracing部分,它为程序提供了每一步的运行日志及监控,提供了快速调试能力以及测试数据标注和收集能力。

本文介绍该平台的数据集和测试评估部分。数据集的建立和测试评估是软件开发过程中必不可少的一部分,也是保证软件质量的重要一环。

0. 导入本地数据集

该平台上,对于数据集的收集过程,除了上篇文章中介绍的在线标注和收集方式,还可以通过导入本地数据集的方式批量上传数据集。

以AGI课堂中的数据集例子给大家做演示。

数据集格式如下( .jsonl文件 ):outlines、user_input 以及 label字段,其中label为标注,也就是输出结果。

{"outlines": "Assistants API\n✅1. OpenAI 给了我们更大空间\n✅2. 原生 API、GPTs、Assistants API、国产/开源大模型选型参考\n✅3. Assistants API 的主要能力\n✅4. 做一个自己的 GPT\n  1. 创建 assistant\n  2. 管理 thread\n  3. 添加 message\n  4. 开始 run\n  5. 中控调度\n  6. Function Calling\n  7. Code Interpreter\n  8. RAG", "user_input": "别进reddit的中文话题,那是最没营养的区域", "label": "N"}
{"outlines": "【神秘嘉宾】大模型时代的AI产品新挑战\n1. AI 能力演进路线\n✅2. LLMs 带来的变化\n✅3. 如何将大模型落地到实际场景中\n✅4. LLMs 存在哪些问题\n✅5. LLMs 落地三要素\n✅6. LLMs 短期、中期和长期落地方向", "user_input": "对话式交互也不是所有场景都合适", "label": "N"}

0.1 导入步骤与相关接口

(1)创建dataset,接口:create_dataset

(2)给dataset创建数据集,接口:create_examples

0.2 实现代码

import json
data = []
with open('D:\GitHub\LEARN_LLM\langsmith\my_annotations.jsonl','r',encoding='utf-8') as fp:
    for line in fp:
        example = json.loads(line.strip())
        item = {
            "input": {
                "outlines": example["outlines"],
                "user_input": example["user_input"]
            },
            "expected_output": example["label"]
        }
        data.append(item)
        
from langsmith import Client
client = Client()
dataset_name = "assistant-001"
dataset = client.create_dataset(
    dataset_name, #数据集名称
    description="AGI课堂的标注数据", #数据集描述
)
client.create_examples(
    inputs=[{"input":item["input"]} for item in data[:50]],  # 只是演示,所以只上传了前50条测试数据
    outputs=[{"output":item["expected_output"]} for item in data[:50]], 
    dataset_id=dataset.id
)

以上实现代码其实主要是调用了上述两个接口,创建了数据集和为数据集填充了测试数据。剩下的代码就是解析数据集jsonl文件格式。

0.3 运行结果

打开LangSimth,可以看到上传的数据集了

1. 对数据集进行批量测试和评估

1.1 定义评估函数

定义一个评估函数,判断输出值是否与期望值相等,相等则评分为1,不相等则评分为0。

下面的例子使用了自定义的评估标准,要想自定义一个字符串类型的评估标准,需要继承自StringEvaluator,然后重写_evaluate_strings函数。

from langchain.evaluation import StringEvaluator
from nltk.translate.bleu_score import sentence_bleu, SmoothingFunction
import re
from typing import Optional, Any
class AccuracyEvaluator(StringEvaluator):
    def __init__(self):
        pass
    def _evaluate_strings(
        self,
        prediction: str,
        input: Optional[str] = None,
        reference: Optional[str] = None,
        **kwargs: Any
    ) -> dict:
        return {"score": int(prediction==reference)}
from langchain.evaluation import EvaluatorType
from langchain.smith import RunEvalConfig
evaluation_config = RunEvalConfig(
    # 自定义评估标准
    custom_evaluators=[AccuracyEvaluator()],
)

1.2 定义Chain

在这里定义你的待评估的主要数据处理流程程序,也就是你的大模型应用。

from langchain.prompts import PromptTemplate
need_answer=PromptTemplate.from_template("""
*********
你是AIGC课程的助教,你的工作是从学员的课堂交流中选择出需要老师回答的问题,加以整理以交给老师回答。
 
课程内容:
{outlines}
*********
学员输入:
{user_input}
*********
如果这是一个需要老师答疑的问题,回复Y,否则回复N。
只回复Y或N,不要回复其他内容。""")
model = ChatOpenAI(temperature=0,model_kwargs={"seed":42})
parser = StrOutputParser()
chain_v1 = (
    {
        "outlines":lambda x: x["input"]["outlines"],
        "user_input":lambda x: x["input"]["user_input"],
    }
    | need_answer
    | model
    | parser
)

1.3 运行测试

运行测试的接口:arun_on_dataset,该接口需要的重要参数:

  • dataset_name:要使用的数据集名称
  • llm_or_chain_factory:使用的处理链(你要评估的程序)
  • evaluation:评估标准
from langchain.smith import (
    arun_on_dataset,
    run_on_dataset,
)
from langsmith import Client
client = Client()
async def test_run():
    dataset_name = "assistant-001"
    results = await arun_on_dataset(
        dataset_name=dataset_name,
        llm_or_chain_factory=chain_v1,
        evaluation=evaluation_config,
        verbose=True,
        client=client,
        project_name="test-002",
        tags=[
            "prompt_v1",
        ],  # 可选,自定义的标识
    )
    print(results)
    
asyncio.run(test_run())

再加一些需要的包:

import asyncio
from langchain_openai import ChatOpenAI
from langchain.prompts import PromptTemplate
from langchain.schema.output_parser import StrOutputParser
from langchain.schema.runnable import RunnablePassthrough
from langchain.schema import HumanMessage
from langchain.prompts.chat import HumanMessagePromptTemplate
from langchain.prompts import ChatPromptTemplate
from langchain.evaluation import StringEvaluator
from nltk.translate.bleu_score import sentence_bleu, SmoothingFunction
import re
from typing import Optional, Any

1.4 运行结果

运行日志输出如下:

本次测试的结果示例如下:每一条都有记录,参考结果是什么、本次测试输出结果是什么。

在数据集界面,还可以看到所有针对本数据集的测试信息。

1.5 坑

同一数据集的同一个测试只能跑一次,否则报错。也就是在同一个数据集上跑测试时,project_name参数要不同。

本文到这里就结束了,在本文中,我们实际使用了LangSmith平台的数据集与测试评估的部分:从数据集的创建到建立自己的评估标准,再到实际运行一个测试,得到测试结果。简单的使用,相信大家能对这一部分内容有一个全览性的认识。

如果觉得本文对你有帮助,麻烦点个赞和关注呗 ~~~


  • 大家好,我是同学小张,日常分享AI知识和实战案例
  • 欢迎 点赞 + 关注 👏,持续学习持续干货输出
  • +v: jasper_8017 一起交流💬,一起进步💪。
  • 微信公众号也可搜【同学小张】 🙏

本站文章一览:

相关文章
|
6天前
|
存储 人工智能 运维
MoE大模型迎来“原生战友”:昇腾超节点重构AI基础设施
大模型训练中,MoE架构逐渐成为主流,但也面临资源利用率低、系统稳定性差、通信带宽瓶颈三大挑战。传统AI集群难以满足其需求,而“昇腾超节点”通过自研高速互联协议、软硬件协同调度、全局内存统一编址及系统稳定性提升等创新,实现384张卡协同工作,大幅提升训练效率与推理性能。相比传统方案,昇腾超节点将训练效率提升3倍,推理吞吐提升6倍,助力MoE模型在工业、能源等领域的规模化应用。5月19日的鲲鹏昇腾创享周直播将深度解析相关技术细节。
61 15
|
2天前
|
人工智能 负载均衡 API
长连接网关技术专题(十二):大模型时代多模型AI网关的架构设计与实现
随着 AI 技术快速发展,业务对 AI 能力的渴求日益增长。当 AI 服务面对处理大规模请求和高并发流量时,AI 网关从中扮演着至关重要的角色。AI 服务通常涉及大量的计算任务和设备资源占用,此时需要一个 AI 网关负责协调这些请求来确保系统的稳定性与高效性。因此,与传统微服务架构类似,我们将相关 API 管理的功能(如流量控制、用户鉴权、配额计费、负载均衡、API 路由等)集中放置在 AI 网关层,可以降低系统整体复杂度并提升可维护性。 本文要分享的是B站在大模型时代基于多模型AI的网关架构设计和实践总结,希望能带给你启发。
28 4
|
1天前
|
传感器 人工智能 自然语言处理
火热邀测!DataWorks数据集成支持大模型AI处理
阿里云DataWorks数据集成新增大模型AI处理功能,支持在数据同步中无缝调用通义千问等AI模型,实现文本翻译、情感分析、摘要生成等功能。适用于电商客服、智能汽车、供应链、医疗、金融、法律及教育等多个场景,大幅提升数据处理效率与洞察深度。用户可通过自然语言配置,快速完成高级数据分析与处理,无需额外部署调试。立即申请测试资格,体验智能化数据处理!
|
1天前
|
人工智能 自然语言处理 搜索推荐
年终盘点AIGC:生成式AI一路生花,互联网开始步入大模型时代
本文探讨了自ChatGPT发布以来,生成式AI对互联网和人们生活带来的深刻影响。文章分析了从“移动互联网”到“智能互联网”的转变,强调AIGC如何通过自然语言交互提升信息获取效率,并在内容创作等领域展现巨大潜力。同时,作者指出当前AIGC应用开发存在的问题,如过度聚焦对话助手,建议开发者探索更深层次的场景结合。最后,文章展望了AIGC未来可能的法律监管及现象级产品的出现,并鼓励普通人善用AIGC工具提升效率,保持创造力以适应时代变化。
12 0
|
4月前
|
数据可视化 前端开发 测试技术
接口测试新选择:Postman替代方案全解析
在软件开发中,接口测试工具至关重要。Postman长期占据主导地位,但随着国产工具的崛起,越来越多开发者转向更适合中国市场的替代方案——Apifox。它不仅支持中英文切换、完全免费不限人数,还具备强大的可视化操作、自动生成文档和API调试功能,极大简化了开发流程。
|
1月前
|
SQL 安全 测试技术
2025接口测试全攻略:高并发、安全防护与六大工具实战指南
本文探讨高并发稳定性验证、安全防护实战及六大工具(Postman、RunnerGo、Apipost、JMeter、SoapUI、Fiddler)选型指南,助力构建未来接口测试体系。接口测试旨在验证数据传输、参数合法性、错误处理能力及性能安全性,其重要性体现在早期发现问题、保障系统稳定和支撑持续集成。常用方法包括功能、性能、安全性及兼容性测试,典型场景涵盖前后端分离开发、第三方服务集成与数据一致性检查。选择合适的工具需综合考虑需求与团队协作等因素。
169 24
|
1月前
|
SQL 测试技术
除了postman还有什么接口测试工具
最好还是使用国内的接口测试软件,其实国内替换postman的软件有很多,这里我推荐使用yunedit-post这款接口测试工具来代替postman,因为它除了接口测试功能外,在动态参数的支持、后置处理执行sql语句等支持方面做得比较好。而且还有接口分享功能,可以生成接口文档给团队在线浏览。
112 2
|
3月前
|
JSON 前端开发 测试技术
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
158 10
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
|
3月前
|
JSON 前端开发 API
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
129 5
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
|
2月前
|
存储 JSON API
Python测试淘宝店铺所有商品接口的详细指南
本文详细介绍如何使用Python测试淘宝店铺商品接口,涵盖环境搭建、API接入、签名生成、请求发送、数据解析与存储、异常处理等步骤。通过具体代码示例,帮助开发者轻松获取和分析淘宝店铺商品数据,适用于电商运营、市场分析等场景。遵守法规、注意调用频率限制及数据安全,确保应用的稳定性和合法性。

热门文章

最新文章