Entropic 2.11.1
Local-first agentic inference engine
Loading...
Searching...
No Matches
adapter_registry.cpp
Go to the documentation of this file.
1// SPDX-License-Identifier: Apache-2.0
19#include "adapter_registry.h"
20#include "gemma4_adapter.h"
21#include "generic_adapter.h"
22#include "nemotron3_adapter.h"
23#include "qwen35_adapter.h"
24#include "qwen36_adapter.h"
25
27
28#include <algorithm>
29#include <array>
30#include <functional>
31#include <string>
32#include <string_view>
33
34namespace entropic {
35
36namespace {
37auto logger = entropic::log::get("inference.adapter.registry");
38
40using AdapterFactory = std::function<std::unique_ptr<ChatAdapter>(
41 const std::string&, const std::string&)>;
42
48struct AdapterEntry {
49 std::string_view key;
50 AdapterFactory factory;
51};
52
73const std::array<AdapterEntry, 4>& adapter_table() {
74 static const std::array<AdapterEntry, 4> table{{
75 {"gemma4", [](auto& t, auto& p) {
76 return std::make_unique<Gemma4Adapter>(t, p); }},
77 {"qwen35", [](auto& t, auto& p) {
78 return std::make_unique<Qwen35Adapter>(t, p); }},
79 {"qwen36", [](auto& t, auto& p) {
80 return std::make_unique<Qwen36Adapter>(t, p); }},
81 {"nemotron3", [](auto& t, auto& p) {
82 return std::make_unique<Nemotron3Adapter>(t, p); }},
83 }};
84 return table;
85}
86
94std::string to_lower(const std::string& name) {
95 std::string lower = name;
96 std::transform(lower.begin(), lower.end(), lower.begin(),
97 [](unsigned char c) { return std::tolower(c); });
98 return lower;
99}
100
101} // anonymous namespace
102
123std::unique_ptr<ChatAdapter> create_adapter(
124 const std::string& name,
125 const std::string& tier_name,
126 const std::string& identity_prompt)
127{
128 const std::string lower = to_lower(name);
129 for (const auto& entry : adapter_table()) {
130 if (lower == entry.key) {
131 logger->info("Adapter created: type={}, tier={}",
132 entry.key, tier_name);
133 return entry.factory(tier_name, identity_prompt);
134 }
135 }
136 logger->info("Adapter created: generic (config='{}'), tier={} "
137 "(tool parsing via common_chat)", name, tier_name);
138 return std::make_unique<GenericAdapter>(tier_name, identity_prompt);
139}
140
141} // namespace entropic
Adapter factory — create adapters by name.
Gemma4Adapter — the fallback parse path for Gemma-4 tiers (gh#108).
GenericAdapter — default ChatML adapter with JSON tool calls.
spdlog initialization and logger access.
ENTROPIC_EXPORT std::shared_ptr< spdlog::logger > get(const std::string &name)
Get or create a named logger.
Definition logging.cpp:211
Activate model on GPU (WARM → ACTIVE).
std::unique_ptr< ChatAdapter > create_adapter(const std::string &name, const std::string &tier_name, const std::string &identity_prompt)
Create adapter by name (gh#87 Phase D hybrid).
Nemotron 3 chat adapter (v2.1.9, gh#47).
Qwen 3.5 chat adapter.
Qwen 3.6 chat adapter (v2.1.9, gh#45).