1use serde::{Deserialize, Serialize};
5
6#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
10#[serde(rename_all = "snake_case")]
11pub enum RunType {
12 Llm,
14 Chain,
16 Tool,
18 Retriever,
20 Embedding,
22 Prompt,
24 Parser,
26}
27
28impl RunType {
29 pub fn as_str(&self) -> &'static str {
31 match self {
32 Self::Llm => "llm",
33 Self::Chain => "chain",
34 Self::Tool => "tool",
35 Self::Retriever => "retriever",
36 Self::Embedding => "embedding",
37 Self::Prompt => "prompt",
38 Self::Parser => "parser",
39 }
40 }
41
42 pub fn emoji(&self) -> &'static str {
44 match self {
45 Self::Llm => "🤖",
46 Self::Chain => "🔗",
47 Self::Tool => "🔧",
48 Self::Retriever => "📚",
49 Self::Embedding => "📊",
50 Self::Prompt => "📝",
51 Self::Parser => "📄",
52 }
53 }
54}
55
56impl std::fmt::Display for RunType {
57 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
58 write!(f, "{}", self.as_str())
59 }
60}