myself/sdk/agent/
structure.rs1use 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}