18namespace neograph::llm {
49 int default_wait_seconds = 30;
50 int max_wait_seconds = 120;
59 int max_total_wait_seconds = 0;
68 static std::unique_ptr<RateLimitedProvider>
create(
69 std::shared_ptr<Provider> inner,
Config cfg);
72 static std::unique_ptr<RateLimitedProvider>
create(
73 std::shared_ptr<Provider> inner) {
74 return create(std::move(inner),
Config{});
82 asio::awaitable<ChatCompletion>
98 asio::awaitable<ChatCompletion>
106 std::shared_ptr<Provider> inner_;
NEOGRAPH_API export/import macro for shared-library builds.
Abstract base class for LLM providers.
Decorator that retries on RateLimitError according to its Retry-After hint.
static std::unique_ptr< RateLimitedProvider > create(std::shared_ptr< Provider > inner)
Convenience: build with default Config.
ChatCompletion complete_stream(const CompletionParams ¶ms, const StreamCallback &on_chunk) override
Streaming retry path remains synchronous — complete_stream() has no awaitable peer on Provider,...
asio::awaitable< ChatCompletion > invoke(const CompletionParams ¶ms, StreamCallback on_chunk) override
v1.0 single-dispatch override (Candidate 6 PR6).
static std::unique_ptr< RateLimitedProvider > create(std::shared_ptr< Provider > inner, Config cfg)
Build a decorator around an inner provider.
asio::awaitable< ChatCompletion > complete_async(const CompletionParams ¶ms) override
Async completion that retries on RateLimitError with a non- blocking asio::steady_timer sleep.
std::string get_name() const override
Get the provider name (e.g., "openai", "claude").
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 rate-limit handling.