文档API参考📓 教程🧑‍🍳 菜谱🤝 集成💜 Discord🎨 Studio
文档

OpenAPIConnector

OpenAPIConnector 是一个组件,充当 Haystack 生态系统与 OpenAPI 服务之间的接口。

pipeline 中的最常见位置在任何地方,在为 run 参数提供输入的组件之后
必需的初始化变量"openapi_spec": 服务的 OpenAPI 规范。可以是 URL、文件路径或原始字符串。
强制运行变量"operation_id": 要调用的 OpenAPI 规范中的 operationId。
输出变量“response”:REST 服务响应
API 参考Connectors (连接器)
GitHub 链接https://github.com/deepset-ai/haystack/blob/main/haystack/components/connectors/openapi.py

概述

OpenAPIConnector 是 Haystack 生态系统中的一个组件,允许直接调用 OpenAPI(以前称为 Swagger)规范中定义的 REST 端点。它充当 Haystack 管道和任何遵循 OpenAPI 标准的 REST API 之间的桥梁,支持动态方法调用、身份验证和参数处理。

要使用OpenAPIConnector,请确保您已安装openapi-llm 依赖项

pip install openapi-llm

OpenAPIServiceConnector 不同,后者与 LLM 配合使用,OpenAPIConnector 直接使用显式输入参数调用 REST 端点。

用法

单独使用

您可以初始化并单独使用OpenAPIConnector,方法是传递 OpenAPI 规范和其他参数

from haystack.utils import Secret
from haystack.components.connectors.openapi import OpenAPIConnector

connector = OpenAPIConnector(
    openapi_spec="https://bit.ly/serperdev_openapi",
    credentials=Secret.from_env_var("SERPERDEV_API_KEY"),
    service_kwargs={"config_factory": my_custom_config_factory}
)

response = connector.run(
    operation_id="search",
    arguments={"q": "Who was Nikola Tesla?"}
)

输出

OpenAPIConnector 返回一个包含服务响应的字典

{
    "response": { // here goes REST endpoint response JSON
    }
}

在 pipeline 中

OpenAPIConnector 可以集成到 Haystack 管道中以与 OpenAPI 服务进行交互。例如,您可以将OpenAPIConnector 连接到管道

from haystack import Pipeline
from haystack.components.connectors.openapi import OpenAPIConnector
from haystack.dataclasses.chat_message import ChatMessage
from haystack.utils import Secret

# Initialize the OpenAPIConnector
connector = OpenAPIConnector(
    openapi_spec="https://bit.ly/serperdev_openapi",
    credentials=Secret.from_env_var("SERPERDEV_API_KEY")
)

# Create a ChatMessage from the user
user_message = ChatMessage.from_user(text="Who was Nikola Tesla?")

# Define the pipeline
pipeline = Pipeline()
pipeline.add_component("openapi_connector", connector)

# Run the pipeline
response = pipeline.run(
    data={"openapi_connector": {"operation_id": "search", "arguments": {"q": user_message.text}}}
)

# Extract the answer from the response
answer = response.get("openapi_connector", {}).get("response", {})
print(answer)