PL

palm1r/llmqore

Developer tools

Эта страница переведена автоматически. Технические детали смотрите в оригинале. Открыть оригинал

51 stars 14 forks Качество 75 Тренд 27MIT

Библиотека Qt C++ для работы с поставщиками AI/LLM и MCP

Обзор

Библиотека Qt/C++ для облачных и локальных LLM-провайдеров, MCP-клиентов и серверов и ACP-агентов. Потоковые дельты поступают в виде сигналов Qt на собственной нити объекта, результаты асинхронизации как QFuture, собственность следует за QObject родитель-ребенок. Ссылки против Core, Network и Concurrent. - облачные и локальные: Claude, OpenAI Chat Completions, OpenAI Responses, Google AI, Mistral, DeepSeek, Qwen, Ollama, llama.cpp; потоковая передача или буферизация, изображения, рассуждения, использование токенов, отмена - ваш подкласс BaseTool, включенный цикл инструментов, закрытый QFuture, если хотите - - клиент и сервер через stdio, потоковый HTTP или устаревший SSE, совместное использование одного реестра инструментов; mcp-bridge CLI ставит множество серверов выше по течению за одну конечную точку - - одна история, переведенная в форму каждого провайдера, переносимая между ними - любой агент в реестре JSON; Или посмотрите, как он прибывает, что вы хотите в панели чата: Полученный несет весь ответ до сих пор; полученный кусок несет только новую дельту.

Обзор (машинный перевод)

Библиотека Qt/C++ для облачных и локальных LLM-провайдеров, MCP-клиентов и серверов и ACP-агентов. Потоковые дельты прибывают в качестве сигналов Qt на собственной нити объекта, результаты асинхронизации [[Т0]], право собственности следует [[Т1]] родитель-ребенок. Ссылки на [[Т2]], [[Т3]] и [4].

Что он делает

LLM REST API — облачный и локальный: Claude, OpenAI Chat Completions, OpenAI Responses, Google AI, Mistral, DeepSeek, Qwen, Ollama, llama.cpp; потоковая или буферизованная передача, изображения в, аргументация, использование токенов, отмена **Звонок инструмента ** — ваш подкласс BaseTool, включена петля инструментов, закрыта QFuture , если вы хотите MCP — клиент и сервер через stdio, потоковый HTTP или устаревший SSE, совместно использующий один реестр инструментов; mcp-bridge CLI помещает много серверов выше по течению за одну конечную точку Разговор — одна история, переведенная в форму каждого провайдера, переносимая между ними Хозяин ACP — любой агент в реестре JSON; корабли Claude Code и Codex

LLM REST API

Спросите и ждите ответа:

Или посмотрите, как он прибывает, что вы хотите в панели чата:

[[Т8]] несет весь ответ до сих пор; [[Т9]] несет только новый Дельта.

Эта страница переведена автоматически. Технические детали смотрите в оригинале.

README

Показан фрагмент оригинального README. Открыть оригинал.

LLMQore

Qt/C++ library for cloud and local LLM providers, MCP clients and servers, and ACP agents. Streaming deltas arrive as Qt signals on the object’s own thread, async results as QFuture, ownership follows QObject parent-child. Links against Core, Network and Concurrent.

What it does

  • LLM REST API — cloud and local: Claude, OpenAI Chat Completions, OpenAI Responses, Google AI, Mistral, DeepSeek, Qwen, Ollama, llama.cpp; streaming or buffered, images in, reasoning out, token usage, cancellation
  • Tool calling — your BaseTool subclass, tool loop included, gated by QFuture if you want
  • MCP — client and server over stdio, Streamable HTTP or legacy SSE, sharing one tool registry; mcp-bridge CLI puts many upstream servers behind one endpoint
  • Conversation — one history, translated into each provider’s shape, portable between them
  • ACP host — any agent in the JSON registry; ships Claude Code and Codex

LLM REST API

Ask and await the answer:

auto *client = new LLMQore::ClaudeClient(
    "https://api.anthropic.com", apiKey, "claude-sonnet-4-5", this);

client->askOnce("What is Qt?").then(this, [this](const LLMQore::CompletionInfo &result) {
    m_view->setPlainText(result.fullText);
});

Or watch it arrive, which is what you want in a chat panel:

connect(client, &LLMQore::BaseClient::accumulatedReceived,
        this, [this](const LLMQore::RequestID &, const QString &answer) {
    m_view->setPlainText(answer);
});

client->ask("What is Qt?");

accumulatedReceived carries the whole answer so far; chunkReceived carries only the new delta. Both are emitted on the client’s own thread, so a direct connection into a widget or model is safe.

→ Quick Start

Tool calling

Expose a function over data the provider cannot see — the open document, the current selection, a local database:

client->tools()->addTool(new SearchCurrentFileTool(client));

conversation.addUser("Where do we handle the timeout?");
client->ask(conversation);

The client drives the loop: the model requests the tool, executeAsync runs, the result is sent back, the model answers. setMaxToolContinuations() bounds it, ten rounds by default. toolStarted and toolResultReady report progress; setExecutionGate() gates each call behind a QFuture.

→ Quick Start · LLM clients

MCP

Using external tools

Tools from an MCP server enter the same registry and reach the model through the same tool-definition array:

client->tools()->addMcpServer({.name = "filesystem", .command = "npx",
Открыть полный README на GitHub

Установка

npx -y @modelcontextprotocol/server-filesystem /home/user
Новичок в MCP? Начните с руководства на mcpskill.org →

Конфигурация

{ "mcpServers": { "filesystem": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "/home/user"] } } }