楼主: ayase

[巫妖王之怒] 用Eluna实现AI对话chatAI<仅az端的Eluna可用>

[复制链接]
发表于 2024-8-12 21:47:49 | 显示全部楼层
额,在线模型哇!梦神这个啥时候用GPT跑机器人策略
[发帖际遇]: wangwz592在主城门口表演生吞恶心软泥怪,获得80 金币. 幸运榜 / 衰神榜
回复

使用道具 举报

1540

时沙

2

精华

13

主题

声望: 8730   虚弱: 0

Lv.7(复仇者)

森林深处的秘密

灵蛇献瑞(尚美制作)祥龙贺岁(尚美制作)炉石时沙之瓶今天也只能打恢复的增强萨金鼠(ytfirefox制作) 信仰战假死猎人吟游牧师潜行者卖糖术神伊利丹·怒风比格沃斯先生无冕者雷施

发表于 2024-8-12 21:49:34 | 显示全部楼层
太强大了,来学习一下
那段燃烧的岁月是否我们还记得!
回复

使用道具 举报

3402

时沙

62

精华

158

主题

声望: 48776   虚弱: 0

管理员

🔶收集癖,你懂的🔶

万神殿uiwow(lulus制)信仰战假死猎人今天也只能打恢复的增强萨跑路骑士吟游牧师孝顺骑士潜行者登山猎手划水武僧搓水法爷卖糖术神圣光永恒炉石祖国万岁!!积少成多奥的灰烬时沙之瓶炉石天马比格沃斯先生无敌的缰绳黑色宝石猎豹脚男奔波尔菠萝雷施小咕无冕者希尔瓦娜斯·风行者伊利丹·怒风泰兰德·语风莉莉安·沃斯泰坦之握荣耀属于联盟!为了部落!银色北伐军瓦兰纳尔·远古王者之锤金鸡报晓Doge哼哼(lulus制作)金鼠(ytfirefox制作) 犇向牛年(尚美制作)福虎贺岁(尚美制作)金兔迎春(尚美制作)祥龙贺岁(尚美制作)灵蛇献瑞(尚美制作)烈焰星驰(尚美制作)

 楼主| 发表于 2024-8-12 21:51:51 | 显示全部楼层
wbsnake 发表于 2024-8-12 21:27
哇,能不能写个C++版本的啊

c++的实现也差不多的, 就是简化了发送http的请求的过程.
用ai写的:

  1. #include <iostream>
  2. #include <vector>
  3. #include <string>
  4. #include <json/json.h> // 需要一个JSON库
  5. #include <thread>
  6. #include <chrono>
  7. #include <functional>
  8. class ChatAI {
  9. private:
  10.     std::string api_key;
  11.     std::string base_url;
  12.     std::string model;
  13.     int max_tokens;
  14.     int history_limit;
  15.     double temperature;
  16.     std::vector<std::pair<std::string, std::string>> messages;
  17.     std::vector<std::function<void()>> queue;
  18. public:
  19.     ChatAI(const std::string& api_key, const std::string& base_url, const std::string& model)
  20.         : api_key(api_key), base_url(base_url), model(model), max_tokens(2000), history_limit(0), temperature(0.5) {
  21.         messages.push_back(std::make_pair("system", ""));
  22.     }
  23.     void setSystemMessage(const std::string& system_content) {
  24.         messages[0].second = system_content;
  25.     }
  26.     void setTemperature(double temperature) {
  27.         this->temperature = temperature;
  28.     }
  29.     void setHistoryLimit(int limit) {
  30.         history_limit = limit;
  31.     }
  32.     void setMaxTokens(int tokens_count) {
  33.         max_tokens = tokens_count;
  34.     }
  35.     void addMessage(const std::string& role, const std::string& content) {
  36.         messages.push_back(std::make_pair(role, content));
  37.     }
  38.     std::vector<std::pair<std::string, std::string>> prepareMessages() {
  39.         std::vector<std::pair<std::string, std::string>> preparedMessages;
  40.         if (history_limit == 0 || history_limit + 1 >= messages.size()) {
  41.             preparedMessages.push_back(messages[0]);
  42.         } else {
  43.             for (int i = messages.size() - history_limit - 1; i >= 0; --i) {
  44.                 preparedMessages.push_back(messages[i]);
  45.             }
  46.         }
  47.         return preparedMessages;
  48.     }
  49.     // 省略了saveHistoryMessage和loadHistoryMessage函数,因为它们涉及到文件操作
  50.     void processQueue() {
  51.         if (!queue.empty()) {
  52.             auto func = queue.front();
  53.             queue.erase(queue.begin());
  54.             func();
  55.         }
  56.     }
  57.     void send(std::function<void()> callback) {
  58.         queue.push_back(callback);
  59.     }
  60.     // 省略了HttpRequest和PrintError函数,因为它们需要网络和日志系统支持
  61. };
  62. int main() {
  63.     // 示例使用
  64.     ChatAI chatAI("your_api_key", "your_base_url", "your_model");
  65.     chatAI.setSystemMessage("Initial system message");
  66.     chatAI.addMessage("user", "Hello, AI!");
  67.     chatAI.addMessage("assistant", "Hello, user! How can I assist you today?");
  68.     // 模拟周期性处理队列
  69.     std::thread queueThread([&chatAI]() {
  70.         while (true) {
  71.             chatAI.processQueue();
  72.             std::this_thread::sleep_for(std::chrono::milliseconds(100)); // 模拟queueDelay
  73.         }
  74.     });
  75.     // 这里可以添加更多的逻辑和测试代码
  76.     queueThread.join();
  77.     return 0;
  78. }
复制代码

c++你实现一下HttpRequest的处理就行了(可以直接复制az的相关处理), 基本上大差不差的

[发帖际遇]: ayase北伐诺森德,所向披靡,获得8 声望. 幸运榜 / 衰神榜
因工作繁忙,只在晚上处理论坛事务.
回复

使用道具 举报

发表于 2024-8-13 09:56:48 | 显示全部楼层
本帖最后由 cyberpunktzf 于 2024-8-13 09:58 编辑

感谢大佬的分享,学习了
回复

使用道具 举报

发表于 2024-8-13 20:11:40 | 显示全部楼层
一脸懵逼,因为我看不动啊,感谢大佬的代码
[发帖际遇]: damao购买了希尔瓦纳斯巡回演唱会最好位置用掉24 金币,结果人没来. 幸运榜 / 衰神榜
回复

使用道具 举报

487

时沙

0

精华

6

主题

声望: 1200   虚弱: 0

Lv.4(锻造者)

灵蛇献瑞(尚美制作)

发表于 2024-8-15 15:32:45 | 显示全部楼层
这也太详细了,我就喜欢楼主这样的人!
回复

使用道具 举报

3545

时沙

0

精华

0

主题

声望: 24834   虚弱: 0

Lv.8(征服者)

灵蛇献瑞(尚美制作)祥龙贺岁(尚美制作)金兔迎春(尚美制作)脚男炉石无冕者伊利丹·怒风金鸡报晓积少成多时沙之瓶Doge祖国万岁!!信仰战假死猎人今天也只能打恢复的增强萨潜行者卖糖术神金鼠(ytfirefox制作) 犇向牛年(尚美制作)福虎贺岁(尚美制作)

发表于 2024-9-4 14:16:02 | 显示全部楼层
谢谢分享。
回复

使用道具 举报

76

时沙

0

精华

0

主题

声望: 50   虚弱: 0

Lv.2(潜行者)

发表于 2024-9-5 22:53:24 | 显示全部楼层
学习了学习了,之前那位大佬的文章要30的权限,看不了...
回复

使用道具 举报

1278

时沙

3

精华

30

主题

声望: 8343   虚弱: 0

Lv.7(复仇者)

灵蛇献瑞(尚美制作)金兔迎春(尚美制作)吟游牧师炉石信仰战假死猎人今天也只能打恢复的增强萨潜行者积少成多时沙之瓶比格沃斯先生雷施无冕者伊利丹·怒风莉莉安·沃斯划水武僧搓水法爷黑色宝石猎豹

发表于 2025-2-25 11:40:26 | 显示全部楼层
哇,我怎么才看到,不然可以少走不少歪路,提前把我的假人系统加入AI
回复

使用道具 举报

1278

时沙

3

精华

30

主题

声望: 8343   虚弱: 0

Lv.7(复仇者)

灵蛇献瑞(尚美制作)金兔迎春(尚美制作)吟游牧师炉石信仰战假死猎人今天也只能打恢复的增强萨潜行者积少成多时沙之瓶比格沃斯先生雷施无冕者伊利丹·怒风莉莉安·沃斯划水武僧搓水法爷黑色宝石猎豹

发表于 2025-2-25 11:59:31 | 显示全部楼层
大佬是否能解决这个问题,就是 HttpRequest 请求过程中, reload eluna时候,有时候会宕机,应该是主程序的回调函数因为reload后写入错误导致的?如何预防?
[发帖际遇]: kissinger经常偷加摩尔的钱,积攒96 金币. 幸运榜 / 衰神榜
回复

使用道具 举报

快速回复 返回顶部 返回列表