MCPcopy Create free account
hub / github.com/InfinitiBit/graphbit / complete

Method complete

core/src/llm/fireworks.rs:197–259  ·  view source on GitHub ↗
(&self, request: LlmRequest)

Source from the content-addressed store, hash-verified

195 }
196
197 async fn complete(&self, request: LlmRequest) -> GraphBitResult<LlmResponse> {
198 let url = format!("{}/chat/completions", self.base_url);
199
200 let messages: Vec<FireworksMessage> =
201 request.messages.iter().map(Self::convert_message).collect();
202
203 let tools: Option<Vec<FireworksTool>> = if request.tools.is_empty() {
204 None
205 } else {
206 Some(request.tools.iter().map(Self::convert_tool).collect())
207 };
208
209 let body = FireworksRequest {
210 model: self.model.clone(),
211 messages,
212 max_tokens: request.max_tokens,
213 temperature: request.temperature,
214 top_p: request.top_p,
215 tools: tools.clone(),
216 tool_choice: if tools.is_some() {
217 Some("auto".to_string())
218 } else {
219 None
220 },
221 };
222
223 // Add extra parameters
224 let mut request_json = serde_json::to_value(&body)?;
225 if let serde_json::Value::Object(ref mut map) = request_json {
226 for (key, value) in request.extra_params {
227 map.insert(key, value);
228 }
229 }
230
231 let response = self
232 .client
233 .post(&url)
234 .header("Authorization", format!("Bearer {}", self.api_key))
235 .header("Content-Type", "application/json")
236 .json(&request_json)
237 .send()
238 .await
239 .map_err(|e| {
240 GraphBitError::llm_provider("fireworks", format!("Request failed: {e}"))
241 })?;
242
243 if !response.status().is_success() {
244 let error_text = response
245 .text()
246 .await
247 .unwrap_or_else(|_| "Unknown error".to_string());
248 return Err(GraphBitError::llm_provider(
249 "fireworks",
250 format!("API error: {error_text}"),
251 ));
252 }
253
254 let fireworks_response: FireworksResponse = response.json().await.map_err(|e| {

Callers

nothing calls this directly

Calls 6

cloneMethod · 0.80
to_stringMethod · 0.80
insertMethod · 0.80
is_emptyMethod · 0.45
is_successMethod · 0.45
parse_responseMethod · 0.45

Tested by

no test coverage detected