logo
0
0
WeChat Login

AIBattle

一个基于 .NET 10 的实时 AI 对话对战平台,支持两个 AI 模型围绕指定主题进行辩论对话。

功能特性

  • 🎯 实时对战 - 基于 SignalR 的实时双向通信,流畅展示 AI 对话过程
  • 🤖 多模型支持 - 支持 OpenAI、Anthropic Claude、Google Gemini 以及 OpenAI 兼容的本地模型
  • 🌐 Web 界面 - 现代化的响应式 Web UI,支持实时消息流展示
  • ⚙️ 灵活配置 - 通过 appsettings.json 配置模型、对话轮次、温度参数等
  • 🔄 多种模式 - 支持再来一轮、换个话题、重新设置等操作

在线体验

本项目部署在 CNB 平台,可通过云原生开发环境直接体验。

快速开始

环境要求

  • .NET 10 SDK
  • 支持的 AI 模型 API Key(可选多项):
    • OpenAI API Key
    • Anthropic API Key
    • Google API Key
    • 或 CNB 平台的 AI 模型服务

配置

编辑 appsettings.json 文件:

{ "providers": [ { "name": "CNB GLM-5.0", "type": "OpenAI", "apiKey": "${CNB_TOKEN}", "baseUrl": "${CNB_API_ENDPOINT}/${CNB_REPO_SLUG}/-/ai-ide/v2", "modelId": "glm-5.0" }, { "name": "OpenAI GPT-4o", "type": "OpenAI", "apiKey": "${OPENAI_API_KEY}", "baseUrl": "https://api.openai.com/v1", "modelId": "gpt-4o" }, { "name": "Claude 3.5 Sonnet", "type": "Anthropic", "apiKey": "${ANTHROPIC_API_KEY}", "modelId": "claude-3-5-sonnet-20241022" }, { "name": "Gemini Pro", "type": "Gemini", "apiKey": "${GOOGLE_API_KEY}", "modelId": "gemini-pro" } ], "settings": { "maxTurns": 50, "endMarker": "<<end>>", "temperature": 1.0 } }

配置说明

providers(模型提供商)

字段说明
name显示名称,用于 UI 选择
type提供商类型:OpenAIAnthropicGemini
apiKeyAPI 密钥,支持环境变量替换 ${VAR_NAME}
baseUrlAPI 地址(可选,用于自定义端点或本地模型)
modelId模型 ID

settings(全局设置)

字段说明默认值
maxTurns最大对话轮次50
endMarker对话结束标记,AI 发送此标记表示讨论结束<<end>>
temperature生成温度1.0

运行

dotnet run

访问 http://localhost:5000 即可使用。

使用流程

  1. 设置主题 - 输入想要讨论的话题
  2. 选择模型 - 分别为红方和蓝方选择 AI 模型
  3. 开始对话 - 点击开始按钮,观看两个 AI 进行辩论
  4. 后续操作 - 对话结束后可选择:
    • 再来一轮 - 相同设置重新开始
    • 换个话题 - 保持模型,更换主题
    • 重新设置 - 完全重新配置

示例场景

主题: AI 是否会取代程序员 红方: GPT-4o 蓝方: Claude 3.5 Sonnet

两个 AI 将围绕该主题展开激烈的辩论对话。

项目结构

AIBattle/ ├── AIBattle.csproj # 项目配置 ├── Program.cs # 入口文件 ├── appsettings.json # 配置文件 ├── .cnb.yml # CNB 平台配置 ├── Models/ │ ├── AppConfig.cs # 配置模型 │ ├── ProviderType.cs # 提供商类型枚举 │ └── ConversationMessage.cs # 对话消息模型 ├── Services/ │ ├── ConfigLoader.cs # 配置加载器 │ ├── ChatService.cs # 对话服务 │ ├── IChatService.cs # 聊天服务接口 │ ├── OpenAIChatService.cs # OpenAI 服务实现 │ ├── AnthropicChatService.cs # Anthropic 服务实现 │ ├── GeminiChatService.cs # Gemini 服务实现 │ └── ChatServiceFactory.cs # 服务工厂 ├── Hubs/ │ ├── ChatHub.cs # SignalR Hub │ └── ChatRunner.cs # 对话运行器 ├── wwwroot/ │ └── index.html # Web 前端页面 └── README.md

技术栈

  • .NET 10 - 运行时框架
  • ASP.NET Core - Web 框架
  • SignalR - 实时双向通信
  • OpenAI SDK - AI 模型调用
  • System.Text.Json - JSON 处理

部署

CNB 平台部署

项目已配置 .cnb.yml,可直接在 CNB 平台部署:

  1. Fork 本仓库
  2. 在 CNB 平台创建云原生开发环境
  3. 自动启动服务

Docker 部署

docker build -t aibattle . docker run -p 5000:5000 -e OPENAI_API_KEY=your-key aibattle

License

MIT

About

No description, topics, or website provided.
Language
C#57.6%
HTML42.4%