[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
响应转换
回易于理解的自然语言,从而完成原始查询。
可视化
章节列表
- 配置与环境
- OpenAPI规范(OAS)
- RestGPT智能体
- 规划器
- API选择器
- 调用器
- 响应解析器
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示例
指令:查询今日最热门电影的导演是谁?
黄金解决路径:
- GET /trending/{media_type}/{time_window}
- GET /movie/{movie_id}/credits
Spotify示例
指令:创建一个包含3首Mariah Carey歌曲的播放列表,命名为’Love Mariah’
黄金解决路径:
- GET /search
- GET /me
- POST /users/{user_id}/playlists
- POST /playlists/{playlist_id}/tracks
数据统计
下表展示不同长度解决路径的指令数量分布:
场景 | API数量 | 1步 | 2步 | 3步 | 4步 | 平均长度 | 总计 |
---|---|---|---|---|---|---|---|
TMDB | 54 | 5 | 66 | 27 | 2 | 2.3 | 100 |
Spotify | 40 | 8 | 18 | 22 | 9 | 2.6 | 57 |
环境配置
- 安装依赖包:
pip install langchain colorama tiktoken spotipy openai
mkdir logs
- 获取API密钥:
- OpenAI密钥:从OpenAI平台获取
- TMDB密钥:访问TMDB开发者文档
- Spotify密钥:参考Spotify Web API文档
-
将密钥填入config.yaml配置文件
-
(可选)初始化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世界中"配置"和"环境"的含义:
-
配置:
- 是什么? 这些是程序运行所需的设置,通常是敏感信息。对RestGPT来说,主要是"API密钥"和"客户端密钥"。可以把
API Key
看作是一个独特的"密码",它授予程序使用某项服务(如OpenAI或TMDB)的权限。 - 为什么重要?
- 访问权限:
没有这些密钥,RestGPT无法连接到服务
。就像有车但没有钥匙启动它 - 安全性:我们不希望将个人密钥硬编码到程序的主代码中。如果共享代码,密钥就会暴露!配置文件将这些敏感细节分开保存,更加安全。
- 访问权限:
- 是什么? 这些是程序运行所需的设置,通常是敏感信息。对RestGPT来说,主要是"API密钥"和"客户端密钥"。可以把
-
环境:
- 是什么? 这指的是运行程序时可用的变量集合。当RestGPT读取配置密钥时,通常会将其放入这些"环境变量"中。
- 为什么重要? 一旦设置进入"环境",RestGPT程序的任何部分都可以轻松访问它,而无需直接传递。就像把常用工具放在所有工人都能拿到的工具箱里。
如何准备RestGPT的"飞行检查清单"
RestGPT使用名为config.yaml
的文件存储所有这些重要设置。
yaml
是一种简单、人性化的设置记录方式。
-
找到
config.yaml
:在RestGPT项目的主文件夹中查找名为config.yaml
的文件。 -
填写密钥:用文本编辑器打开
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_id
、spotipy_client_secret
、spotipy_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.py
、init_spotify.py
、run_spotify.py
和run_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)