当前位置: 首页 > ops >正文

[RestGPT] docs | RestBench评估 | 配置与环境

链接:RestGPT: Connecting Large Language Models with Real-World RESTful APIs

在这里插入图片描述

RESTful 应用传送:

  • [Backlog] 命令行CLI vs Web界面及服务端 | CI/CD
  • [快乐学坊management_1] With Cursor | Mysql设计 | 服务接口设计与开发
  • [Agent开发平台] API网关 | 业务领域 | DTO格式 | 分页令牌

docs:RestGPT

RestGPT项目是一个智能助手,它通过RESTful API将大语言模型与现实世界应用连接起来

它能智能地

  • 复杂的用户请求分解为多个步骤
  • 利用详细的API文档找到正确的API调用方式
  • 执行这些调用
  • 然后将技术性的API响应转换易于理解的自然语言,从而完成原始查询。

可视化

在这里插入图片描述

章节列表

  1. 配置与环境
  2. OpenAPI规范(OAS)
  3. RestGPT智能体
  4. 规划器
  5. API选择器
  6. 调用器
  7. 响应解析器

RestGPT: Connecting Large Language Models with Real-World RESTful APIs

本项目旨在构建一个基于大语言模型的自主智能体RestGPT,用于控制真实世界应用(如电影数据库和音乐播放器)。

为实现这一目标,我们将大语言模型与RESTful API连接,并解决了规划、API调用和响应解析等实际挑战

为全面评估RestGPT性能,提出了RestBench基准测试,包含两个真实场景和带黄金解决路径的人工标注指令。

RestGPT架构

RestGPT采用从粗到细的迭代式在线规划框架,通过执行器调用RESTful API。以下是系统概览:

在这里插入图片描述

核心模块

在这里插入图片描述

  • 规划器(Planner):生成当前步骤的自然语言子任务
  • API选择器(API selector):将高层子任务映射为细粒度API调用计划
  • 执行器(Executor):执行API调用计划
  • 调用器(Caller):根据API计划和文档组织API参数
  • 解析器(Parser):基于响应模式生成解析API响应的Python代码

典型示例

使用TMDB电影数据库查询索菲亚·科波拉执导的电影数量:

请添加图片描述

基准数据

传送:[LLM 应用评估] 改进AI应用 | LLMs & Embeddings | Langchain 封装器

在这里插入图片描述

RestGPT则推出了RestBench来评估RestGPT性能。

该高质量测试集包含TMDB电影数据库和Spotify音乐播放器两大场景,收集了真实用户指令及人工标注的黄金解决路径。

TMDB示例

指令:查询今日最热门电影的导演是谁?
黄金解决路径:

  1. GET /trending/{media_type}/{time_window}
  2. GET /movie/{movie_id}/credits

Spotify示例

指令:创建一个包含3首Mariah Carey歌曲的播放列表,命名为’Love Mariah’
黄金解决路径:

  1. GET /search
  2. GET /me
  3. POST /users/{user_id}/playlists
  4. POST /playlists/{playlist_id}/tracks

数据统计

下表展示不同长度解决路径的指令数量分布:

场景API数量1步2步3步4步平均长度总计
TMDB545662722.3100
Spotify408182292.657

环境配置

  1. 安装依赖包:
pip install langchain colorama tiktoken spotipy openai
mkdir logs
  1. 获取API密钥:
  • OpenAI密钥:从OpenAI平台获取
  • TMDB密钥:访问TMDB开发者文档
  • Spotify密钥:参考Spotify Web API文档
  1. 将密钥填入config.yaml配置文件

  2. (可选)初始化Spotify环境
    ⚠️ 警告:此操作将清空Spotify账户数据!

python init_spotify.py

运行方式

使用以下命令启动交互模式:

python run.py

随后输入场景类型(TMDB/Spotify)和指令文本。

我们还提供批量执行RestBench的脚本:

# TMDB场景
python run_tmdb.py# Spotify场景(需提前打开设备上的Spotify应用)
python run_spotify.py

run_tmdb.py会顺序执行RestBench-TMDB所有指令。对于RestBench-Spotify,需要手动修改query_idx参数来指定执行的指令序号。


第1章:配置与环境

欢迎来到RestGPT的精彩世界🐻‍❄️

我们可以把RestGPT想象成一个超级智能助手,能够与众多在线服务对话,比如从TMDB获取电影信息或在Spotify上管理播放列表。

但就像飞行员起飞前需要"飞行检查清单"一样,RestGPT在开始连接这些服务之前也需要知道一些关键信息。这就是我们所说的配置与环境

核心理念

想象你即将操控一台非常酷的智能无人机。

在它起飞并执行任何有用操作之前,你需要告诉它允许飞行的区域、连接控制站的特殊密码以及其他重要设置

没有这些,它只是一块昂贵的金属

RestGPT也是如此。它需要与其他在线服务通信,比如OpenAI(作为它的"大脑")、TMDB(获取电影信息)和Spotify(管理音乐)。

为了安全正确地实现这一点,它需要每个服务的特定"密钥"和"密码"。

提供所有这些设置的过程称为配置,而让程序能够轻松找到这些设置的方式就是建立它的环境

关键概念

前文传送:如何免费配置各类AI API_Key?(附接入后测试)

让我们分解RestGPT世界中"配置"和"环境"的含义:

  1. 配置

    • 是什么? 这些是程序运行所需的设置,通常是敏感信息。对RestGPT来说,主要是"API密钥"和"客户端密钥"。可以把API Key看作是一个独特的"密码",它授予程序使用某项服务(如OpenAI或TMDB)的权限。
    • 为什么重要?
      • 访问权限没有这些密钥,RestGPT无法连接到服务。就像有车但没有钥匙启动它
      • 安全性:我们不希望将个人密钥硬编码到程序的主代码中。如果共享代码,密钥就会暴露!配置文件将这些敏感细节分开保存,更加安全。
  2. 环境

    • 是什么? 这指的是运行程序时可用的变量集合。当RestGPT读取配置密钥时,通常会将其放入这些"环境变量"中。
    • 为什么重要? 一旦设置进入"环境",RestGPT程序的任何部分都可以轻松访问它,而无需直接传递。就像把常用工具放在所有工人都能拿到的工具箱里

如何准备RestGPT的"飞行检查清单"

RestGPT使用名为config.yaml的文件存储所有这些重要设置。

yaml是一种简单、人性化的设置记录方式。

  1. 找到config.yaml:在RestGPT项目的主文件夹中查找名为config.yaml的文件。

  2. 填写密钥:用文本编辑器打开config.yaml。你会看到类似以下内容:

    # config.yaml
    openai_api_key: 
    tmdb_access_token: spotipy_client_id: 
    spotipy_client_secret: 
    spotipy_redirect_uri: 
    

    你需要用实际的密钥和令牌替换空白处。

    • openai_api_key:从OpenAI账户获取(平台 -> API密钥)。
    • tmdb_access_token:从TMDB开发者账户获取。
    • spotipy_client_idspotipy_client_secretspotipy_redirect_uri:从Spotify开发者仪表板获取。对于spotipy_redirect_uri,本地开发常用http://localhost:8888/callback

    重要提示:填写后的config.yaml可能看起来像这样(但使用你的实际密钥):

    # config.yaml (示例,使用虚拟值 - 替换为你的真实密钥)
    openai_api_key: sk-abcdefghijklmnopqrstuvwxyz1234567890
    tmdb_access_token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.xyz...
    spotipy_client_id: a1b2c3d4e5f6g7h8i9j0
    spotipy_client_secret: k1l2m3n4o5p6q7r8s9t0
    spotipy_redirect_uri: http://localhost:8888/callback 
    

    填写完这些详细信息后,保存config.yaml文件。现在RestGPT的"飞行检查清单"已准备就绪!

RestGPT如何使用你的配置(底层原理)

让我们看看RestGPT如何读取这些设置并使其可用。

概述这个过程:

在这里插入图片描述

现在,让我们看看实现这一功能的简化代码。

1. 读取config.yaml

RestGPT使用一个名为PyYAML的特殊工具来读取config.yaml文件。这在多个脚本中实现,如run.pyinit_spotify.pyrun_spotify.pyrun_tmdb.py。以下是run.py中的一小段代码:

# 来自run.py
import yaml
import osdef main():# 从config.yaml加载设置# 可以想象为打开"检查清单"文件config = yaml.load(open('config.yaml', 'r'), Loader=yaml.FullLoader)# ... 更多使用这些设置的代码

解释yaml.load()函数读取config.yaml文件。就像翻阅检查清单的页面。执行这行代码后,config变量以Python理解的格式(字典,类似于键值对列表)保存所有密钥。

2. 设置环境变量:

config.yaml读取密钥后,RestGPT将这些值放入操作系统的环境变量中。这使得程序可以安全地全局访问它们。

# 来自run.py
import yaml
import os # 这个模块帮助与操作系统交互def main():config = yaml.load(open('config.yaml', 'r'), Loader=yaml.FullLoader)# 将它们设为"环境变量"# 就像告诉整个系统:"嘿,这是OpenAI API密钥!"os.environ["OPENAI_API_KEY"] = config['openai_api_key']os.environ["TMDB_ACCESS_TOKEN"] = config['tmdb_access_token']os.environ['SPOTIPY_CLIENT_ID'] = config['spotipy_client_id']os.environ['SPOTIPY_CLIENT_SECRET'] = config['spotipy_client_secret']os.environ['SPOTIPY_REDIRECT_URI'] = config['spotipy_redirect_uri']# 现在,RestGPT的任何部分都可以使用os.environ.get("KEY_NAME")访问这些密钥# ... main()函数的其余部分

解释:Python中的os.environ对象让你可以与操作系统的环境变量交互。通过为os.environ["OPENAI_API_KEY"]等键赋值,我们使该密钥对运行中的程序全局可用。这是处理凭证的标准且安全的做法。

结论

我们已经成功学习了RestGPT如何通过设置配置和环境来准备其重要的"飞行检查清单"。

现在知道了config.yaml是存放秘密密钥的地方,以及RestGPT如何读取它们并将其作为环境变量提供。有了正确的密钥加载,RestGPT现在可以与世界对话啦

但知道如何对话还不够;RestGPT还需要知道可以谈论什么以及如何构建这些对话。这就是OpenAPI规范(OAS)的作用,我们将在下一章探讨!

下一章:OpenAPI规范(OAS)

http://www.xdnf.cn/news/18327.html

相关文章:

  • 阿里云的centos8 服务器安装MySQL 8.0
  • 【OpenGL】LearnOpenGL学习笔记13 - 深度测试、模板测试
  • Linux CentOS 安装 .net core 3.1
  • 1. 准备工作---数据分析编程 - 从入门到精通
  • 密码学——对称加密, 非对称加密和CA
  • 基于SpringBoot的流浪动物领养管理系统【2026最新】
  • 常见的端口扫描
  • 常德二院全栈国产化信创项目:开启医疗新质生产力的“头雁”之旅
  • Android 定位技术全解析:从基础实现到精准优化
  • 数据大屏全链路质量保障测试
  • 消息中间件(RocketMQ+RabbitMQ+Kafka)
  • C++手撕LRU
  • RocketMQ 消息消费 单个消费和批量消费配置实现对比(Springboot),完整实现示例对比
  • 链表-143.重排链表-力扣(LeetCode)
  • SQL视图、存储过程和触发器
  • npm全局安装后,cmd命令行可以访问,vscode访问报错
  • Django REST框架核心:GenericAPIView详解
  • GitHub Push 认证失败 fatal Authentication failed
  • OceanBase 分区裁剪(Partition Pruning)原理解读
  • Binlog Server守护MySQL数据0丢失
  • 基于Pytochvideo训练自己的的视频分类模型
  • python中view把矩阵维度降低的时候是什么一个排序顺序
  • 机器学习——数据清洗
  • 【论文阅读】Multi-metrics adaptively identifies backdoors in Federated Learning
  • Linux 文本处理与 Shell 编程笔记:正则表达式、sed、awk 与变量脚本
  • 本地文件上传到gitee仓库的详细步骤
  • Excel表格复制到word中格式错乱
  • Nginx 的完整配置文件结构、配置语法以及模块详解
  • 【学习笔记】大话设计模式——一些心得及各设计模式思想记录
  • Vue3全局配置Loading的完整指南:从基础到实战