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

Method convert_request

crates/opencode-provider/src/vercel.rs:54–106  ·  view source on GitHub ↗
(&self, request: ChatRequest)

Source from the content-addressed store, hash-verified

52 }
53
54 fn convert_request(&self, request: ChatRequest) -> VercelRequest {
55 let messages: Vec<VercelMessage> = request
56 .messages
57 .into_iter()
58 .map(|msg| VercelMessage {
59 role: match msg.role {
60 Role::System => "system".to_string(),
61 Role::User => "user".to_string(),
62 Role::Assistant => "assistant".to_string(),
63 Role::Tool => "user".to_string(),
64 },
65 content: match msg.content {
66 Content::Text(t) => VercelContent::Text(t),
67 Content::Parts(parts) => {
68 let contents: Vec<VercelContentPart> = parts
69 .into_iter()
70 .filter_map(|p| {
71 if let Some(text) = p.text {
72 Some(VercelContentPart {
73 content_type: "text".to_string(),
74 text: Some(text),
75 image_url: p
76 .image_url
77 .map(|iu| VercelImageUrl { url: iu.url }),
78 })
79 } else if p.image_url.is_some() {
80 Some(VercelContentPart {
81 content_type: "image_url".to_string(),
82 text: None,
83 image_url: p
84 .image_url
85 .map(|iu| VercelImageUrl { url: iu.url }),
86 })
87 } else {
88 None
89 }
90 })
91 .collect();
92 VercelContent::Parts(contents)
93 }
94 },
95 })
96 .collect();
97
98 VercelRequest {
99 model: request.model,
100 messages,
101 max_tokens: request.max_tokens,
102 temperature: request.temperature,
103 top_p: request.top_p,
104 stream: true,
105 }
106 }
107}
108
109#[async_trait]

Callers 2

chatMethod · 0.45
chat_streamMethod · 0.45

Calls

no outgoing calls

Tested by

no test coverage detected