feat: 安装第三方依赖

This commit is contained in:
hp0912 2026-04-04 23:18:06 +08:00
parent 6438efee40
commit 705ac89d1c
4 changed files with 65 additions and 24 deletions

View File

@ -36,7 +36,19 @@ argument-hint: "需要 prompt 参数(画图提示词),可选 model
"model": {
"type": "string",
"description": "画图模型选择可选即梦4.5(jimeng-4.5) / 即梦4.6(jimeng-4.6) / 即梦5.0(jimeng-5.0) / 豆包4.5(doubao-seedream-4.5) / 豆包4.0(doubao-seedream-4.0) / 豆包文生图(doubao-seedream-3.0-t2i) / 豆包图生图(doubao-seededit-3.0-i2i) / 造相基础版(Z-Image) / 造相蒸馏版(Z-Image-Turbo) / 造相图片编辑(Qwen-Image-Edit-2511),默认: 空(none)。",
"enum": ["none", "jimeng-4.5", "jimeng-4.6", "jimeng-5.0", "doubao-seedream-4.5", "doubao-seedream-4.0", "doubao-seedream-3.0-t2i", "doubao-seededit-3.0-i2i", "Z-Image", "Z-Image-Turbo", "Qwen-Image-Edit-2511"],
"enum": [
"none",
"jimeng-4.5",
"jimeng-4.6",
"jimeng-5.0",
"doubao-seedream-4.5",
"doubao-seedream-4.0",
"doubao-seedream-3.0-t2i",
"doubao-seededit-3.0-i2i",
"Z-Image",
"Z-Image-Turbo",
"Qwen-Image-Edit-2511"
],
"default": "none"
},
"negative_prompt": {
@ -68,12 +80,21 @@ argument-hint: "需要 prompt 参数(画图提示词),可选 model
- `MYSQL_USER`MySQL 数据库用户名。
- `MYSQL_PASSWORD`MySQL 数据库密码。
## 依赖安装
- 在执行 `text-to-image/scripts/text_to_image.py` 之前,必须先安装依赖。
- 建议优先执行安装脚本:`python3 skills/text-to-image/scripts/bootstrap.py`
- 该脚本会自动执行:`python3 -m pip install -r skills/text-to-image/scripts/requirements.txt`
- 如果不使用安装脚本,也可以直接执行:`python3 -m pip install -r skills/text-to-image/scripts/requirements.txt`
- 如果环境里已经安装过这些依赖,重复安装通常不会报错,只会做已满足检查。
## 执行步骤
1. 当用户输入绘图相关内容时触发该技能。
2. 从用户输入中提取 prompt画图提示词不对提示词做总结或修改。可选提取 model、negative_prompt、ratio、resolution 参数。
3. 将参数组装为 JSON 字符串,在仓库根目录下执行本地脚本:`python3 text-to-image/scripts/text_to_image.py '<JSON参数>'`。
4. 脚本内部执行逻辑:
3. 在执行脚本前,先安装依赖:`python3 skills/text-to-image/scripts/bootstrap.py`,或直接执行 `python3 -m pip install -r skills/text-to-image/scripts/requirements.txt`
4. 将参数组装为 JSON 字符串,在仓库根目录下执行本地脚本:`python3 text-to-image/scripts/text_to_image.py '<JSON参数>'`。
5. 脚本内部执行逻辑:
- 连接 MySQL 数据库(数据库名 = `ROBOT_CODE`)。
- 查询 `global_settings` 表获取全局绘图配置(`image_ai_enabled`、`image_ai_settings`)。
- 如果 `ROBOT_FROM_WX_ID``@chatroom` 结尾,查询 `chat_room_settings` 表(`WHERE chat_room_id = ?`)覆盖全局配置;否则查询 `friend_settings` 表(`WHERE wechat_id = ?`)覆盖全局配置。
@ -81,7 +102,7 @@ argument-hint: "需要 prompt 参数(画图提示词),可选 model
- 解析 `image_ai_settings` JSON根据选择的模型提取对应配置JiMeng / DouBao / Z-Image
- 调用对应的绘图 API 生成图片。
- 输出图片 URL。
5. 如果脚本执行失败,回复兜底文案:`AI 绘图暂时不可用,请稍后再试。`
6. 如果脚本执行失败,回复兜底文案:`AI 绘图暂时不可用,请稍后再试。`
## 回复要求

View File

@ -0,0 +1,38 @@
#!/usr/bin/env python3
from __future__ import annotations
import subprocess
import sys
from pathlib import Path
def main() -> int:
script_dir = Path(__file__).resolve().parent
requirements_file = script_dir / "requirements.txt"
if not requirements_file.is_file():
sys.stderr.write(f"未找到依赖文件: {requirements_file}\n")
return 1
command = [
sys.executable,
"-m",
"pip",
"install",
"-r",
str(requirements_file),
]
try:
subprocess.run(command, check=True)
except subprocess.CalledProcessError as exc:
sys.stderr.write(f"安装依赖失败,退出码: {exc.returncode}\n")
return exc.returncode or 1
sys.stdout.write("依赖安装完成\n")
return 0
if __name__ == "__main__":
raise SystemExit(main())

View File

@ -0,0 +1 @@
pymysql>=1.1,<2

View File

@ -5,29 +5,10 @@ from __future__ import annotations
import json
import os
import re
import subprocess
import sys
import time
import urllib.request
# ---------------------------------------------------------------------------
# Dependency bootstrap
# ---------------------------------------------------------------------------
def _ensure_package(pip_name: str, import_name: str | None = None) -> None:
"""Install *pip_name* if it cannot be imported."""
try:
__import__(import_name or pip_name)
except ImportError:
subprocess.check_call(
[sys.executable, "-m", "pip", "install", pip_name, "-q"],
stdout=subprocess.DEVNULL,
)
_ensure_package("pymysql")
import pymysql # type: ignore # noqa: E402