[Feature] Add GraphQL Query Tool (#4409)

# Add GraphQL Query Support

This PR introduces a GraphQL API Wrapper tool that allows LLM agents to
query GraphQL databases. The tool utilizes the httpx and gql Python
packages to interact with GraphQL APIs and provides a simple interface
for running queries with LLM agents.

@vowelparrot

---------

Co-authored-by: Dev 2049 <dev.dev2049@gmail.com>
This commit is contained in:
Roma
2023-05-15 18:06:12 -03:00
committed by GitHub
parent 49ce5ce1ca
commit cb802edf75
9 changed files with 347 additions and 8 deletions

View File

@@ -0,0 +1,32 @@
import json
import pytest
import responses
from langchain.utilities.graphql import GraphQLAPIWrapper
TEST_ENDPOINT = "http://testserver/graphql"
# Mock GraphQL response for testing
MOCK_RESPONSE = {
"data": {"allUsers": [{"id": 1, "name": "Alice", "email": "alice@example.com"}]}
}
@pytest.fixture
def graphql_wrapper() -> GraphQLAPIWrapper:
return GraphQLAPIWrapper(
graphql_endpoint=TEST_ENDPOINT,
custom_headers={"Authorization": "Bearer testtoken"},
)
@responses.activate
def test_run(graphql_wrapper: GraphQLAPIWrapper) -> None:
responses.add(responses.POST, TEST_ENDPOINT, json=MOCK_RESPONSE, status=200)
query = "query { allUsers { id, name, email } }"
result = graphql_wrapper.run(query)
expected_result = json.dumps(MOCK_RESPONSE, indent=2)
assert result == expected_result