Skip to content

Commit 7364daa

Browse files
committed
fix: openai response
1 parent 34d038e commit 7364daa

1 file changed

Lines changed: 20 additions & 3 deletions

File tree

src/providers/open_ai.rs

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -95,11 +95,28 @@ impl LlmProvider for OpenAIProvider {
9595
.send()
9696
.await?;
9797

98-
let response_body: Value = response.json().await?;
99-
debug!("{:?}", response_body);
98+
let status = response.status();
99+
let response_text = response.text().await
100+
.map_err(|e| format!("Failed to read response body (status {}): {}", status, e))?;
101+
debug!("Raw response: {}", response_text);
102+
103+
let response_body: Value = serde_json::from_str(&response_text)
104+
.map_err(|e| format!("Failed to parse JSON: {}. Raw response: {}", e, &response_text[..response_text.len().min(500)]))?;
105+
106+
// Check for API error response
107+
if let Some(error) = response_body.get("error") {
108+
let error_msg = error["message"]
109+
.as_str()
110+
.unwrap_or("Unknown API error");
111+
return Err(format!("OpenAI API error: {}", error_msg).into());
112+
}
113+
100114
let cooklang_recipe = response_body["choices"][0]["message"]["content"]
101115
.as_str()
102-
.ok_or("Failed to extract content from response")?
116+
.ok_or_else(|| format!(
117+
"Failed to extract content from response. Response: {}",
118+
serde_json::to_string_pretty(&response_body).unwrap_or_else(|_| "unparseable".to_string())
119+
))?
103120
.to_string();
104121

105122
Ok(cooklang_recipe)

0 commit comments

Comments
 (0)