add permission support
refactoring
This commit is contained in:
+12
-4
@@ -1,9 +1,14 @@
|
||||
mod config;
|
||||
mod model;
|
||||
|
||||
use own_mcp::mcp::chat::{PermissionAnswer, ToolPermission};
|
||||
use crate::config::Config;
|
||||
use crate::model::create_model_from_config;
|
||||
|
||||
async fn permission_callback(mcp_server_name: String, tool_name:String) -> PermissionAnswer {
|
||||
PermissionAnswer::Denied // TODO: implement
|
||||
}
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() {
|
||||
env_logger::init();
|
||||
@@ -27,7 +32,8 @@ async fn main() {
|
||||
let system_prompt = "Du bist ein Assistent, der per Sprache bedient wird. Du erhälst die Transkription. \
|
||||
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.".to_string();
|
||||
Du bist in einem Agent Loop und kannst mehrere Tools hintereinander nutzen. \
|
||||
Falls der Nutzer das Nutzen eines Tools ablehnt, sag ihm bescheid, dass du es brauchst.".to_string();
|
||||
|
||||
let mut agent_chat = own_mcp::AgentChat::new(ollama, model_name.clone(), mcp_clients, system_prompt).await.inspect_err(
|
||||
|e| {
|
||||
@@ -36,10 +42,12 @@ async fn main() {
|
||||
}
|
||||
).unwrap();
|
||||
|
||||
log::info!("all tools: {:#?}", agent_chat.get_all_tools());
|
||||
log::info!("all tools: {:#?}", agent_chat.get_all_tools().collect::<Vec<_>>());
|
||||
|
||||
let answer = agent_chat.message("Welche Tools kannst du benutzten?".to_string()).await;
|
||||
let answer = agent_chat.message("Teste beide Server aus. Nutze bei fetch https://example.com/. Melde mir die Ergebnisse zurück.".to_string()).await;
|
||||
agent_chat.set_permission("mcp-playground-echo-server::echo".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;
|
||||
|
||||
dbg!(answer);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user