一个基于 .NET 10 的实时 AI 对话对战平台,支持两个 AI 模型围绕指定主题进行辩论对话。
appsettings.json 配置模型、对话轮次、温度参数等本项目部署在 CNB 平台,可通过云原生开发环境直接体验。
编辑 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
}
}
| 字段 | 说明 |
|---|---|
name | 显示名称,用于 UI 选择 |
type | 提供商类型:OpenAI、Anthropic、Gemini |
apiKey | API 密钥,支持环境变量替换 ${VAR_NAME} |
baseUrl | API 地址(可选,用于自定义端点或本地模型) |
modelId | 模型 ID |
| 字段 | 说明 | 默认值 |
|---|---|---|
maxTurns | 最大对话轮次 | 50 |
endMarker | 对话结束标记,AI 发送此标记表示讨论结束 | <<end>> |
temperature | 生成温度 | 1.0 |
dotnet run
访问 http://localhost:5000 即可使用。
主题: 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
项目已配置 .cnb.yml,可直接在 CNB 平台部署:
docker build -t aibattle . docker run -p 5000:5000 -e OPENAI_API_KEY=your-key aibattle
MIT