myself/sdk/agent/
structure.rs

1use crate::backend::core::AgentBackend;
2use crate::database::memory::MemoryEngine;
3
4use uuid::Uuid;
5
6#[derive(Clone, Debug)]
7pub struct DefaultInteraction {
8    pub user_name: String,
9    pub constitution: String,
10    pub memory_size: usize,
11}
12
13#[derive(Clone, Debug)]
14pub struct Agent<Backend>
15where
16    Backend: AgentBackend + Sized + Default + Clone,
17{
18    pub id: Uuid,
19    pub my_name: String,
20    pub default_interaction: DefaultInteraction,
21
22    backend: Option<Box<Backend>>,
23    memory_engine: Option<Box<MemoryEngine<Backend>>>,
24}
25
26impl<Backend> Agent<Backend>
27where
28    Backend: AgentBackend + Sized + Default + Clone,
29{
30    pub fn get_memory_engine(&self) -> Option<Box<MemoryEngine<Backend>>> {
31        self.memory_engine.clone()
32    }
33
34    pub fn get_backend(&self) -> Option<Box<Backend>> {
35        self.backend.clone()
36    }
37}
38
39impl<Backend> Agent<Backend>
40where
41    Backend: AgentBackend + Sized + Default + Clone,
42{
43    pub fn new(
44        id: Uuid,
45        my_name: String,
46        default_interaction: DefaultInteraction,
47        llm_engine: Backend,
48        memory_engine: MemoryEngine<Backend>,
49    ) -> Self {
50        Self {
51            id,
52            my_name,
53            default_interaction,
54            backend: Some(Box::new(llm_engine)),
55            memory_engine: Some(Box::new(memory_engine)),
56        }
57    }
58}