声明:FunAi项目只发布于 GitHub,基于 Apache-2.0 协议,免费且作为开源学习使用,未经本人同意不可用于商业项目。欢迎一起交流讨论,微信群、QQ群以及个人微信号在FunAi中可以找到。若有长期定制合作或者内部高级版使用意向请微信联系Nagin_Kim或邮件552122632@qq.com
- 欢迎来到FunAi的后端仓库,我们正在使用Java对现有AGI进行二次开发。
- 目前是FunAi的第一个版本,已经接入ChatGPT、GPT-4、MJ-V4和SD实现一些有意思的应用,详细请见【项目亮点】 和 【功能展示】🎊
- 作为一个新颖的Java学习项目,你可以从【快速开始】和【技术栈】部分得到有效的信息🎉
- 我们的FunAi网站 可免费使用,欢迎进入FunAi一起玩耍吧(网站内有联系方式)😆
- [TODO] 魔鬼社区 & 高级文档咨询
- [2023-05-13] 新增个人巨大知识库交互式问答功能(PDF阅读-多文件版本)https://funai.space/#/ChatWithFile
- [2023-05-13] 新增PDF阅读-单文件版本可浏览文件功能
- [2023-05-07] 优化文生图模型,支持中文大白话描述,体验地址:https://funai.space/#/ImgGenerate
- [2023-05-06] 新增文生图模型(不支持中文)
- [2023-05-10] 修复文件名低于3个字符出现的服务错误问题
- [2023-05-05] 修改apiKey轮询bug
- [2023-05-03] 新增对openai免费Key限制所做的优化的轮询调度算法
✅ ChatGPT聊天
-
集成OpenAi API (ChatGPT3.5 + GPT4 + embedding)
-
支持markdown格式,代码高亮,代码复制,公式和图表展示
-
无限轮聊天 + 带上下文逻辑 (Guava Cache 优化响应时间)
-
流式输出 / 普通输出
-
多会话 + 记录存储 + 记录管理(新增/清空/删除)
-
数据导出
-
语音聊天 + 语音播放
-
TODO: 接入文生图模型(MidJourney / Stable Diffusion Model)
✅ PDF智能阅读(论文 / 简历 / 知识文档等)
-
接入OpenAI的Embedding API,使用Pinecone/Milvus向量库存储向量。
-
PDF解析 + 递归分词文段抽取 + 文本向量化 + 向量语义匹配 + 召回知识库相似文本匹配
-
大文件上传(目前测试阶段暂时最多支持80页)
-
多会话 + 文件保存 + 记录存储 + 记录管理(新增 / 删除)
-
源PDF对照阅读 + ChatGPT互动
-
多源PDF上传,集成庞大知识库
✅ 智能画图
-
接入MJ-V4和Stable Diffusion
-
普通模式:用户输入端支持中文大白话描述,ChatGPT优化描述
-
专业模式:插件式提供海量更适合模型的英文prompt
✅ 账号管理
-
游客登录(IP / 浏览器指纹)
-
登录注册(手机号 / 账号密码 / 微信TODO)
-
API-Key管理(用户可上传自己的API-Key,不受限制。否则使用系统的API-Key,会根据用户等级不同设置当日聊天限制)
-
用户等级管理(普通用户、vip用户、管理员、游客)
✅ 文字冒险游戏
-
多主题设置
-
游戏记录存储 + 按键互动
-
TODO: AI生成场景描述图片 + 背景音乐 + 多游戏选择
✅ 提示库
-
实时修改提示,动态影响系统相关内置功能
-
全局多条件分页搜索
-
提示库管理(权限管理 + 提示增删查改)
✅ 其它
-
轮询调度API-Key + 定时失效检测
-
异步优化请求响应时间
-
定时任务刷新缓存
-
OpenAI多模型选择 + 参数自定义
✅ 智能简历 TODO
-
创建简历 -> 专业模板 -> 智能优化
-
ChatGPT智能分析简历
-
根据简历内容进行对应的面试,模拟真实面试过程
-
支持多次面试
-
自定义模板导出
✅ 口语练习 TODO
- 多种真人语音对话
🎈第零步:科学上网(全局模式) 或 海外服务器
🎈第一步:MySQL导入funai.sql文件
🎈第二步:必配项目 (在项目中全局搜 TODO关键字找到必配条目)
-
配置application.properties
- MySQL
- Redis
- 梦网云短信服务(无需手机注册功能可不填)
-
配置向量库(二选一,推荐选Pinecone; 注意:openai embedding api的向量维度为1536)
-
Pinecone向量库(第三方)
-
去Pinecone申请apikey
1.1 Pinecone官网 进入官网注册你的账号
1.2 创建Index, 其中Pod Type可以自己选择
1.3 在API Keys中可以找到你的API 密钥,还可以从仪表板检索您的环境和索引名称。(用户构建PINECONE_API_URL)
-
在
PineconeApi.java
中完善以下信息private static final String PINECONE_API_URL = "https://xxxxxx.pinecone.io";
-
在MySQL数据库表admin_apikey中插入一条记录,type为4,name为Pinecone的apikey
INSERT INTO `funai`.`admin_apikey` (`type`, `name`) VALUES (4, 'your pinecone apikey');
-
-
Milvus向量库(本地搭建)
-
搭建Milvus
-
在
MilvusClientUtil.java
中完善以下信息private static final MilvusServiceClient milvusClient = new MilvusServiceClient( ConnectParam.newBuilder() .withHost("xx.xx.xx.xx") .withPort(19530) .build());
-
-
🎈第三步:配置OpenAI的apikey
- 创建OpenAI账号,申请apikey
- 在MySQL数据库admin_apikey中插入一条记录,type为0,name为OpenAI的apikey;若该key为免费账号则is_free字段需要填写为1
INSERT INTO `funai`.`admin_apikey` (`type`, `name`, `is_free`) VALUES ('0', 'your openai apikey', '1');
🎈第四步:启动 FunAiApplication 或 在测试类TestChatService中测试chatOneShot方法
请移步 FunAi前端仓库
-
主语言:Java(JDK 1.8)
-
开发框架:SpringBoot
-
核心技术:
- 本地缓存Caffeine LoadingCache
- SSE服务器发送事件
- 算法(双端队列 + 滑动窗口 + 轮询负载均衡等)
- Stream流
- 锁机制
- 定时任务
- 拦截器(登录拦截/管理员权限/限流/功能限制)
- 过滤器(跨域/全局日志)
- 全局异常处理器
- JWT用户鉴权
- Swagger
-
数据库:MySQL 5.7、Pinecone、Milvus 2.2.5
-
中间件:Redis 7.0.11, MyBatis-Plus
-
对象存储: 阿里云OSS
-
第三方API:Openai-ChatGPT、Openai-Embedding、梦网云短信服务、百度语音识别
- web 服务:Nginx
- 海外服务器\本地全局科学上网
✅ ChatGPT聊天
✅ 文生图
✅ PDF智能阅读(论文 / 简历 / 知识文档等)
✅ 文字冒险游戏
✅ 专家系统
- 多领域(投资、广告、小说、计算机、诗歌、哲学、医学、心理学等) + 多语言(中、英、日、韩...等)
✅ 智能语言学家(更像人类的翻译官)
✅ 提示库
✅ 账号管理
✅ 智能简历 (TODO)
✅ 口语练习 (TODO)
如果你认为我的项目对你很有帮助,而且情况允许的话,那么请考虑支持我的项目。我将非常感激任何的支持,哪怕只是一点点的资助,也能激励我持续开发和改进这个项目。
您可以通过以下几种方式支持我的项目:
-
赞助我:您可以通过贡献资金来支持我的项目,这将帮助我支付服务器、工具和其他开发成本。您可以在下方找到资助方式。
-
分享项目:如果您不能贡献资金,但是您认为我的项目非常有价值,那么请考虑分享项目链接给您的朋友和同事。这将有助于我的项目得到更多的关注和支持。如果可以请给一个小小的star!
-
提供反馈:您可以通过提交Issues或者Pull Requests来帮助改进我的项目。如果您发现了任何错误或者您认为我的项目可以改进的地方,欢迎随时向我提供反馈。
-
与我合作:如果您对该项目感兴趣,想加入我们或有定制化需,欢迎随时与我们联系。
总之,非常感谢您对我的项目的支持,我将努力不懈地改进和提高这个项目的质量,让它更好地为您和其他用户服务。
WeChat Pay:
Contact WeChat:
FunAi is licensed under the Apache-2.0 License. See the LICENSE file for more information.
The code is for demo and testing only. 代码仅用于演示和测试。
⚠⚠⚠请勿将本系统代码用于商业用途!