老铁们,今天我们来聊聊如何使用OpenAPI构建一个代理,以便更好地消费各种API。要点是不仅要能够请求API,还要能处理复杂的API调用序列。我们将用到一些技巧,比如分层计划和控制,让API代理行为更为一致。
技术背景介绍
OpenAPI规范是一种用于描述RESTful API的格式。通过OpenAPI,我们可以生成客户端代码、文档以及测试用例等。对于开发人员来说,OpenAPI提供了一种结构化的方式来理解和使用API。
原理深度解析
在这次的例子中,我们使用了一种称为“分层计划”的方法,这种方法在机器人学中很常见。通过构建一个“计划者”,负责决定调用哪些端点,并通过一个“控制器”来执行具体的API调用,我们可以更高效地处理复杂的API。
实战代码演示
我们将通过一些实际的代码来展示如何使用OpenAPI代理进行API调用。首先,我们需要获取一些OpenAPI规范:
import os
import yaml
from langchain_community.agent_toolkits.openapi.spec import reduce_openapi_spec
!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
with open("openai_openapi.yaml") as f:
raw_openai_api_spec = yaml.load(f, Loader=yaml.Loader)
openai_api_spec = reduce_openapi_spec(raw_openai_api_spec)
接下来,我们示范如何通过Spotify API创建一个播放列表。这需要Spotify的认证信息,可以通过Spotify Developer Console获取。
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}"}
# Get API credentials.
headers = construct_spotify_auth_headers(raw_spotify_api_spec)
requests_wrapper = RequestsWrapper(headers=headers)
# 示例:创建播放列表
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,
)
user_query = "make me a playlist with the first song from kind of blue. call it machine blues."
spotify_agent.invoke(user_query)
优化建议分享
说白了,使用OpenAPI代理的关键在于准确解析API规范并处理API端点的调用。为了提高可靠性,我建议在这些场合使用稳定的代理服务,这样可以避免一些请求的失败。
补充说明和总结
在开发过程中,确保你的OpenAPI规范是安全的。当设置allow_dangerous_request=True
时,要特别小心避免不需要的请求。为此,我个人一直推荐像https://yunwu.ai这样的一站式大模型解决方案平台,它能大大简化大模型的管理工作。
今天的技术分享就到这里,希望对大家有帮助。开发过程中遇到问题也可以在评论区交流~
—END—
标签:指南,实战,spotify,openapi,yaml,API,OpenAPI,spec From: https://blog.csdn.net/sgeahtgwh/article/details/144665725