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%