(&self, request: ChatRequest)
| 84 | } |
| 85 | |
| 86 | fn convert_request(&self, request: ChatRequest) -> GitLabRequest { |
| 87 | let messages: Vec<GitLabMessage> = request |
| 88 | .messages |
| 89 | .into_iter() |
| 90 | .map(|msg| GitLabMessage { |
| 91 | role: match msg.role { |
| 92 | Role::System => "system".to_string(), |
| 93 | Role::User => "user".to_string(), |
| 94 | Role::Assistant => "assistant".to_string(), |
| 95 | Role::Tool => "user".to_string(), |
| 96 | }, |
| 97 | content: match msg.content { |
| 98 | Content::Text(t) => GitLabContent::Text(t), |
| 99 | Content::Parts(parts) => { |
| 100 | let text = parts |
| 101 | .iter() |
| 102 | .filter_map(|p| p.text.as_ref()) |
| 103 | .cloned() |
| 104 | .collect::<Vec<_>>() |
| 105 | .join("\n"); |
| 106 | GitLabContent::Text(text) |
| 107 | } |
| 108 | }, |
| 109 | }) |
| 110 | .collect(); |
| 111 | |
| 112 | GitLabRequest { |
| 113 | model: request.model, |
| 114 | messages, |
| 115 | max_tokens: request.max_tokens, |
| 116 | temperature: request.temperature, |
| 117 | stream: false, |
| 118 | } |
| 119 | } |
| 120 | } |
| 121 | |
| 122 | #[async_trait] |
no outgoing calls
no test coverage detected