
CodeBuddy IDE 是腾讯推出的一款全栈开发AI工具,旨在整合产品设计、研发和部署的全流程。用户只需用自然语言描述需求,CodeBuddy IDE 就能自动生成结构化的需求文档、交互原型、前端代码及后端服务,支持一键部署上线。它还集成了多种顶尖AI模型,帮助用户在无需编写代码的情况下实现应用开发,大幅提升开发效率。

CodeBuddy IDE 不仅是工具,更是AI 全栈工程师的协作者,致力于让开发变得更高效、智能。

1.首先在官网下载CodeBuddy IDE。

2.在安装过程中,根据流程继续安装。


3.在安装完成即可打开IDE。

4.CodeBuddy IDE打开效果如下。

5.CodeBuddy IDE登录账号。

6.可以开始使用了。

5.目前需求填写邀请码即可开始使用。

6.进入CodeBuddy IDE,即可开始愉快的编写代码了。

项目需求描述(用于 AI IDE Prompt)
✅ AI 可理解的项目需求描述(Python + 原生前端)
我想开发一个 AI 问答助手网站,后端使用 Python(FastAPI),前端使用 HTML、CSS 和 JavaScript(不使用 React/Vue 等框架)。🌐 需求详情如下:
用户在网页输入框中输入问题,点击“发送”按钮后,前端将问题通过 POST 请求发送到
/api/chat; 后端接收到请求后,调用 OpenAI ChatGPT 接口(或兼容接口)获取回答; 后端返回 JSON 数据{ "answer": "..." }; 前端接收返回后,渲染用户输入和 AI 回复到页面; 支持多轮对话,前端维护一个对话history数组,并一并发送给后端; 前端支持基本样式美化,包括聊天气泡、滚动聊天框、响应式布局; AI 回复内容支持显示 Markdown(例如代码块、加粗文本),可以通过 JavaScript 插件或简单转换支持; 初期无需用户登录与鉴权,但需要预留扩展点; 文件结构建议清晰分离前后端; 使用 Python 编写后端,提供/api/chat接口,接收参数:question: str和history: List[Dict]; 前后端部署可在本地(如 uvicorn + simple HTTP server)运行。


├── api/ # 后端API目录
│ └── main.py # FastAPI后端实现
├── static/ # 静态资源目录
│ ├── css/ # CSS样式文件
│ │ └── style.css # 主样式文件
│ └── js/ # JavaScript文件
│ └── script.js # 主脚本文件
├── templates/ # HTML模板目录
│ └── index.html # 主页面模板
├── .env # 环境变量配置
├── server.py # 主服务器文件
└── README.md # 项目说明文档这是一个使用Python FastAPI作为后端,HTML、CSS和JavaScript作为前端的AI问答助手网站。
扩展点
- 用户认证:可以添加用户登录和注册功能
- 数据库集成:可以添加数据库来存储用户信息和对话历史
- 更多AI模型支持:可以扩展后端以支持更多的AI模型
- 自定义设置:可以添加设置页面让用户自定义AI参数

可以通过浏览器访问 localhost:8000]来使用我们的AI问答助手。输入问题并点击"发送"按钮,能够收到来自大模型的回答。




体验下来,CodeBuddy IDE写的项目,非常之完美!本次体验满分。

服务端
import uvicorn
from fastapi import FastAPI, Request
from fastapi.responses import HTMLResponse
from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates
import os
from api.main import app as api_app
# 创建主应用
app = FastAPI(title="AI问答助手")
# 挂载API路由
app.mount("/api", api_app)
# 挂载静态文件
app.mount("/static", StaticFiles(directory="static"), name="static")
# 设置模板
templates = Jinja2Templates(directory="templates")
@app.get("/", response_class=HTMLResponse)
async def read_root(request: Request):
return templates.TemplateResponse("index.html", {"request": request})
if __name__ == "__main__":
uvicorn.run("server:app", host="0.0.0.0", port=8000, reload=True)主要后端程序
from fastapi import FastAPI, HTTPException
from fastapi.middleware.cors import CORSMiddleware
from pydantic import BaseModel
from typing import List, Dict, Optional
import os
import requests
import json
from dotenv import load_dotenv
# 加载环境变量
load_dotenv()
# 初始化 API 配置
api_key = os.getenv("OPENAI_API_KEY")
api_base = os.getenv("OPENAI_API_BASE", "https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions")
app = FastAPI(title="AI问答助手API")
# 配置CORS
app.add_middleware(
CORSMiddleware,
allow_origins=["*"], # 允许所有来源,生产环境应该限制
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
class ChatRequest(BaseModel):
question: str
history: Optional[List[Dict[str, str]]] = []
@app.post("/chat")
async def chat(request: ChatRequest):
# 检查API密钥是否已设置
if not api_key or api_key == "your_api_key_here":
return {"answer": "请在.env文件中设置有效的API密钥。详情请查看README.md文件。"}
try:
# 准备对话历史
messages = []
# 添加历史消息
for msg in request.history:
if "user" in msg:
messages.append({"role": "user", "content": msg["user"]})
if "assistant" in msg:
messages.append({"role": "assistant", "content": msg["assistant"]})
# 添加当前问题
messages.append({"role": "user", "content": request.question})
# 准备请求数据
payload = {
"model": "qwen-max", # 通义千问模型
"messages": messages,
"max_tokens": 1000,
"temperature": 0.7
}
# 设置请求头
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {api_key}"
}
# 发送请求
response = requests.post(
api_base,
headers=headers,
data=json.dumps(payload)
)
# 检查响应状态
response.raise_for_status()
# 解析响应
response_data = response.json()
# 提取回答
answer = response_data["choices"][0]["message"]["content"]
return {"answer": answer}
except Exception as e:
# 记录错误
print(f"API错误: {str(e)}")
# 返回友好的错误消息
return {"answer": f"抱歉,调用AI服务时出现错误。请确保您的API密钥有效并且有足够的配额。\n\n技术详情: {str(e)}"}
@app.get("/")
async def root():
return {"message": "AI问答助手API已启动"}
if __name__ == "__main__":
import uvicorn
uvicorn.run("main:app", host="0.0.0.0", port=8000, reload=True)主要前端程序
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>AI问答助手</title>
<link rel="stylesheet" href="/static/css/style.css">
<!-- 引入Markdown渲染库 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/highlight.js@11.7.0/styles/github.min.css">
<script src="https://cdn.jsdelivr.net/npm/marked@4.3.0/marked.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/highlight.js@11.7.0/lib/highlight.min.js"></script>
</head>
<body>
<div class="container">
<header>
<h1>AI问答助手</h1>
</header>
<main>
<div class="chat-container" id="chatContainer">
<div class="welcome-message">
<p>👋 你好!我是AI助手,有什么可以帮助你的吗?</p>
</div>
<!-- 聊天消息将在这里动态添加 -->
</div>
<div class="input-container">
<textarea id="userInput" placeholder="请输入你的问题..." rows="3"></textarea>
<button id="sendButton" type="button">发送</button>
</div>
</main>
<footer>
<p>© 2023 AI问答助手 | 基于OpenAI技术</p>
</footer>
</div>
<script src="/static/js/script.js"></script>
</body>
</html>JS
document.addEventListener('DOMContentLoaded', function() {
// 获取DOM元素
const chatContainer = document.getElementById('chatContainer');
const userInput = document.getElementById('userInput');
const sendButton = document.getElementById('sendButton');
// 存储对话历史
let chatHistory = [];
// 配置marked库以支持代码高亮
marked.setOptions({
highlight: function(code, lang) {
if (lang && hljs.getLanguage(lang)) {
return hljs.highlight(code, { language: lang }).value;
}
return hljs.highlightAuto(code).value;
},
breaks: true
});
// 发送消息函数
async function sendMessage() {
const question = userInput.value.trim();
// 检查是否有输入
if (!question) return;
// 清空输入框
userInput.value = '';
// 添加用户消息到聊天界面
addMessageToChat('user', question);
// 显示加载指示器
const loadingIndicator = addLoadingIndicator();
try {
// 禁用发送按钮
sendButton.disabled = true;
// 准备请求数据
const requestData = {
question: question,
history: chatHistory
};
// 发送API请求
const response = await fetch('/api/chat', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(requestData)
});
// 检查响应状态
if (!response.ok) {
throw new Error(`HTTP error! Status: ${response.status}`);
}
// 解析响应数据
const data = await response.json();
// 移除加载指示器
loadingIndicator.remove();
// 添加AI回复到聊天界面
addMessageToChat('assistant', data.answer);
// 更新聊天历史
chatHistory.push({ user: question });
chatHistory.push({ assistant: data.answer });
} catch (error) {
console.error('Error:', error);
// 移除加载指示器
loadingIndicator.remove();
// 显示错误消息
addMessageToChat('assistant', '抱歉,发生了错误,请稍后再试。');
} finally {
// 重新启用发送按钮
sendButton.disabled = false;
// 滚动到底部
scrollToBottom();
}
}
// 添加消息到聊天界面
function addMessageToChat(role, content) {
const messageDiv = document.createElement('div');
messageDiv.className = `message ${role}-message`;
const bubbleDiv = document.createElement('div');
bubbleDiv.className = `message-bubble ${role}-bubble`;
// 如果是AI回复,使用Markdown渲染
if (role === 'assistant') {
bubbleDiv.classList.add('markdown-content');
bubbleDiv.innerHTML = marked.parse(content);
// 应用代码高亮
bubbleDiv.querySelectorAll('pre code').forEach((block) => {
hljs.highlightElement(block);
});
} else {
bubbleDiv.textContent = content;
}
messageDiv.appendChild(bubbleDiv);
chatContainer.appendChild(messageDiv);
// 滚动到底部
scrollToBottom();
}
// 添加加载指示器
function addLoadingIndicator() {
const messageDiv = document.createElement('div');
messageDiv.className = 'message assistant-message';
messageDiv.id = 'loadingIndicator';
const indicatorDiv = document.createElement('div');
indicatorDiv.className = 'typing-indicator';
for (let i = 0; i < 3; i++) {
const dot = document.createElement('span');
indicatorDiv.appendChild(dot);
}
messageDiv.appendChild(indicatorDiv);
chatContainer.appendChild(messageDiv);
// 滚动到底部
scrollToBottom();
return messageDiv;
}
// 滚动聊天容器到底部
function scrollToBottom() {
chatContainer.scrollTop = chatContainer.scrollHeight;
}
// 发送按钮点击事件
sendButton.addEventListener('click', sendMessage);
// 输入框按下Enter键事件(Shift+Enter换行)
userInput.addEventListener('keydown', function(e) {
if (e.key === 'Enter' && !e.shiftKey) {
e.preventDefault();
sendMessage();
}
});
});css
/* 基础样式重置 */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
line-height: 1.6;
color: #333;
background-color: #f5f5f5;
}
.container {
max-width: 1000px;
margin: 0 auto;
padding: 20px;
display: flex;
flex-direction: column;
min-height: 100vh;
}
header {
text-align: center;
margin-bottom: 20px;
padding: 10px;
background-color: #fff;
border-radius: 10px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
}
header h1 {
color: #4a6fa5;
}
main {
flex: 1;
display: flex;
flex-direction: column;
}
/* 聊天容器样式 */
.chat-container {
flex: 1;
overflow-y: auto;
padding: 20px;
background-color: #fff;
border-radius: 10px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
margin-bottom: 20px;
max-height: 60vh;
}
.welcome-message {
text-align: center;
padding: 20px;
color: #666;
font-style: italic;
}
/* 消息气泡样式 */
.message {
margin-bottom: 15px;
display: flex;
flex-direction: column;
}
.user-message {
align-items: flex-end;
}
.assistant-message {
align-items: flex-start;
}
.message-bubble {
max-width: 80%;
padding: 12px 18px;
border-radius: 18px;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
word-wrap: break-word;
}
.user-bubble {
background-color: #4a6fa5;
color: white;
border-bottom-right-radius: 5px;
}
.assistant-bubble {
background-color: #e9ecef;
color: #333;
border-bottom-left-radius: 5px;
}
/* 输入区域样式 */
.input-container {
display: flex;
gap: 10px;
margin-bottom: 20px;
}
textarea {
flex: 1;
padding: 12px;
border: 1px solid #ddd;
border-radius: 5px;
resize: none;
font-family: inherit;
font-size: 16px;
}
button {
padding: 0 20px;
background-color: #4a6fa5;
color: white;
border: none;
border-radius: 5px;
cursor: pointer;
font-size: 16px;
transition: background-color 0.2s;
}
button:hover {
background-color: #3a5a80;
}
button:disabled {
background-color: #cccccc;
cursor: not-allowed;
}
footer {
text-align: center;
padding: 10px;
color: #666;
font-size: 14px;
}
/* Markdown 样式 */
.markdown-content {
line-height: 1.6;
}
.markdown-content p {
margin-bottom: 10px;
}
.markdown-content h1,
.markdown-content h2,
.markdown-content h3,
.markdown-content h4 {
margin-top: 20px;
margin-bottom: 10px;
}
.markdown-content code {
background-color: #f0f0f0;
padding: 2px 4px;
border-radius: 3px;
font-family: 'Courier New', Courier, monospace;
}
.markdown-content pre {
background-color: #f0f0f0;
padding: 10px;
border-radius: 5px;
overflow-x: auto;
margin: 10px 0;
}
.markdown-content pre code {
background-color: transparent;
padding: 0;
}
.markdown-content ul,
.markdown-content ol {
margin-left: 20px;
margin-bottom: 10px;
}
/* 响应式设计 */
@media (max-width: 768px) {
.container {
padding: 10px;
}
.message-bubble {
max-width: 90%;
}
.input-container {
flex-direction: column;
}
button {
padding: 10px;
}
}
/* 加载动画 */
.typing-indicator {
display: flex;
align-items: center;
padding: 10px 15px;
background-color: #e9ecef;
border-radius: 18px;
border-bottom-left-radius: 5px;
max-width: 100px;
}
.typing-indicator span {
height: 8px;
width: 8px;
background-color: #666;
border-radius: 50%;
display: inline-block;
margin-right: 5px;
animation: bounce 1.3s linear infinite;
}
.typing-indicator span:nth-child(2) {
animation-delay: 0.15s;
}
.typing-indicator span:nth-child(3) {
animation-delay: 0.3s;
margin-right: 0;
}
@keyframes bounce {
0%, 60%, 100% {
transform: translateY(0);
}
30% {
transform: translateY(-4px);
}
}MD使用文档
AI问答助手网站
这是一个使用Python FastAPI作为后端,HTML、CSS和JavaScript作为前端的AI问答助手网站。
功能特点
- 用户可以在网页输入框中输入问题并获取AI回答
- 支持多轮对话,前端维护对话历史
- AI回复内容支持Markdown渲染(包括代码高亮)
- 响应式设计,适配不同设备
- 美观的聊天界面,包括聊天气泡、滚动聊天框等
项目结构
├── api/ # 后端API目录
│ └── main.py # FastAPI后端实现
├── static/ # 静态资源目录
│ ├── css/ # CSS样式文件
│ │ └── style.css # 主样式文件
│ └── js/ # JavaScript文件
│ └── script.js # 主脚本文件
├── templates/ # HTML模板目录
│ └── index.html # 主页面模板
├── .env # 环境变量配置
├── server.py # 主服务器文件
└── README.md # 项目说明文档
安装与运行
1. 安装依赖
pip install fastapi uvicorn python-dotenv openai
2. 配置API密钥
编辑`.env`文件,填入您的API密钥:
OPENAI_API_KEY=sk-your-actual-api-key-here
**支持的模型**:
- 通义千问模型(默认配置)
- OpenAI模型(需要修改基础URL)
**重要提示**:
- 您需要一个有效的API密钥才能使用此应用程序
- 应用程序会检查API密钥是否有效,如果无效会显示友好的错误消息
如果您使用不同的API,可以设置基础URL:
# 通义千问模型
OPENAI_API_BASE=https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
# OpenAI模型
# OPENAI_API_BASE=https://api.openai.com/v1
3. 运行服务器
python server.py
4. 访问网站
在浏览器中访问 http://localhost:8000
使用说明
1. 在输入框中输入您的问题
2. 点击"发送"按钮或按Enter键发送问题
3. 等待AI回复
4. 继续输入问题进行多轮对话
扩展点
- 用户认证:可以添加用户登录和注册功能
- 数据库集成:可以添加数据库来存储用户信息和对话历史
- 更多AI模型支持:可以扩展后端以支持更多的AI模型
- 自定义设置:可以添加设置页面让用户自定义AI参数
技术栈
- 后端:Python FastAPI
- 前端:HTML, CSS, JavaScript
- API:OpenAI ChatGPT
- Markdown渲染:marked.js
- 代码高亮:highlight.jsFigma 是当前最受欢迎的在线 UI 设计平台之一,以其强大的协作功能和直观的界面设计体验广受好评。
在 CodeBuddy IDE 中,Figma 被原生集成,极大提升了设计与开发之间的协同效率。虽然 IDE 同样兼容 Figma 的 MCP 协议(Model Context Protocol),但我个人更偏好直接使用内置的 Figma 面板进行快速交互与可视化构建。
只需点击 IDE 工具栏上的 Figma 图标,即可即时进入设计工作区,体验一站式的界面设计与原型预览,非常高效便捷。

现在我们尝试把下面的TODO网站丢给CodeBuddy IDE,让其生成一个网站。




根据图片生成的效果如下,还不错,完美的复现了所以功能


点击部署按钮可一键部署

部署上线完成!

在本次基于 CodeBuddy IDE 快速构建的 AI 问答助手项目中,我深刻体会到了 AI 工具对前端开发流程带来的巨大变革。过去需要数小时甚至数天才能完成的网页搭建和接口接入工作,在 CodeBuddy 的加持下,只需用自然语言简单描述需求,几分钟内就能得到完整可运行的项目框架和核心功能代码。
在项目开发过程中,我主要完成了以下内容:
这次开发经历让我深刻意识到,AI 不仅是写代码的助手,更是开发流程的“合作者”。它懂语义、理解上下文、甚至能给出结构性建议,极大地释放了创造力与生产力。
收获与感悟
接下来我计划:
如果你也对 AI 开发感兴趣,强烈推荐体验一下像 CodeBuddy IDE 这样的工具。它不仅能“写代码”,更能改变你开发和思考产品的方式。

本项目基于 CodeBuddy IDE 快速搭建了一个支持 OpenAI API 的前端问答助手页面,完整实现了以下目标:
通过本次实践,充分验证了 AI 驱动开发工具在前端快速原型搭建中的高效性和实用性。使用自然语言驱动开发,不仅大幅提升了效率,也降低了实现复杂功能的技术门槛。

CodeBuddy IDE:https://www.codebuddy.ai/
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。