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