目录
一、项目背景
二、名词解释
三、deepseek、chatGPT、Gemini使用
3.1 产品和模型
3.2 deepseek的使用
3.3 chatGPT的使用
3.4 Gemini的使用
3.5 Claude code的使用
四、为什么学习通过api使用大模型
五、项目功能概览
六、项目架构
本项目带你从零实现一个cpp+ai项目。
一、项目背景
二、名词解释
ai这个东西比较新,此处将项目中涉及到大模型相关名词解释。
此处模型专指AI领域的模型。可以简单理解成⼀个从⼤量数据中学习规律、⽤于进⾏预测的数学函数,只是该函数参数巨多、⽆⽐复杂。可以简单类⽐成⼀个正在学说话的⼩孩。⼩孩通过⽿朵输⼊海量的语⾳数据,⽐如:家⼈的⼝头教学、⽇常⽣活对话、读绘画本,通过眼睛去认识各种物品,⽐如家庭⽇⽤品、交通⼯具、动物、花花草草等,⼩孩通过⼤⼈的⽿传⾝教不断学习成⻓,慢慢地就能听懂⼤⼈的指令,甚⾄模仿⼤⼈⾏为等,建⽴起⾃⼰的语⾔规则。⽐如他发现,我们经常将"吃"和"饭饭"、"⽔果"连在⼀起,"睡觉觉"和"床"连在⼀起,当给孩⼦说:宝宝太晚了,我们⼀起上床_____宝宝就会说:睡觉觉~~~
⼤模型就是AI⾥的超级学霸,参数巨多、知识量爆炸的AI模型,像吃了百科全书+全⽹数据的“六边形战⼠”。⼀个既能看懂你的照⽚(视觉),⼜能听懂你的指令(语⾳),还能⽤⽂字回答你的模型,就是⼤模型。⼤体现在:◦参数海量:GPT-3有1750亿个参数,⽽早期模型参数不到⼀百万。◦训练数据恐怖:吃掉整个互联⽹⽂本(书籍、论⽂、⽹⻚、代码...)◦训练⼀次GPT-3 ≈ 190万度电(够5000个家庭⽤1年)
⼤语⾔模型就是AI界的"超级话痨",是⼀个吃掉整个互联⽹的⽂本,能读会写、知识渊博的AI⼤脑,专⻔处理⼈类语⾔,⽐如聊天、协作、翻译、编程等,但可能会胡说⼋道。将整个互联⽹的数据喂给⼤模型后,⼤模型会通过神经⽹络分析词语之间的关系,例如将"猫"、"喵喵叫"、"⽑茸茸"词归类到⼀起,但是它并不理解,当⼈类在提问的时候它会推测出最可能得回答。⼤模型的局限性◦可能会出现"幻觉"(蠢包)◦没有真正"理解"◦偏⻅与安全⻛险⽬前主流的⼤语⾔模型,⽐如:GPT-5、gemini-3.1、claude-4.7、deepseek-v4、Qwen3、doubao-seed-2.0等
"你是⼀个具有⼗年以上C++后端开发的架构师,请帮我设计类似微信的聊天软件"问题描述
"⽤200字总结导致拖延症原因"
"请按要点分条列出,每条不超过15字"
用户:推荐⼀部科幻电影AI:《星际穿越》⽤⼾:为什么推荐这部?AI(结合上下⽂):因为它的硬核科学设定和感⼈⽗⼥情...
token 是模型⽤来表⽰⾃然语⾔⽂本的基本单位,可直观理解为“字”或“词”;通常 1 个中⽂词语、1 个英⽂单词、1 个数字或 1 个符号计为 1 个 token。不同模型中关于token的计算⽅式可能稍有差异。下⾯是DeepSeek官⽹中关于公布的token的计算⽅式以及收费:
deepseek API开放平台官网:模型 & 价格 | DeepSeek API Docs
相较于其它模型确实便宜一些。十块两千万token。
三、deepseek、chatGPT、Gemini使用
3.1 产品和模型
3.2 deepseek的使用
官网:DeepSeek | 深度求索
api开放平台:DeepSeek 开放平台
开和不开深度思考是两种思考方式。
① 深度推理模式和快速响应模式开关,默认未选中为快速响应模式,选中之后切换到深度思考模式。② 未选中时仅使⽤模型预训练知识,开启后可获取最新信息,注意联⽹搜索模式下不⽀持上传⽂件。③ 未选中时⽆法上传⽂件,仅通过⽂本输⼊和模型交互,开启后⽀持上传PDF、Word、Excel等⽂件,模型会读取⽂件内容并根据内容回答问题,⽬前暂不⽀持图⽚。④ 输⼊⽤⼾提⽰词之后,发送给模型,让模型思考回答⑤ 开新⼀轮对话。⽐如切换⼀个新话题、当对话边的混乱,模型开始"胡⾔乱语"时。⑥ ⽀持会话管理。可以点击任意⼀条之前的会话记录,快速回到该次会话中,继续之前会话,就想看书时返回之前章节⼀样。会话名称⼀般是第⼀次问题的开头命名。
tips:当我们与ai聊和前文完全没有关系的问题时,建议开启一个新的会话。
可以看出deepseek也很惊讶。
3.3 chatGPT的使用
官网:ChatGPT。需要魔法。
3.4 Gemini的使用
官网:Google Gemini
不到为啥pc端的Gemini(哈基咪)我用不了,我就用手机端的代替一下。
① 上传⽂件,⽀持⽂本、图⽚、视频等不同格式⽂件,让⼤模型进⾏理解并进⾏各种操作,⽐如总结⽂档关键内容,分析表格数据等② Deep Research:对问题进⾏更深⼊、全⾯的信息检索和分析,⼀般在处理复杂或专业性强的问题时⾮常有⽤③ 图⽚⽣成:根据⽤⼾的提⽰词,Gemini会使⽤Imagen模型⽣成⼀幅符合描述的图⽚④ 创建⽂档和应⽤:启⽤之后Gemini会根据⽤⼾输⼊需求,使⽤Canvas⽣成⽂档初稿,⽤⼾可以实时调整和优化⑤ 像⼀个私⼈导师,能⽤多种⽅式来辅助学习,⽐如总结提炼核⼼要点、⽣成学习材料等。⑥ ⽀持语⾳输⼊⑦ 发起新⼀轮对话和临时对话,临时对话不会显⽰在会话记录中,临时会话系统仅保留72⼩时;发起新⼀轮对话会开启⼀个全新的聊天会话⑧ 模型切换,⽬前⽀持gemini-3.1-flash-Lite 、gemini-3.5-flash 和 gemini-3.1-pro,或升级其他模型。gemini-3.1-flash-Lite擅⻓处理快速、简单的⼈物,⽐如基础问答、⽣成简短内容等,速度⾮常快;gemini-3.5-flash擅长全方位帮助,gemini-3.1-pro擅⻓处理复杂、需要深度推理的任务,⽐如复杂数学题、编程等。⑨ ⽀持会话管理。
不过现在哈基咪落寞了,被戏称为美版豆包。
3.5 Claude code的使用
官网:New chat - Claude,需要魔法。
可以看到gpt支持的功能Claude大部分也能支持。
四、为什么学习通过api使用大模型
- 了解更多⼤模型知识,提⾼⾃⼰竞争⼒
- 构建⾃⼰的应⽤
- 职业发展
- 学术研究
五、项目功能概览
- 获取会话列表
- 新建会话
- 获取⽀持模型
- 发送消息
- 获取指定会话的历史聊天记录
- 删除会话
页面概览(不代表最终结果):
六、项目架构
◦⼤模型管理:负责管理并接⼊各种不同⼤模型,⽀持接⼊本地⼤模型,并向外提供统⼀接⼝,⽤⼾可以通过提供的接⼝接⼊⾃⼰需要⼤模型。◦会话管理:⽀持会话管理,⽤⼾可以获取获取会话列表、历史消息等◦数据存储层:⽀持会话记录的持久化存储,⽅便查看历史会话。
第三⽅库/⼯具 | 描述 |
cpp-httplib | 轻量级的C++ HTTP 客⼾端/服务器库 |
spdlog | ⾼性能、超快速、零配置的 C++ ⽇志库 |
jsoncpp | ⾼性能的json库,⽤于序列化&反序列化 |
sqlite | 轻量级嵌⼊式关系型数据库,⽀持标准SQL语句 |
gflags | 定义和解析命令⾏参数的C++库 |
gtest | 跨平台的C++单元测试框架 |
cur | ⼀款强⼤的命令⾏⼯具,⽀持HTTP、HTTPS、FTP等多种协议 |
apifox | ⼀款集API调试、Mock数据⽣成、⾃动化测试等功能于⼀体的协作⼯具 |
CMake | ⼀次配置,跨平台⽣成任何构建系统的元构建⼯具 |
ollama | ⼀个可以让你在本地电脑上轻松下载、运⾏和操作各种⼤型语⾔模型的强⼤⼯具 |