跳到主要内容
GraphQL 是一种用于 API 的查询语言,也是一种用于针对您的数据执行这些查询的运行时。GraphQL 提供了您的 API 中数据的完整且易于理解的描述,赋予客户端精确地请求他们所需数据(不多不少)的能力,使得 API 随时间演变更加容易,并支持强大的开发者工具。
通过在提供给 Agent 的工具列表中包含 BaseGraphQLTool,您可以让您的 Agent 能够查询 GraphQL API 中的数据以满足您的任何目的。 本 Jupyter Notebook 演示了如何将 GraphQLAPIWrapper 组件与 Agent 一起使用。 在此示例中,我们将使用以下端点提供的公共 Star Wars GraphQL APIswapi-graphql.netlify.app/graphql 首先,您需要安装 httpxgql Python 包。
pip install httpx gql > /dev/null
Note: you may need to restart the kernel to use updated packages.
pip install -qU  langchain-community
Note: you may need to restart the kernel to use updated packages.
现在,让我们使用指定的星球大战 API 端点创建一个 BaseGraphQLTool 实例,并使用该工具初始化一个 Agent。
import os

os.environ["OPENAI_API_KEY"] = ""
from langchain_community.agent_toolkits.load_tools import load_tools

tools = load_tools(
    ["graphql"],
    graphql_endpoint="https://swapi-graphql.netlify.app/graphql",
)
from langchain.agents import create_agent


agent = create_agent("gpt-4.1-mini", tools)
现在,我们可以使用 Agent 对星球大战 GraphQL API 执行查询。让我们让 Agent 列出所有星球大战电影及其上映日期。
graphql_fields = """allFilms {
    films {
      title
      director
      releaseDate
      speciesConnection {
        species {
          name
          classification
          homeworld {
            name
          }
        }
      }
    }
  }

"""

suffix = "Search for the titles of all the stawars films stored in the graphql database that has this schema "

input_message = {
    "role": "user",
    "content": suffix + graphql_fields,
}

for step in agent.stream(
    {"messages": [input_message]},
    stream_mode="values",
):
    step["messages"][-1].pretty_print()
================================ Human Message =================================

Search for the titles of all the stawars films stored in the graphql database that has this schema allFilms {
    films {
      title
      director
      releaseDate
      speciesConnection {
        species {
          name
          classification
          homeworld {
            name
          }
        }
      }
    }
  }


================================== Ai Message ==================================
Tool Calls:
  query_graphql (call_tN5A0dBbfOMewuw8Yy13bYpW)
 Call ID: call_tN5A0dBbfOMewuw8Yy13bYpW
  Args:
    tool_input: query { allFilms { films { title } } }
================================= Tool Message =================================
Name: query_graphql

"{\n  \"allFilms\": {\n    \"films\": [\n      {\n        \"title\": \"A New Hope\"\n      },\n      {\n        \"title\": \"The Empire Strikes Back\"\n      },\n      {\n        \"title\": \"Return of the Jedi\"\n      },\n      {\n        \"title\": \"The Phantom Menace\"\n      },\n      {\n        \"title\": \"Attack of the Clones\"\n      },\n      {\n        \"title\": \"Revenge of the Sith\"\n      }\n    ]\n  }\n}"
================================== Ai Message ==================================

The titles of all the Star Wars films stored in the database are:
1. A New Hope
2. The Empire Strikes Back
3. Return of the Jedi
4. The Phantom Menace
5. Attack of the Clones
6. Revenge of the Sith

If you would like more information about any of these films, please let me know!

以编程方式连接这些文档到 Claude、VSCode 等,通过 MCP 获取实时答案。
© . This site is unofficial and not affiliated with LangChain, Inc.