add logging config to audio server

add audio client
change delimiter for mcp tools from "::" to ":" to save tokens
This commit is contained in:
milan
2026-04-09 16:21:58 +02:00
parent 5def79b4ca
commit 5bf98a1efc
17 changed files with 776 additions and 35 deletions
+18
View File
@@ -2,6 +2,7 @@ use own_assist_common::config_loader::ConfigLoadingError;
use std::collections::HashMap;
use ollama_rs::headers::{HeaderMap, HeaderValue};
use ollama_rs::Ollama;
use own_mcp::audio::{AudioClient, AudioClientTrait};
use rmcp::model::Implementation;
use serde::Deserialize;
use url::Url;
@@ -12,10 +13,18 @@ use own_assist_common::config_from_file;
#[derive(Debug, Deserialize)]
pub struct Config {
ollama: OllamaConfig,
#[serde(rename = "audio-server")]
audio_server: AudioServerConfig,
#[serde(rename = "mcp-servers")]
mcp_servers: Vec<MCPServerConfig>
}
#[derive(Debug, Deserialize)]
pub struct AudioServerConfig {
url: Url,
authorization: Option<String>,
}
impl Config {
pub fn from_file() -> Result<Self, ConfigLoadingError> {
config_from_file("assist.toml")
@@ -39,6 +48,15 @@ impl Config {
ollama
}
pub fn audio_client(&self) -> AudioClient {
let mut audio_client = AudioClient::new(self.audio_server.url.clone());
if let Some(authorization) = &self.audio_server.authorization {
audio_client = audio_client.with_authorization(authorization.clone());
}
audio_client
}
pub async fn mcp_clients(&self) -> HashMap<String, MCPClient> {
let mut mcp_clients: HashMap<String, MCPClient> = HashMap::new();
+14 -4
View File
@@ -1,6 +1,7 @@
mod config;
mod model;
use own_mcp::audio::{AudioClientTrait};
use own_mcp::mcp::chat::{PermissionAnswer, ToolPermission};
use crate::config::Config;
use crate::model::create_model_from_config;
@@ -18,6 +19,12 @@ async fn main() {
std::process::exit(1);
}).unwrap();
let audio_client = config.audio_client();
log::debug!("Audio server status {:?}", audio_client.status().await.inspect_err(|e|{
log::error!("audio server error {}", e);
std::process::exit(1);
}).unwrap());
let ollama = config.ollama_instance();
let mcp_clients = config.mcp_clients().await;
@@ -29,7 +36,8 @@ async fn main() {
std::process::exit(1);
}).unwrap();
let system_prompt = "Du bist ein Assistent, der per Sprache bedient wird. Du erhälst die Transkription. \
let system_prompt = "Du bist ein Assistent, der per Sprache bedient wird. Du erhälst die Transkription \
und dein Output wird per Sprache ausgegeben und sollte dementsprechend auch kurz sein. \
Wichtiger als deine Antworten sind deine Aktionen.\
Nutze bitte die tools, falls du sie brauchst um Informationen zu bekommen (z.B: über das aktuelle Datum oder den aktuellen Wochentag). \
Du bist in einem Agent Loop und kannst mehrere Tools hintereinander nutzen. \
@@ -44,10 +52,12 @@ async fn main() {
log::info!("all tools: {:#?}", agent_chat.get_all_tools().collect::<Vec<_>>());
agent_chat.set_permission("mcp-playground-echo-server::echo".to_string(), ToolPermission::Allowed).unwrap();
agent_chat.set_permission("datetime:get_weekday".to_string(), ToolPermission::Allowed).unwrap();
agent_chat.set_permission("datetime:get_utc_datetime".to_string(), ToolPermission::Allowed).unwrap();
agent_chat.set_permission("datetime:get_local_datetime".to_string(), ToolPermission::Allowed).unwrap();
agent_chat.set_permission("datetime:get_week".to_string(), ToolPermission::Allowed).unwrap();
let answer = agent_chat.message("Welche Tools kannst du benutzten?".to_string(), permission_callback).await;
let answer = agent_chat.message("Teste beide Server aus. Nutze bei fetch https://example.com/. Melde mir die Ergebnisse zurück.".to_string(), permission_callback).await;
let answer = agent_chat.message("In welcher Kalenderwoche befinden wir uns gerade?".to_string(), permission_callback).await;
dbg!(answer);
}