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

[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.dtcms.com/a/343527.html

相关文章:

  • 【51单片机】【protues仿真】基于51单片机16键电子琴系统
  • 【GPT入门】第51课 Conda环境迁移教程:将xxzh环境从默认路径迁移到指定目录
  • OpenAI 开源模型 gpt-oss 是在合成数据上训练的吗?一些合理推测
  • Mysql事务特性
  • python实现根据接口返回数据生成报告和图表
  • (第二十期下)超链接的更多分类
  • 医疗元宇宙:破解医疗困局与数字化变革路径
  • gRPC 服务发现选型对比
  • 基于STM32单片机的二维码识别物联网OneNet云仓库系统
  • 最小生成树的普利姆算法和克鲁斯卡尔算法
  • ABP vNext 速率限制在多租户场景落地
  • Leetcode 深度优先搜索 (13)
  • Leetcode 深度优先搜索 (12)
  • 20250821 圆方树总结
  • 通信基础理论
  • C语言基础习题——01
  • plantsimulation小知识25.08.21 对话框的使用方法
  • 深圳大学-计算机信息管理课程实验 C++ 自考模拟题
  • 【LeetCode】18. 四数之和
  • C语言:字符函数与字符串函数(2)
  • ORA-16331: container is not open ORA-06512: at “SYS.DBMS_LOGMNR“
  • Hexo 博客图片托管:告别本地存储,用 PicGo + GitHub 打造高速稳定图床
  • ArcMap 数据框裁剪(Data Frame Clip)操作教程
  • Service方法事务失效的原因是什么?
  • 2025-08-21 Python进阶8——命名空间作用域
  • PiscCode实现MediaPipe 的人体姿态识别:三屏可视化对比实现
  • 算法题Day4
  • WaitForSingleObject函数详解
  • JavaScript 性能优化实战技术文章大纲
  • C++手撕LRU