39using AdapterFactory = std::function<std::unique_ptr<ChatAdapter>(
40 const std::string&,
const std::string&)>;
49 AdapterFactory factory;
63const std::array<AdapterEntry, 3>& adapter_table() {
64 static const std::array<AdapterEntry, 3> table{{
65 {
"qwen35", [](
auto& t,
auto& p) {
66 return std::make_unique<Qwen35Adapter>(t, p); }},
67 {
"qwen36", [](
auto& t,
auto& p) {
68 return std::make_unique<Qwen36Adapter>(t, p); }},
69 {
"nemotron3", [](
auto& t,
auto& p) {
70 return std::make_unique<Nemotron3Adapter>(t, p); }},
82std::string to_lower(
const std::string& name) {
83 std::string lower = name;
84 std::transform(lower.begin(), lower.end(), lower.begin(),
85 [](
unsigned char c) { return std::tolower(c); });
107 const std::string& name,
108 const std::string& tier_name,
109 const std::string& identity_prompt)
111 const std::string lower = to_lower(name);
112 for (
const auto& entry : adapter_table()) {
113 if (lower == entry.key) {
114 logger->info(
"Adapter created: type={}, tier={}",
115 entry.key, tier_name);
116 return entry.factory(tier_name, identity_prompt);
119 logger->info(
"Adapter created: generic (config='{}'), tier={} "
120 "(tool parsing via common_chat)", name, tier_name);
121 return std::make_unique<GenericAdapter>(tier_name, identity_prompt);
Adapter factory — create adapters by name.
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.
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.6 chat adapter (v2.1.9, gh#45).