An AI girl friend in memory of my broken love
jess - 一个支持长期记忆的AI聊天应用,提供个性化的AI聊天角色(Profile)系统。
- 🤖 多AI聊天角色支持(公开/私有)
- 💾 基于ChromaDB的长期记忆系统
- 👥 用户注册、登录、个人资料管理
- 💬 聊天历史记录
- 📨 用户间消息系统
- 🔗 聊天分享链接
- 🎨 积分系统
- 后端: Flask + SQLAlchemy
- 数据库: MySQL (或SQLite)
- AI模型: OpenAI GPT / 百度文心大模型 (可选)
- 向量数据库: ChromaDB
- 数据库迁移: Alembic
python -m venv .venvWindows:
.venv\Scripts\activatemacOS/Linux:
source .venv/bin/activatepip install -r requirement.txt- 复制配置模板:
cp utils/config.py.template utils/config.pyWindows PowerShell:
copy utils\config.py.template utils\config.py- 编辑
utils/config.py,配置以下内容:
import os
# OpenAI API密钥
openai.api_key = 'your-openai-api-key-here'
# 初始用户积分
initial_balance = 100
# Flask密钥(用于session)
secret_key = 'your-secret-key-here'
# 数据库连接字符串
# MySQL示例:
connection_str = "mysql+pymysql://用户名:密码@localhost:3306/数据库名"
# 或者使用SQLite(开发环境):
# connection_str = "sqlite:///jess.db"
# ChromaDB缓存路径
cache_uri = './blob/'方式一:使用MySQL(推荐生产环境)
- 创建数据库:
CREATE DATABASE jess_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;- 配置
utils/config.py:
connection_str = "mysql+pymysql://root:mypassword@localhost:3306/jess_db"- 配置
alembic.ini(第63行):
sqlalchemy.url = mysql+pymysql://root:mypassword@localhost:3306/jess_db方式二:使用SQLite(开发环境)
配置 utils/config.py:
connection_str = "sqlite:///./jess.db"配置 alembic.ini:
sqlalchemy.url = sqlite:///./jess.db项目已包含15个迁移文件,执行以下命令初始化数据库:
# 运行所有迁移,创建表结构
alembic upgrade head成功执行后,将创建以下数据库表:
user- 用户表profile- AI角色表chat_history- 聊天历史user_profile_rel- 用户与角色关系表balance- 积分余额表message- 用户消息表sharing_link- 分享链接表
# 查看当前数据库版本
alembic current
# 查看迁移历史
alembic history
# 回滚到上一个版本
alembic downgrade -1
# 创建新的迁移文件(修改模型后)
alembic revision --autogenerate -m "描述信息"mkdir blobWindows:
New-Item -ItemType Directory -Path blob -Forcepython server.py服务器将在 http://localhost:8080 启动
打开浏览器访问:http://localhost:8080
jess/
├── bot/ # AI机器人相关代码
│ ├── agent.py # Agent代理
│ ├── chat.py # 聊天处理
│ └── v1/ # 版本1实现
├── controllers/ # Flask路由控制器
│ ├── chat.py # 聊天页面
│ ├── profile.py # 角色管理
│ ├── register.py # 用户注册
│ └── v1/ # API v1
├── ernie/ # 百度文心大模型支持
├── migrations/ # Alembic数据库迁移文件
├── models/ # 数据库模型定义
│ └── __init__.py # 所有表模型
├── services/ # 业务逻辑层
│ ├── chat.py # 聊天服务
│ ├── llm.py # LLM调用封装
│ └── long_term_momory_service.py # 长期记忆服务
├── static/ # 静态资源(CSS/JS/图片)
├── templates/ # HTML模板
├── utils/ # 工具函数
│ ├── config.py.template # 配置模板
│ ├── model_repos.py # 数据访问层
│ └── decorators.py # 装饰器
├── alembic.ini # Alembic配置
├── context.py # 应用上下文
├── requirement.txt # 依赖列表
└── server.py # 启动文件
建议使用环境变量管理敏感信息:
Linux/macOS:
export OPENAI_API_KEY='your-api-key'
export SECRET_KEY='your-secret-key'
export DATABASE_URL='mysql+pymysql://user:pass@localhost/jess_db'Windows PowerShell:
$env:OPENAI_API_KEY='your-api-key'
$env:SECRET_KEY='your-secret-key'
$env:DATABASE_URL='mysql+pymysql://user:pass@localhost/jess_db'- 检查MySQL服务是否运行
- 验证
utils/config.py和alembic.ini中的连接字符串是否一致 - 确认数据库用户权限
- 确认数据库已创建
- 确认API密钥已正确配置在
utils/config.py - 检查网络连接
- 验证API配额
- 确保
blob/目录存在且有写入权限 - 检查磁盘空间
- 如遇到sqlite3错误(Linux),项目会自动使用pysqlite3
- 确保Python版本 >= 3.8
- 尝试升级pip:
pip install --upgrade pip - 逐个安装依赖排查问题
- 修改
models/__init__.py中的模型定义 - 生成迁移文件:
alembic revision --autogenerate -m "描述变更"- 检查生成的迁移文件(在
migrations/versions/目录下) - 应用迁移:
alembic upgrade head项目使用ChromaDB实现对话的长期记忆功能:
- 对话内容会被向量化存储
- 系统会根据当前对话检索相关历史记忆
- 支持语义搜索,提供更智能的上下文回复
请查看 LICENSE 文件
An AI girl friend in memory of my broken love.