From 9913344bbf1b627db09a74b968bd46e39c3ed087 Mon Sep 17 00:00:00 2001 From: Jabber Developer Date: Sat, 4 Jul 2026 09:58:17 +0000 Subject: [PATCH] refactor(ai): align AI client with OpenAI chat completions API 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. --- src/ai/ai_client.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/src/ai/ai_client.c b/src/ai/ai_client.c index 5ee3139c..0c477814 100644 --- a/src/ai/ai_client.c +++ b/src/ai/ai_client.c @@ -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; if (custom_json->len > 0) { 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); } else { json_payload = g_strdup_printf( - "{\"model\":\"%s\",\"input\":[%s],\"stream\":false,\"store\":false}", + "{\"model\":\"%s\",\"messages\":[%s],\"stream\":false}", escaped_model, messages_json->str); } @@ -1512,12 +1512,7 @@ ai_parse_response(const gchar* response_json) if (!response_json || strlen(response_json) == 0) return NULL; - /* Perplexity /v1/agent: {"output":[{"content":[{"text":"...","type":"output_text"}]}]} - * Legacy OpenAI: {"choices":[{"message":{"content":"..."}}]} */ - gchar* text = _extract_json_string(response_json, "text"); - if (text) - return text; - + /* OpenAI /v1/chat/completions: {"choices":[{"message":{"content":"..."}}]} */ return _extract_json_string(response_json, "content"); } @@ -1617,7 +1612,7 @@ _ai_request_thread(gpointer data) /* Build request 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 Request URL: %s", request_url); log_debug("[AI-THREAD] Model: %s", local_model);