C语言实现与ChatGPT-3.5 Turbo模型交互的示例程序
使用C语言与ChatGPT-3.5 Turbo模型交互
本示例程序演示了如何使用C语言编写一个程序,与OpenAI的GPT-3.5 Turbo模型进行交互。
代码示例
#include <stdio.h>
#include <stdlib.h>
#include <curl/curl.h>
#include <cjson/cJSON.h>
#define MAX_INPUT_SIZE 1024
// 将API响应写入字符串缓冲区
size_t write_response(void *ptr, size_t size, size_t nmemb, char *output) {
strcat(output, (char *)ptr);
return size * nmemb;
}
// 使用GPT-3.5 Turbo模型与OpenAI API进行交互
void chat_with_gpt3_5(char *input) {
CURL *curl;
CURLcode res;
char url[] = 'https://api.openai.com/v1/engines/text-davinci-003/completions';
char output[MAX_INPUT_SIZE] = '';
curl_global_init(CURL_GLOBAL_DEFAULT);
curl = curl_easy_init();
if (curl) {
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, 'Content-Type: application/json');
headers = curl_slist_append(headers, 'Authorization: Bearer YOUR_API_KEY'); // 将YOUR_API_KEY替换为您的OpenAI API密钥
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_response);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, output);
cJSON *request = cJSON_CreateObject();
cJSON_AddStringToObject(request, 'prompt', input);
cJSON_AddNumberToObject(request, 'max_tokens', 50);
cJSON_AddNumberToObject(request, 'temperature', 0.7);
cJSON_AddNumberToObject(request, 'n', 1);
char *request_str = cJSON_Print(request);
cJSON_Delete(request);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, request_str);
res = curl_easy_perform(curl);
if (res != CURLE_OK) {
fprintf(stderr, 'curl_easy_perform() failed: %s\n', curl_easy_strerror(res));
}
else {
printf('ChatGPT3.5: %s\n', output);
}
curl_easy_cleanup(curl);
curl_global_cleanup();
}
}
int main() {
char user_input[MAX_INPUT_SIZE];
// 与GPT-3.5 Turbo模型进行对话
while (1) {
printf('用户: ');
fgets(user_input, sizeof(user_input), stdin);
user_input[strcspn(user_input, '\n')] = '\0';
if (strcmp(user_input, '退出') == 0) {
break;
}
chat_with_gpt3_5(user_input);
}
return 0;
}
说明
- 包含头文件: 程序包含了必要的头文件,包括
stdio.h,stdlib.h,curl/curl.h和cjson/cJSON.h,用于输入输出、内存分配、网络请求和JSON数据处理。 - 定义常量:
MAX_INPUT_SIZE定义了用户输入的最大长度。 write_response函数: 该函数用于将API响应写入字符串缓冲区。chat_with_gpt3_5函数: 该函数使用libcurl库发送HTTP请求到OpenAI API,并使用cJSON库处理API响应。- 首先,使用
curl_easy_init()初始化一个CURL句柄。 - 然后,设置HTTP请求头,包括
Content-Type和Authorization。 - 接着,设置请求的URL、回调函数和输出缓冲区。
- 使用cJSON库构建JSON格式的请求体,包括
prompt,max_tokens,temperature和n等参数。 - 使用
curl_easy_setopt()设置POST请求体。 - 使用
curl_easy_perform()执行HTTP请求。 - 如果请求成功,打印API响应;否则,打印错误信息。
- 最后,清理CURL资源。
- 首先,使用
main函数: 主函数接收用户的输入,并调用chat_with_gpt3_5函数与GPT-3.5 Turbo模型进行交互。- 使用
fgets()函数获取用户的输入。 - 如果用户输入'退出',则退出程序。
- 否则,调用
chat_with_gpt3_5函数发送请求并打印响应。
- 使用
准备工作
- 获取OpenAI API密钥: 访问 https://platform.openai.com/account/api-keys 获取您的API密钥。
- 安装libcurl库: 使用您操作系统的包管理器安装libcurl库。例如,在Ubuntu上,您可以使用以下命令安装:
sudo apt-get install libcurl4-openssl-dev - 安装cJSON库: 从 https://github.com/DaveGamble/cJSON 下载cJSON库,并按照其安装说明进行操作。
编译和运行
使用以下命令编译程序:
gcc -o chatgpt_c chatgpt_c.c -lcurl -lcjson
将 YOUR_API_KEY 替换为您的OpenAI API密钥,然后运行程序:
./chatgpt_c
现在,您可以与ChatGPT-3.5 Turbo模型进行对话了!
原文地址: https://www.cveoy.top/t/topic/Bj2 著作权归作者所有。请勿转载和采集!