python+千问大模型api实现ai无限画布与聊天并存文生图图片编辑Bfwflowchat代码

代码语言:python

所属分类:其他

代码描述:python+千问大模型api实现ai无限画布与聊天并存文生图图片编辑Bfwflowchat代码,融合了ai聊天与无限画布的多节点拖拽多选,可以选择文本图片作为参考聊天生成新的文本或图片,类似loveart。

代码标签: python 千问 大模型 api ai 无限 画布 聊天 并存 文生图 图片 编辑 Bfwflow

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

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import os
import json
import uuid
import base64
import urllib.request
import urllib.error
from pathlib import Path
from flask import Flask, request, jsonify, send_from_directory

# ============================================================
# 配置 - 阿里云 DashScope (百炼)
# ============================================================
DASHSCOPE_API_KEY = os.environ.get("DASHSCOPE_API_KEY", "sk-")

WORK_DIR = Path("ai_canvas_workspace")
WORK_DIR.mkdir(exist_ok=True)

app = Flask(__name__)

# ============================================================
# 辅助工具
# ============================================================
def get_base64_uri(local_filepath: Path, file_type="image") -> str:
    with open(local_filepath, "rb") as f: 
        b64_data = base64.b64encode(f.read()).decode("utf-8")
    ext = local_filepath.suffix.lower().replace(".", "")
    if file_type == "image":
        if ext in ["jpg", "jpeg"]: ext = "jpeg"
        return f"data:image/{ext};base64,{b64_data}"
    elif file_type == "audio":
        return f"data:audio/{ext};base64,{b64_data}"
    elif file_type == "video":
        return f"data:video/{ext};base64,{b64_data}"
    return b64_data

# ============================================================
# 阿里云 DashScope API
# ============================================================
def dashscope_qwen_vl_chat(prompt, base64_images=None):
    """使用 qwen-vl-max 进行多模态对话 (图+文)"""
    content = []
    if base64_images:
        for b64 in base64_images:
            content.append({"image": b64})
    content.append({"text": prompt})

    payload = {
        "model": "qwen-vl-max",
        "input": {
            "messages": [{"role": "user", "content": content}]
        }
    }
    try:
        req = urllib.request.Request(
            "https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation", 
            data=json.dumps(payload).encode('utf-8'), 
            headers={"Authorization": f"Bearer {DASHSCOPE_API_KEY}", "Content-Type": "application/json"}, 
            method="POST"
        )
        with urllib.request.urlopen(req, timeout=120) as response:
            result = json.loads(response.read().decode('utf-8'))
            return result.get("output", {}).get("choices", [])[0].get("message", {}).get("content", [{"text": ""}])[0].get("text", "")
    except Exception as e:
        print(f"VL API Error: {e}")
        return f"AI 请求失败: {str(e)}"

def dashscope_generate_image(prompt, ref_image_b64=None):
    """使用 qwen-image-2.0-pro 生图/图生图"""
    content = []
    if ref_image_b64:
        content.append({"image": ref_image_b64})
    content.append({"text": prompt})

    payload = {
        "model":.........完整代码请登录后点击上方下载按钮下载查看

网友评论0