NeoGraph 0.16.0
A C++20 Graph Agent Engine Library — LangGraph for C++
Loading...
Searching...
No Matches
openinference.h
Go to the documentation of this file.
1
34#pragma once
35
36#include <neograph/api.h>
39#include <neograph/provider.h>
40
41#include <functional>
42#include <memory>
43#include <string>
44#include <string_view>
45
46namespace neograph::observability {
47
69class NEOGRAPH_API OpenInferenceTracerSession {
70public:
71 using ChildSpanStarter =
72 std::function<std::unique_ptr<Span>(Tracer&, std::string_view)>;
73
76
79
80 // Non-copyable, movable. Move assignment closes the target first.
85
105 void close();
106
110 Span* current_parent() const noexcept;
111
114 ChildSpanStarter child_span_starter() const;
115
116private:
117 struct Impl;
118 std::unique_ptr<Impl> impl_;
119
120 // NEOGRAPH_API on the friend declaration MUST match the linkage
121 // of the free function declared below — without it MSVC reports
122 // C2375 ("redefinition; different linkage") because the friend
123 // is taken as having default (no-export) linkage while the real
124 // declaration is __declspec(dllexport). See
125 // feedback_neograph_api_discipline (memory) for the same trap on
126 // engine sub-libraries.
127 friend NEOGRAPH_API OpenInferenceTracerSession openinference_tracer(
128 Tracer&, std::string, std::string);
129};
130
137NEOGRAPH_API OpenInferenceTracerSession openinference_tracer(
138 Tracer& tracer,
139 std::string root_name = "graph.run",
140 std::string node_span_prefix = "node.");
141
156class NEOGRAPH_API OpenInferenceProvider : public Provider {
157public:
166 OpenInferenceProvider(std::shared_ptr<Provider> inner,
167 Tracer& tracer,
168 std::function<Span*()> parent_lookup = nullptr,
169 std::string span_name = "llm.complete");
170
173 OpenInferenceProvider(std::shared_ptr<Provider> inner,
174 Tracer& tracer,
175 const OpenInferenceTracerSession& session,
176 std::string span_name = "llm.complete");
177 ~OpenInferenceProvider() override;
178
179 PreparedProviderRequest prepare(ProviderRequest request) override;
180 std::string_view family() const noexcept override;
181 bool host_pumped() const noexcept override;
182
183 std::string get_name() const override;
184
185protected:
187 std::shared_ptr<sp::runtime::Client> endpoint_runtime() const override;
188
189private:
190 struct Impl;
191 std::unique_ptr<Impl> impl_;
192};
193
194} // namespace neograph::observability
NEOGRAPH_API export/import macro for shared-library builds.
Capability identity plus a single prepared, owned operation contract.
Definition provider.h:387
Provider wrapper that emits OpenInference LLM spans.
OpenInferenceProvider(std::shared_ptr< Provider > inner, Tracer &tracer, std::function< Span *()> parent_lookup=nullptr, std::string span_name="llm.complete")
OpenInferenceProvider(std::shared_ptr< Provider > inner, Tracer &tracer, const OpenInferenceTracerSession &session, std::string span_name="llm.complete")
Safe parent-aware overload.
RAII session returned by openinference_tracer.
graph::GraphStreamCallback cb
Engine event callback. Pass to engine.run_stream().
Opaque per-request span; lifetime is unique_ptr.
Definition tracer.h:45
Adapter facade for a tracing backend.
Definition tracer.h:114
Graph engine type definitions: channels, edges, nodes, events, and control flow.
std::function< void(const GraphEvent &)> GraphStreamCallback
Callback for receiving graph execution events.
Definition types.h:881
Portable request controls remain the SDK's declared, family-specific fields.
Definition provider.h:190
Dep-free abstract Tracer / Span interface.