#原代码用的AI模型是minimax的API接口,现在试着改成最热门的deepseek3接口。#
首先按理解所得,在main文件夹下,有minimax.c和minimax.h, 它们是这个API接口的头文件和实现文件,然后在main.c中被调用。所以我们一步步更改。
申请deepseek的API请问deepseek之类的人工智能,谢谢!!
先从minimax.h开始:
char *AI_chat(const char *text); //AI_chat
就这么简单的开了个头。顺带文件名改成ai_chat.h
接下来改minimax.c:
搜索minimax.h,改头文件。
搜索MINIMAX,第一个是包含文件,#include “minimax.h”,改成#include “ai_chat.h”。顺手同步改一下main.c里的#include "ai_chat.h"。
#include "ai_chat.h"
搜索minimax_chat,改成AI_chat
日志标签,将MINIMAX_CHAT,改成AI_CHAT用的是全大写。
static const char *TAG = "AI_CHAT";
第二个是minimax_chat(const char *text) 改成AI_chat(const char *text)
char *AI_chat(const char *text) // 这里替换成自己的minimax_chat函数名为AI-chat
搜索minimax_key, 修改密钥相关接口。
extern const char * minimax_key;
extern const char * AIchat_key;
esp_http_client_set_header(client, "Authorization", AIchat_key);
更改POST_DATA
#define POST_DATA "{\
\"model\":\"deepseek-chat\",\
\"messages\":[\
{\"role\":\"system\",\"content\":\"You are a helpful assistant.\"},\
{\"role\":\"user\",\"content\":\"%s\"}\
],\
\"stream\":false\
}"#define MAX_CHAT_BUFFER (2048)
更改minimax_content为AIchat_content
char AIchat_content[2048] = {0};
strncpy(AIchat_content, content->valuestring, MAX_CHAT_BUFFER - 1);
AIchat_content[MAX_CHAT_BUFFER - 1] = '\0'; // 确保字符串终止
response_text = AIchat_content;
更改.url = "",修改成deepseek3的API接口网址:它与minimax不同,不需要GroupId用户名。
.url = "https://api.deepseek.com/chat/completions", // 替换为 DeepSeek 的 API URL
解释CJSON和信息提取
// 解析响应 JSONcJSON *root = cJSON_Parse(data_buf);if (root == NULL){ESP_LOGE(TAG, "解析 JSON 响应失败");goto cleanup;}// 提取生成的回复cJSON *choices = cJSON_GetObjectItem(root, "choices");if (choices != NULL && cJSON_IsArray(choices)){cJSON *first_choice = cJSON_GetArrayItem(choices, 0);if (first_choice != NULL){cJSON *message = cJSON_GetObjectItem(first_choice, "message");if (message != NULL){cJSON *content = cJSON_GetObjectItem(message, "content");if (content != NULL && cJSON_IsString(content)){strncpy(AIchat_content, content->valuestring, MAX_CHAT_BUFFER - 1);AIchat_content[MAX_CHAT_BUFFER - 1] = '\0'; // 确保字符串终止response_text = AIchat_content;ESP_LOGI(TAG, "生成的回复: %s", response_text);}}}}
更改exit_translate为cleanup
goto cleanup;
cleanup:// 使用 SAFE_FREE 宏释放资源SAFE_FREE(post_buffer);SAFE_FREE(data_buf);esp_http_client_cleanup(client);return response_text;
在引入头文件下面加个宏
// 定义 SAFE_FREE 宏
#define SAFE_FREE(ptr) \do \{ \if (ptr != NULL) \{ \free(ptr); \ptr = NULL; \} \} while (0)
接下来改main.c:
搜索minimax.h,改头文件。如上面例子。
#include "ai_chat.h"
搜索minimax_chat,改成AI_chat
char *answer = AI_chat(original_text);
搜索minimax_key, 修改密钥相关接口。
const char * AIchat_key = "Bearer deepseek的API密钥";
更改minimax_content为AIchat_content
extern char AIchat_content[2048]; // 定义一个全局变量,用于接收字符串