python使用gemini+vue实现支持局部选择多版本的ai聊天对话生成网页应用代码
代码语言:python
所属分类:其他
代码描述:python使用gemini+vue实现支持局部选择多版本的ai聊天对话生成网页应用代码,它会区分你的意图,如果是闲聊,就陪你闲聊,如果你提出做网页应用,他就给你一个初始的需求让你确认或修改,然后生成,每次修改都会保存旧版本,多版本可切换,左侧是聊天历史绘画,中间是ai聊天窗,右侧是生成的网页预览与可视化局部修改某一个区域。
代码标签: python gemini vue 支持 局部 选择 多版本 ai 聊天 对话 生成 网页 应用 代
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
#!/usr/local/python3/bin/python3
# -*- coding: utf-8 -*
import os
import json
import re
import uuid
from typing import List, Optional, Dict, Any
from datetime import datetime
from contextlib import asynccontextmanager
import uvicorn
from fastapi import FastAPI, HTTPException
from fastapi.responses import HTMLResponse, JSONResponse
from pydantic import BaseModel
import google.generativeai as genai
from google.generativeai.types import HarmCategory, HarmBlockThreshold
# ================= 配置区域 =================
# 建议设置环境变量: export GEMINI_API_KEY="你的KEY"
API_KEY = os.environ.get("GEMINI_API_KEY", "YOUR_GEMINI_API_KEY_HERE")
MODEL_NAME = "gemini-1.5-flash"
DB_FILE = "history_db.json" # 数据持久化文件名
# 配置 Google Gemini
genai.configure(api_key=API_KEY)
# ================= 数据模型 & 持久化逻辑 =================
class PageVersion(BaseModel):
version_id: str
timestamp: str
summary: str
html: str
class SessionData:
def __init__(self, session_id: str):
self.session_id = session_id
self.title = "新会话"
self.messages: List[Dict[str, Any]] = []
self.versions: List[PageVersion] = []
self.current_requirements: str = ""
def to_dict(self):
"""序列化为字典用于保存"""
return {
"session_id": self.session_id,
"title": self.title,
"messages": self.messages,
"versions": [v.dict() for v in self.versions],
"current_requirements": self.current_requirements
}
@classmethod
def from_dict(cls, data):
"""从字典恢复对象"""
obj = cls(data["session_id"])
obj.title = data.get("title", "新会话")
obj.messages = data.get("messages", [])
obj.current_requirements = data.get("current_requirements", "")
# 恢复 Pydantic 对象列表
obj.versions = [PageVersion(**v) for v in data.get("versions", [])]
return obj
# 全局内存数据库
sessions: Dict[str, SessionData] = {}
def load_db():
"""启动时加载数据"""
if not os.path.exists(DB_FILE):
return
try:
with open(DB_FILE, 'r', encoding='utf-8') as f:
data = json.load(f)
for sid, s_data in data.items():
sessions[sid] = SessionData.from_dict(s_data)
print(f"成功加载 {len(sessions)} 个历史会话。")
except Exception as e:
print(f"加载历史数据失败 (可能是格式错误): {e}")
def save_db():
"""实时保存数据到硬盘"""
try:
data = {sid: sess.to_dict() for sid, sess in sessions.items()}
with open(DB_FILE, 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=2)
except Exception as e:
print(f"保存数据失败: {e}".........完整代码请登录后点击上方下载按钮下载查看















网友评论0