MCPcopy Index your code
hub / github.com/ChrisFeldmeier/OpenCodeRust / chat

Method chat

crates/opencode-provider/src/cerebras.rs:69–110  ·  view source on GitHub ↗
(&self, request: ChatRequest)

Source from the content-addressed store, hash-verified

67 }
68
69 async fn chat(&self, request: ChatRequest) -> Result<ChatResponse, ProviderError> {
70 let url = CEREBRAS_API_URL;
71
72 let mut body = serde_json::json!({
73 "model": request.model,
74 "messages": request.messages,
75 });
76
77 if let Some(temp) = request.temperature {
78 body["temperature"] = serde_json::json!(temp);
79 }
80 if let Some(max_tokens) = request.max_tokens {
81 body["max_tokens"] = serde_json::json!(max_tokens);
82 }
83 if let Some(tools) = &request.tools {
84 if !tools.is_empty() {
85 body["tools"] = serde_json::json!(tools);
86 }
87 }
88
89 let response = self
90 .client
91 .post(url)
92 .header("Authorization", format!("Bearer {}", self.api_key))
93 .header("Content-Type", "application/json")
94 .json(&body)
95 .send()
96 .await
97 .map_err(|e| ProviderError::NetworkError(e.to_string()))?;
98
99 if !response.status().is_success() {
100 let error_text = response.text().await.unwrap_or_default();
101 return Err(ProviderError::ApiError(error_text));
102 }
103
104 let chat_response: ChatResponse = response
105 .json()
106 .await
107 .map_err(|e| ProviderError::ApiError(e.to_string()))?;
108
109 Ok(chat_response)
110 }
111
112 async fn chat_stream(&self, request: ChatRequest) -> Result<StreamResult, ProviderError> {
113 let url = CEREBRAS_API_URL;

Callers

nothing calls this directly

Calls 5

is_emptyMethod · 0.80
ApiErrorEnum · 0.50
sendMethod · 0.45
statusMethod · 0.45
textMethod · 0.45

Tested by

no test coverage detected