refactor(ai): align AI client with OpenAI chat completions API
Some checks failed
CI Code / Check spelling (push) Successful in 16s
CI Code / Check coding style (push) Successful in 29s
CI Code / Linux (debian) (push) Failing after 3m38s
CI Code / Code Coverage (push) Failing after 5m19s
CI Code / Linux (ubuntu) (push) Failing after 6m15s
CI Code / Linux (arch) (push) Failing after 9m31s
Some checks failed
CI Code / Check spelling (push) Successful in 16s
CI Code / Check coding style (push) Successful in 29s
CI Code / Linux (debian) (push) Failing after 3m38s
CI Code / Code Coverage (push) Failing after 5m19s
CI Code / Linux (ubuntu) (push) Failing after 6m15s
CI Code / Linux (arch) (push) Failing after 9m31s
Update request endpoint to /v1/chat/completions and switch payload key from input to messages. Remove store flag and legacy Perplexity response parsing to standardize on OpenAI's content extraction.
This commit is contained in:
@@ -1489,15 +1489,15 @@ _build_json_payload_from_list(AIProvider* provider, const gchar* model, GList* h
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Assemble final payload: model, input, custom settings, then fixed keys */
|
/* Assemble final payload: model, messages, custom settings, then fixed keys */
|
||||||
gchar* json_payload;
|
gchar* json_payload;
|
||||||
if (custom_json->len > 0) {
|
if (custom_json->len > 0) {
|
||||||
json_payload = g_strdup_printf(
|
json_payload = g_strdup_printf(
|
||||||
"{\"model\":\"%s\",\"input\":[%s],%s,\"stream\":false,\"store\":false}",
|
"{\"model\":\"%s\",\"messages\":[%s],%s,\"stream\":false}",
|
||||||
escaped_model, messages_json->str, custom_json->str);
|
escaped_model, messages_json->str, custom_json->str);
|
||||||
} else {
|
} else {
|
||||||
json_payload = g_strdup_printf(
|
json_payload = g_strdup_printf(
|
||||||
"{\"model\":\"%s\",\"input\":[%s],\"stream\":false,\"store\":false}",
|
"{\"model\":\"%s\",\"messages\":[%s],\"stream\":false}",
|
||||||
escaped_model, messages_json->str);
|
escaped_model, messages_json->str);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1512,12 +1512,7 @@ ai_parse_response(const gchar* response_json)
|
|||||||
if (!response_json || strlen(response_json) == 0)
|
if (!response_json || strlen(response_json) == 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
/* Perplexity /v1/agent: {"output":[{"content":[{"text":"...","type":"output_text"}]}]}
|
/* OpenAI /v1/chat/completions: {"choices":[{"message":{"content":"..."}}]} */
|
||||||
* Legacy OpenAI: {"choices":[{"message":{"content":"..."}}]} */
|
|
||||||
gchar* text = _extract_json_string(response_json, "text");
|
|
||||||
if (text)
|
|
||||||
return text;
|
|
||||||
|
|
||||||
return _extract_json_string(response_json, "content");
|
return _extract_json_string(response_json, "content");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1617,7 +1612,7 @@ _ai_request_thread(gpointer data)
|
|||||||
|
|
||||||
/* Build request URL */
|
/* Build request URL */
|
||||||
const gchar* api_url = local_provider->api_url;
|
const gchar* api_url = local_provider->api_url;
|
||||||
auto_gchar gchar* request_url = g_strdup_printf("%s%sv1/responses", api_url, g_str_has_suffix(api_url, "/") ? "" : "/");
|
auto_gchar gchar* request_url = g_strdup_printf("%s%sv1/chat/completions", api_url, g_str_has_suffix(api_url, "/") ? "" : "/");
|
||||||
log_debug("[AI-THREAD] API URL: %s", api_url);
|
log_debug("[AI-THREAD] API URL: %s", api_url);
|
||||||
log_debug("[AI-THREAD] API Request URL: %s", request_url);
|
log_debug("[AI-THREAD] API Request URL: %s", request_url);
|
||||||
log_debug("[AI-THREAD] Model: %s", local_model);
|
log_debug("[AI-THREAD] Model: %s", local_model);
|
||||||
|
|||||||
Reference in New Issue
Block a user