12#include <asio/executor_work_guard.hpp>
13#include <asio/io_context.hpp>
19namespace neograph::async {
class ConnPool; }
21namespace neograph::llm {
43 std::string base_url =
"https://api.openai.com";
44 std::string default_model =
"gpt-4o-mini";
55 int timeout_seconds = 60;
63 static std::unique_ptr<OpenAIProvider>
create(
const Config& config);
85 asio::awaitable<ChatCompletion>
101 asio::awaitable<ChatCompletion>
104 std::string
get_name()
const override {
return "openai"; }
115 std::unique_ptr<asio::io_context> http_io_;
116 std::optional<asio::executor_work_guard<asio::io_context::executor_type>> http_work_;
117 std::thread http_thread_;
118 std::unique_ptr<async::ConnPool> conn_pool_;
NEOGRAPH_API export/import macro for shared-library builds.
Abstract base class for LLM providers.
LLM provider for OpenAI-compatible APIs.
asio::awaitable< ChatCompletion > invoke(const CompletionParams ¶ms, StreamCallback on_chunk) override
v1.0 single-dispatch override (Candidate 6 PR6).
static std::unique_ptr< OpenAIProvider > create(const Config &config)
Create an OpenAI provider instance.
asio::awaitable< ChatCompletion > complete_async(const CompletionParams ¶ms) override
Async completion — dispatches over the owned ConnPool so successive calls reuse a kept-alive TCP+TLS ...
ChatCompletion complete_stream(const CompletionParams ¶ms, const StreamCallback &on_chunk) override
Sync completion is inherited from Provider::complete(), which drives complete_async via neograph::asy...
~OpenAIProvider()
Destructor — shuts down the long-lived HTTP loop + worker thread held alongside the ConnPool.
std::string get_name() const override
Get the provider name (e.g., "openai", "claude").
static std::shared_ptr< Provider > create_shared(const Config &config)
Same as create but returns a shared_ptr<Provider>.
Abstract LLM provider interface.
std::function< void(const std::string &chunk)> StreamCallback
Callback invoked per token during streaming completion.
LLM completion response including the message and token usage.
Parameters for an LLM completion request.
Configuration for OpenAI-compatible API connections.
std::string api_key
API key for authentication.