MCPcopy Create free account
hub / github.com/ChrisFeldmeier/OpenCodeRust / convert_request

Method convert_request

crates/opencode-provider/src/anthropic.rs:100–145  ·  view source on GitHub ↗
(&self, request: ChatRequest)

Source from the content-addressed store, hash-verified

98 }
99
100 fn convert_request(&self, request: ChatRequest) -> AnthropicRequest {
101 let max_tokens = request.max_tokens.unwrap_or(4096);
102 let mut messages = Vec::new();
103 let mut system = None;
104
105 for msg in request.messages {
106 match msg.role {
107 crate::Role::System => {
108 if let crate::Content::Text(text) = msg.content {
109 system = Some(text);
110 }
111 }
112 _ => {
113 messages.push(AnthropicMessage {
114 role: match msg.role {
115 crate::Role::User => "user".to_string(),
116 crate::Role::Assistant => "assistant".to_string(),
117 _ => "user".to_string(),
118 },
119 content: match msg.content {
120 crate::Content::Text(text) => vec![AnthropicContent::Text { text }],
121 crate::Content::Parts(parts) => parts
122 .into_iter()
123 .filter_map(|p| {
124 if let Some(text) = p.text {
125 Some(AnthropicContent::Text { text })
126 } else {
127 None
128 }
129 })
130 .collect(),
131 },
132 });
133 }
134 }
135 }
136
137 AnthropicRequest {
138 model: request.model,
139 max_tokens,
140 messages,
141 system,
142 stream: request.stream,
143 thinking: anthropic_thinking_config(request.variant.as_deref(), max_tokens),
144 }
145 }
146}
147
148#[async_trait]

Callers 2

chatMethod · 0.45
chat_streamMethod · 0.45

Calls 2

newFunction · 0.85

Tested by

no test coverage detected