NeoGraph 0.10.0
A C++17 Graph Agent Engine Library — LangGraph for C++
Loading...
Searching...
No Matches
provider.h
Go to the documentation of this file.
1
8#pragma once
9
10#include <neograph/api.h>
11#include <neograph/types.h>
12
13#include <asio/awaitable.hpp>
14
15#include <functional>
16#include <memory>
17#include <stdexcept>
18#include <string>
19
20namespace neograph::graph { class CancelToken; }
21
22namespace neograph {
23
37class NEOGRAPH_API RateLimitError : public std::runtime_error {
38public:
39 RateLimitError(const std::string& message, int retry_after_seconds = -1)
40 : std::runtime_error(message)
41 , retry_after_seconds_(retry_after_seconds) {}
42
44 int retry_after_seconds() const noexcept { return retry_after_seconds_; }
45
46private:
47 int retry_after_seconds_;
48};
49
52using StreamCallback = std::function<void(const std::string& chunk)>;
53
58 std::string model;
59 std::vector<ChatMessage> messages;
60 std::vector<ChatTool> tools;
61 float temperature = 0.7f;
62 int max_tokens = -1;
63
77 std::shared_ptr<graph::CancelToken> cancel_token;
78
116};
117
127class NEOGRAPH_API Provider {
128 public:
129 virtual ~Provider() = default;
130
150 [[deprecated("v1.0 single-dispatch: use invoke(params, nullptr) — see ROADMAP_v1.md Candidate 6")]]
152
175 [[deprecated("v1.0 single-dispatch: use invoke(params, nullptr) — see ROADMAP_v1.md Candidate 6")]]
176 virtual asio::awaitable<ChatCompletion>
178
200 [[deprecated("v1.0 single-dispatch: use invoke(params, on_chunk) — see ROADMAP_v1.md Candidate 6")]]
202 const StreamCallback& on_chunk);
203
261 [[deprecated("v1.0 single-dispatch: use invoke(params, on_chunk) — see ROADMAP_v1.md Candidate 6")]]
262 virtual asio::awaitable<ChatCompletion>
264 const StreamCallback& on_chunk);
265
310 virtual asio::awaitable<ChatCompletion>
311 invoke(const CompletionParams& params, StreamCallback on_chunk = nullptr);
312
334 virtual std::string get_name() const = 0;
335};
336
337} // namespace neograph
NEOGRAPH_API export/import macro for shared-library builds.
Abstract base class for LLM providers.
Definition provider.h:127
virtual asio::awaitable< ChatCompletion > complete_async(const CompletionParams &params)
Perform an LLM completion as a coroutine.
virtual std::string get_name() const =0
Get the provider name (e.g., "openai", "claude").
virtual ChatCompletion complete(const CompletionParams &params)
Perform a synchronous LLM completion.
virtual ChatCompletion complete_stream(const CompletionParams &params, const StreamCallback &on_chunk)
Perform a streaming LLM completion.
virtual asio::awaitable< ChatCompletion > complete_stream_async(const CompletionParams &params, const StreamCallback &on_chunk)
Async streaming completion.
virtual asio::awaitable< ChatCompletion > invoke(const CompletionParams &params, StreamCallback on_chunk=nullptr)
Single-dispatch async-streaming completion (v1.0 canonical).
Thrown by a Provider when an upstream API returned HTTP 429 (rate limit exceeded).
Definition provider.h:37
int retry_after_seconds() const noexcept
Seconds to wait per the upstream, or -1 if unknown.
Definition provider.h:44
std::function< void(const std::string &chunk)> StreamCallback
Callback invoked per token during streaming completion.
Definition provider.h:52
LLM completion response including the message and token usage.
Definition types.h:60
Parameters for an LLM completion request.
Definition provider.h:57
json extra_fields
Per-call body field bindings (issue #33, v0.8+).
Definition provider.h:115
float temperature
Sampling temperature (0.0 = deterministic, 1.0 = creative).
Definition provider.h:61
std::vector< ChatTool > tools
Available tools the LLM may call.
Definition provider.h:60
int max_tokens
Maximum output tokens. -1 means provider default.
Definition provider.h:62
std::shared_ptr< graph::CancelToken > cancel_token
Optional cancel handle (v0.3+).
Definition provider.h:77
std::string model
Model name to use (e.g., "gpt-4o-mini").
Definition provider.h:58
std::vector< ChatMessage > messages
Conversation history.
Definition provider.h:59
Foundation types for NeoGraph: messages, tool calls, and LLM completions.