Anthropic создали протокол MCP для подключения апишек к LLM, и если почитать их блог, то теперь им приходится изобретать способы, как обойти перегруженность этого формата.
О каких проблемах MCP я говорю:
1. LLM видит, какие «ручки» можно вызвать, но не видит, что возвращается, пока не вызовет
2. LLM не может управлять тем, что именно она хочет получить. В MCP мы вынуждены отдавать все, что есть, как в REST API, забивая контекст ненужной информацией
3. Чтобы получить достаточный объем данных для решения своей задачи, LLM может требоваться сделать N запросов.
Все это про то, что MCP очень негибкий для использования LLM. При этом есть прекрасный формат GraphQL, в котором предусмотрено решение всех этих проблем:
📜 GQL-схема
Есть gql-схема, по которой LLM может увидеть, какие «ручки» она может дергать и какие данные можно получить. Все описано с точностью до полей
⚙️ GQL query syntax
LLM может точно указать, какие поля она хочет получить. Представьте, что LLM нужно получить заказы с их стоимостью. Объект заказа легко может содержать 100+ полей, а LLM для ее задачи нужно 4: номер, дата оформления, статус и стоимость. Экономия контекста может быть до 95%.
orders {
number
createdAt
status { name }
totalSum {
amount
currency
}
}
🌲 Nested objects querying
Еще одной киллер-фичой GQL в контексте LLM является возможность за один запрос вытаскивать вложенные данные. Особенно, когда речь про 1+N запросы. Представьте что LLM получила список заказов, и для каждого заказа ей нужно еще получить связные с ними задачи на менеджеров. В GQL это можно описать в одном query. Тем самым мы сильно экономим на количестве вызовов.
orders {
number
createdAt
tasks {
title
deadline
manager { id name }
}
}
А что вы думаете про работу с MCP и GQL в AI-агентах?
🔗 Инженерия и AI | Ilyas Salikhov
