python+gemini+阿里百炼api实现根据用户需求ai自动调用api编写web应用代码
代码语言:python
所属分类:其他
代码描述:python+gemini+阿里百炼api实现根据用户需求ai自动调用api编写web应用代码,利用阿里百炼众多 文生图、文生视频、文本转语音、ai大模型等接口可自动组合生成一个用户需要的网页,类似与google ai stuido中的build功能,ai自动调用api编写自动调用api生成web前端应用代码。生成web应用主要是gemini,其他的api是阿里百炼的,可以自己修改加入第三方api。
代码标签: python gemini 阿里 百炼 api 根据 用户 需求 ai 自动 调用 api 编写 w
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
import os
import sys
import json
import time
import uuid
import datetime
import requests
import logging
import dashscope
import google.generativeai as genai
from typing import Optional, List, Dict, Any, Union
from pathlib import Path
from fastapi import FastAPI, HTTPException, BackgroundTasks
from fastapi.responses import HTMLResponse, JSONResponse
from fastapi.staticfiles import StaticFiles
from pydantic import BaseModel
from openai import OpenAI
from dashscope.audio.tts_v2 import SpeechSynthesizer
# ================= 配置区域 =================
# 1. 阿里云 DashScope 配置 (用于 绘图/视频/TTS/内置聊天)
DASHSCOPE_API_KEY = os.getenv("DASHSCOPE_API_KEY", "sk-")
# 2. Google Gemini 配置 (仅用于 生成代码)
# ⚠️ 请确保设置了环境变量 GOOGLE_API_KEY
GOOGLE_API_KEY = os.getenv("GOOGLE_API_KEY", "")
# 推荐使用 gemini-1.5-pro 或 gemini-2.0-flash-exp (如果可用)
GEMINI_MODEL_NAME = "gemini-2.0-flash-exp"
# ================= 初始化 =================
# 初始化 DashScope (用于工具调用)
dashscope.api_key = DASHSCOPE_API_KEY
# 为了方便调用 Qwen 进行普通对话(非写代码),我们保留 OpenAI 兼容客户端
qwen_client = OpenAI(
api_key=DASHSCOPE_API_KEY,
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
# 初始化 Gemini (用于写代码)
if GOOGLE_API_KEY:
genai.configure(api_key=GOOGLE_API_KEY)
gemini_model = genai.GenerativeModel(GEMINI_MODEL_NAME)
else:
print("⚠️ 警告: 未设置 GOOGLE_API_KEY,代码生成功能将无法使用。")
gemini_model = None
# 本地存储配置
STATIC_DIR = "static_files"
DATA_DIR = "data"
APPS_FILE = os.path.join(DATA_DIR, "apps.json")
os.makedirs(STATIC_DIR, exist_ok=True)
os.makedirs(DATA_DIR, exist_ok=True)
app = FastAPI(title="AI App Factory (Gemini Edition)")
app.mount("/static", StaticFiles(directory=STATIC_DIR), name="static")
# ==========================================
# 第一部分:持久化层 (简单 JSON 数据库)
# ==========================================
class AppManager:
def __init__(self):
self.filepath = APPS_FILE
if not os.path.exists(self.filepath):
self._save_data([])
def _load_data(self) -> List[Dict]:
try:
with open(self.filepath, 'r', encoding='utf-8') as f:
data = json.load(f)
# 兼容性处理:确保所有记录都有 messages 字段
for item in data:
if 'messages' not in item:
item['messages'] = []
return data
except:
return []
def _save_data(self, data: List[Dict]):
with open(self.filepath, 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=2)
def get_all(self):
return self._load_data()
def get_one(self, app_id):
apps = self._load_data()
for a in apps:
if a['id'] == app_id: return a
return None
def create(self, name="New App"):
apps = self._load_data()
new_app = {
"id": str(uuid.uuid4()),
"name": name,
"created_at": datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
"code": "",
"messages": [] # 初始化聊天记录
}
apps.insert(0, new_app)
self._save_data(apps)
return new_app
def update_code(self, app_id, code, name=None):
apps = self._load_data()
found = False
for a in apps:
if a['id'] == app_id:
if code is not None: a['code'] = code
if name is not None: a['name'] = name
found = True
break
if found:
self._save_data(apps)
return found
def add_message(self, app_id, role, content):
apps = self._load_data()
found = False
for a in apps:
if a[.........完整代码请登录后点击上方下载按钮下载查看















网友评论0