C++代码实现调用OpenAi接口Api

在网上找了一圈C++如何调用OpenAi的接口,找到的例子比较简单,完全照搬下来修改一下也能用,不过i整合在自己的类里面就莫名奇妙的问题:

1. 比如 coredump

     url_easy_perform的执行和curl_easy_setopt放在了两个函数中就出问题了,很奇怪。。。至今不知道原因,有知道的小伙伴可以评论告诉我。O(∩_∩)O

    暖心提示:

    curl_easy_setopt和url_easy_perform 别分开写。

2. 发送api key,放入head中时,

     curl_slist_append的返回值必须用同一个head指针来接收才行,例如:

     struct curl_slist* headers

      curl_slist_append(this->headers, contentType_header.c_str());

       curl_slist_append(this->headers, contentType_header.c_str());

       就会导致认证失败,因为必须:

       headers = curl_slist_append(this->headers, contentType_header.c_str());

       headers = curl_slist_append(this->headers, contentType_header.c_str());

       你以为就这?还有:

       你下一次使用前要把 headers = NULL才行(贴个没问题的代码截图如下):

       

    ======================================================================

上示例代码:

sudo apt install nlohmann-json3-dev

Ubuntu 22.04上面安装下上面的json库

1. openai.h

#pragma once

#include <nlohmann/json_fwd.hpp>
#include <nlohmann/json.hpp>
#include <curl/curl.h>
#include <string>
using namespace std;
using namespace nlohmann;

class OpenAi {
    public:
        static OpenAi* GetInstance();
        ~OpenAi();
        const std::string& GetClassName();
        void Initialize();
        void Finalitialize();
        void SetModel(const std::string& model = "gpt-3.5-turbo");
        void SetUri(const std::string& uri = "https://api.openai.com/v1/chat/completions");
        void SetApiKey(const std::string& apiKey);
        void SetRole(const std::string& role = "user");
        void SetContent(const std::string& content);
        void SetContentType(const std::string& contentType = "application/json");
        void PostMessage();
&

### C++ 调用 ChatGPT API 示例 为了通过 C++ 调用 ChatGPT API,在 Linux 上命令行环境中执行,可以参考如下方法: #### 准备工作 确保安装了必要的库来支持 HTTP 请求和 JSON 解析。通常这涉及到 `libcurl` 和 `jsoncpp` 库。 #### 示例代码展示 下面给出一段简化版的 C++ 代码片段用于说明如何设置并发送请求给 ChatGPTAPI 接口[^1]。 ```cpp #include <iostream> #include <openai/api.h> // 假设这是封装好的 OpenAI SDK 或者自定义实现 using namespace std; using namespace openai; // 定义常量参数 const string API_SECRET_KEY = "YOUR_API_SECRET_KEY"; const string MODEL_ID = "text-davinci-003"; // 替换成实际使用的模型ID const int MAX_TOKENS = 50; int main() { try { Api api(API_SECRET_KEY); CreateCompletionRequest request; request.set_model(MODEL_ID); request.add_prompt("Once upon a time"); request.set_max_tokens(MAX_TOKENS); auto response = api.create_completion(request).get(); cout << "Response: " << response.get_choices(0).get_text().c_str() << endl; } catch (exception& e) { cerr << "Error occurred: " << e.what() << '\n'; } return 0; } ``` 此段程序展示了创建一个简单的文本补全请求,并打印返回的结果。注意这里的 `openai/api.h` 是假设存在的接口文件;实际上可能需要根据具体的 SDK 文档调整导入路径和其他细节[^4]。 对于不想编写大量底层网络通信逻辑的情况,确实存在无需手动编码即可完成 API 调用的方式,比如利用图形化工具生成 API 文档后直接测试调用[^2]。不过这种方式更适合快速验证而非集成到现有应用程序中。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值