alchemy_llm/types/
event.rs1use super::content::ToolCall;
2use super::message::AssistantMessage;
3use super::usage::StopReason;
4
5#[derive(Debug, Clone)]
6pub enum AssistantMessageEvent {
7 Start {
8 partial: AssistantMessage,
9 },
10 TextStart {
11 content_index: usize,
12 partial: AssistantMessage,
13 },
14 TextDelta {
15 content_index: usize,
16 delta: String,
17 partial: AssistantMessage,
18 },
19 TextEnd {
20 content_index: usize,
21 content: String,
22 partial: AssistantMessage,
23 },
24 ThinkingStart {
25 content_index: usize,
26 partial: AssistantMessage,
27 },
28 ThinkingDelta {
29 content_index: usize,
30 delta: String,
31 partial: AssistantMessage,
32 },
33 ThinkingEnd {
34 content_index: usize,
35 content: String,
36 partial: AssistantMessage,
37 },
38 ToolCallStart {
39 content_index: usize,
40 partial: AssistantMessage,
41 },
42 ToolCallDelta {
43 content_index: usize,
44 delta: String,
45 partial: AssistantMessage,
46 },
47 ToolCallEnd {
48 content_index: usize,
49 tool_call: ToolCall,
50 partial: AssistantMessage,
51 },
52 Done {
53 reason: StopReasonSuccess,
54 message: AssistantMessage,
55 },
56 Error {
57 reason: StopReasonError,
58 error: AssistantMessage,
59 },
60}
61
62#[derive(Debug, Clone, Copy, PartialEq, Eq)]
63pub enum StopReasonSuccess {
64 Stop,
65 Length,
66 ToolUse,
67}
68
69impl From<StopReasonSuccess> for StopReason {
70 fn from(value: StopReasonSuccess) -> Self {
71 match value {
72 StopReasonSuccess::Stop => Self::Stop,
73 StopReasonSuccess::Length => Self::Length,
74 StopReasonSuccess::ToolUse => Self::ToolUse,
75 }
76 }
77}
78
79#[derive(Debug, Clone, Copy, PartialEq, Eq)]
80pub enum StopReasonError {
81 Error,
82 Aborted,
83}
84
85impl From<StopReasonError> for StopReason {
86 fn from(value: StopReasonError) -> Self {
87 match value {
88 StopReasonError::Error => Self::Error,
89 StopReasonError::Aborted => Self::Aborted,
90 }
91 }
92}