added Tokens, openrouter, memory system
This commit is contained in:
@@ -1,34 +1,33 @@
|
||||
// nazarick-core/src/llm/traits.rs
|
||||
//
|
||||
// LlmProvider Trait — gemeinsame Schnittstelle für alle LLM-Backends.
|
||||
// Neue Provider (Ollama, Mistral) implementieren diesen Trait.
|
||||
|
||||
use crate::types::Result;
|
||||
use crate::llm::types::{LlmRequest, LlmResponse};
|
||||
|
||||
/// Format für Skill-Calls das dieser Provider unterstützt.
|
||||
#[derive(Debug, Clone, PartialEq)]
|
||||
pub enum SkillFormat {
|
||||
/// XML-Tags — funktioniert mit lokalen Modellen
|
||||
/// <skill name="update_personality">...</skill>
|
||||
/// XML-Tags — für lokale Modelle ohne Function Calling
|
||||
Xml,
|
||||
/// Native Tool Use — Claude, GPT-4, Mistral API
|
||||
/// Strukturierter JSON-basierter Funktionsaufruf
|
||||
/// Native Tool Use — Ollama, Mistral API, OpenRouter
|
||||
ToolUse,
|
||||
/// Skills deaktiviert — Modell folgt keinem Format zuverlässig
|
||||
/// Skills deaktiviert
|
||||
None,
|
||||
}
|
||||
|
||||
impl SkillFormat {
|
||||
/// Parsed aus config.toml String
|
||||
pub fn from_str(s: &str) -> Self {
|
||||
match s {
|
||||
"tool_use" => Self::ToolUse,
|
||||
"none" => Self::None,
|
||||
_ => Self::Xml, // default
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[async_trait::async_trait]
|
||||
pub trait LlmProvider: Send + Sync {
|
||||
/// Sendet eine Anfrage an das LLM und gibt die Antwort zurück.
|
||||
async fn complete(&self, request: LlmRequest) -> Result<LlmResponse>;
|
||||
|
||||
/// Gibt den Namen des Providers zurück.
|
||||
fn name(&self) -> &str;
|
||||
|
||||
/// Gibt das Skill-Format zurück das dieser Provider unterstützt.
|
||||
/// Standard: Xml — für lokale Modelle.
|
||||
fn skill_format(&self) -> SkillFormat {
|
||||
SkillFormat::Xml
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user