forked from Archives/langchain
cb802edf75
# 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>
33 lines
841 B
Python
33 lines
841 B
Python
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
|