python+阿里百炼api实现根据用户需求ai自动调用api编写web应用代码

代码语言:python

所属分类:其他

代码描述:python+阿里百炼api实现根据用户需求ai自动调用api编写web应用代码,利用阿里百炼众多 文生图、文生视频、文本转语音、ai大模型等接口可自动组合生成一个用户需要的网页,类似与google ai stuido中的build功能,ai自动调用api编写自动调用api生成web前端应用代码。

代码标签: python 阿里 百炼 api 根据 用户 需求 ai 自动 调用 api 编写 web 应用

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

import os
import sys
import json
import time
import uuid
import datetime
import requests
import logging
import dashscope
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

# ================= 配置区域 =================
# 请设置你的 API Key
DASHSCOPE_API_KEY = os.getenv("DASHSCOPE_API_KEY", "sk-")
# 阿里云百炼兼容 OpenAI 协议
CODE_GEN_BASE_URL = "https://dashscope.aliyuncs.com/compatible-mode/v1"
CODE_GEN_MODEL = "qwen-flash"  # 推荐 qwen-max 用于生成代码

# 初始化配置
dashscope.api_key = DASHSCOPE_API_KEY
client = OpenAI(api_key=DASHSCOPE_API_KEY, base_url=CODE_GEN_BASE_URL)

# 本地存储配置
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 Pro")
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['id'] == app_id:
                if 'messages' not in a: a['messages'] = []
                a['messages'].append({
                    "role": role,
                    "content": content,
                    "timestamp": datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
                })
                found = True
                break
        if found:
            self._save_data(apps)
        return found

    def delete(self, app_id):
        apps = self._load_data()
        apps = [a for a in apps if a['id'] != app_id]
        self._save_data(apps)

db = AppManager()

# ==========================================
# 第二部分:嵌入的前端界面 (Dashboard HTML)
# ==========================================

HTML_TEMPLATE = """
<!DOCTYPE html>
<.........完整代码请登录后点击上方下载按钮下载查看

网友评论0