Skip to content

Colasensei/PaperAiChat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 

Repository files navigation

AI 聊天机器人 - 人性化模拟系统

概述

这是一个基于 EasyOCR 和 OpenAI API 的智能聊天机器人,专为模拟真人对话而设计。它可以自动识别屏幕上的对话内容,通过 AI 生成回复,并以极其人性化的方式输入发送。系统支持主动发起对话、智能分段、真实打字模拟等功能,让机器人看起来就像一个真实的聊天对象。

核心特性

1. 智能 OCR 识别

  • 自动截取指定区域的对话内容
  • 支持中英文混合识别
  • 自动去重,避免重复回复

2. 人性化回复生成

  • 基于 OpenAI API 生成自然对话
  • 支持自定义系统提示词
  • 智能判断 null 回复并忽略

3. 真实打字模拟

  • 逐个字符输入,完全模拟真人打字
  • 打字速度根据字符数动态调整
  • 标点符号后自动停顿
  • 每10个字符显示进度

4. 智能分段发送

  • 支持使用 "||" 作为分段符
  • 自动检测分隔符并分段发送
  • 段落间智能延迟,模拟思考过程
  • 每段不超过10字,符合网络聊天习惯

5. 主动消息功能

  • 基于对话历史自然发起话题
  • 极低频控制,避免打扰
  • 每日主动次数限制
  • 用户不活跃时才触发
  • 支持手动强制发送 (按 A 键)

6. 完整的控制系统

  • 热键暂停/继续
  • 实时状态监控
  • 详细的日志记录
  • 优雅的错误处理

提示词建议

非常建议在提示词文件中包含以下内容:

模拟真实对话,不使用markdown格式。

模拟真实线上聊天,用"||"将回复隔开。每段一般不超过10字。网络聊天,尽量少用标点。

不要出现换行符。

如果用户的内容是完全无法理解的奇异内容(考虑识图错误)或你完全无法回复,输出"null"

这样设置可以确保:

  • 回复风格更像真人聊天
  • 自动分段发送,每段简短自然
  • 避免使用 Markdown 格式
  • 遇到无法识别的内容自动返回 null

快速开始

首次运行

  1. 双击 start.bat
  2. 按提示完成配置向导:
    • 输入 API 密钥和地址
    • 选择 OCR 识别语言
    • 用鼠标框选消息区域
    • 设置提示词(可直接指定 prompt.txt)
    • 配置对话节奏和打字速度
    • 设置主动消息频率

安装依赖

pip install easyocr pyautogui pyperclip keyboard openai pillow numpy schedule

目录结构

你的项目目录/
├── start.bat          # 启动脚本
├── PaperAiChat.py            # 主程序
├── prompt.txt         # 提示词文件(推荐)
├── logs/              # 日志目录(自动创建)
└── config.json        # 配置文件(首次运行生成)

热键控制

热键 功能
Pause/F8 切换暂停/继续
Ctrl+P 强制暂停
Ctrl+R 强制继续
S 显示运行状态
L 显示日志路径
A 强制发送主动消息
Q 退出程序
H 显示帮助

⚙️ 配置文件说明

基础配置

{
    "api_key": "sk-xxx",
    "api_url": "https://api.openai.com/v1",
    "model_name": "gpt-3.5-turbo",
    "ocr_langs": ["ch_sim", "en"]
}

消息区域

"message_region": {
    "x1": 500, "y1": 300,    // 左上角坐标
    "x2": 1200, "y2": 400,   // 右下角坐标
    "width": 700, "height": 100  // 自动计算
}

人性化参数

{
    "human_pace": "平衡",           // 快速/平衡/慢速
    "min_think_time": 1.0,          // 最小思考时间
    "max_think_time": 3.0,          // 最大思考时间
    "typing_speed_min": 3,          // 最慢打字速度
    "typing_speed_max": 8,          // 最快打字速度
    "segment_delimiter": "||"       // 分段符
}

主动消息配置

{
    "active_message_frequency": 1,   // 每小时主动次数
    "max_daily_active_messages": 8,  // 每日上限
    "min_user_inactive_time": 60     // 用户不活跃阈值(秒)
}

运行状态说明

程序运行时按 S 键可查看详细状态:

============================================================
运行状态
============================================================
运行时间: 00:15:23
系统状态: 运行中
对话节奏: 平衡
平均响应时间: 2.34秒

主动消息统计:
今日主动: 2/8
总主动次数: 2
上次主动: 5分钟前
上次用户: 1分钟前

会话统计:
消息处理: 15
错误计数: 0
Null回复: 1
历史记录: 14

打字统计:
总输入字符: 856
总输入时间: 142.3秒
平均速度: 6.0字符/秒

日志系统

所有运行记录自动保存到 logs/ 目录:

  • 文件名格式:session_YYYYMMDD_HHMMSS.log
  • 包含完整的对话历史、错误信息和性能统计
  • 结构化日志,便于分析和调试

注意事项

  1. Python 版本:推荐使用 Python 3.8-3.11
  2. 首次运行:需要下载 OCR 模型,请保持网络畅通
  3. API 密钥:请妥善保管,不要分享
  4. 消息区域:确保选择的区域只包含对话内容
  5. 主动消息:默认频率较低,可通过配置调整
  6. 分段符:建议提示词中包含 "||" 分段指令

故障排除

OCR 初始化失败

  • 检查网络连接
  • 手动下载模型文件到 C:\Users\用户名\.EasyOCR\model\

程序无响应

  • Pause/F8 检查是否暂停
  • 查看日志文件定位错误
  • Q 强制退出

主动消息不触发

  • 确认配置中 active_message_frequency > 0
  • 检查今日主动次数是否已达上限
  • 确认用户是否已超过不活跃阈值

设计理念

  1. 真实感:所有延迟和速度都基于真实数据模拟
  2. 非侵入性:主动消息极低频,绝不打扰
  3. 可配置性:几乎所有参数都可调整
  4. 可靠性:完善的错误处理和日志系统
  5. 透明度:实时状态显示,运行过程全可见

许可证

仅供个人学习和研究使用。请遵守相关API服务条款和法律法规。


开始使用吧!让 AI 成为你最真实的聊天伙伴。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors