新增混元生图功能(未完善)

This commit is contained in:
Asankilp 2024-11-21 19:38:09 +08:00
parent ce6f51f9c9
commit dd1191e602
5 changed files with 72 additions and 1 deletions

View File

@ -3,6 +3,7 @@ from nonebot.plugin import require
require("nonebot_plugin_alconna") require("nonebot_plugin_alconna")
require("nonebot_plugin_localstore") require("nonebot_plugin_localstore")
from .azure import * from .azure import *
from .hunyuan import *
from nonebot import get_driver, logger from nonebot import get_driver, logger
from .config import config from .config import config
from .metadata import metadata from .metadata import metadata

View File

@ -110,7 +110,8 @@ async def load_context(target: MsgTarget, arg: Message = CommandArg()):
@resetmem_cmd.handle() @resetmem_cmd.handle()
async def resetmem(target: MsgTarget): async def resetmem(target: MsgTarget):
if [target.id, target.private] not in target_list: target_list.append([target.id, target.private]) if [target.id, target.private] not in target_list:
target_list.append([target.id, target.private])
context.reset(target.id, target.private) context.reset(target.id, target.private)
await resetmem_cmd.finish("上下文已重置") await resetmem_cmd.finish("上下文已重置")

View File

@ -29,6 +29,8 @@ class ConfigModel(BaseModel):
marshoai_max_tokens: int | None = None marshoai_max_tokens: int | None = None
marshoai_top_p: float | None = None marshoai_top_p: float | None = None
marshoai_additional_image_models: list = [] marshoai_additional_image_models: list = []
marshoai_tencent_secretid: str | None = None
marshoai_tencent_secretkey:str | None = None
config: ConfigModel = get_plugin_config(ConfigModel) config: ConfigModel = get_plugin_config(ConfigModel)

View File

@ -0,0 +1,36 @@
import contextlib
import traceback
import json
from typing import Optional
from arclet.alconna import Alconna, Args, AllParam
from nonebot import on_command, logger
from nonebot.adapters import Message, Event
from nonebot.params import CommandArg
from nonebot.permission import SUPERUSER
from nonebot_plugin_alconna import on_alconna, MsgTarget
from nonebot_plugin_alconna.uniseg import UniMessage, UniMsg
from nonebot import get_driver
from .constants import *
from .metadata import metadata
from .models import MarshoContext
from .util_hunyuan import *
from .config import config
genimage_cmd = on_alconna(
Alconna(
"genimage",
Args["prompt?", str],
)
)
@genimage_cmd.handle()
async def genimage(event: Event, prompt=None):
if not prompt:
await genimage_cmd.finish("无提示词")
try:
result = generate_image(prompt)
url = json.loads(result)["ResultImage"]
await UniMessage.image(url=url).send()
except Exception as e:
# await genimage_cmd.finish(str(e))
traceback.print_exc()

View File

@ -0,0 +1,31 @@
import json
import types
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.hunyuan.v20230901 import hunyuan_client, models
from .config import config
def generate_image(prompt: str):
cred = credential.Credential(config.marshoai_tencent_secretid, config.marshoai_tencent_secretkey)
# 实例化一个http选项可选的没有特殊需求可以跳过
httpProfile = HttpProfile()
httpProfile.endpoint = "hunyuan.tencentcloudapi.com"
# 实例化一个client选项可选的没有特殊需求可以跳过
clientProfile = ClientProfile()
clientProfile.httpProfile = httpProfile
client = hunyuan_client.HunyuanClient(cred, "ap-guangzhou", clientProfile)
req = models.TextToImageLiteRequest()
params = {
"Prompt": prompt,
"RspImgType": "url",
"Resolution": "1080:1920"
}
req.from_json_string(json.dumps(params))
# 返回的resp是一个TextToImageLiteResponse的实例与请求对象对应
resp = client.TextToImageLite(req)
# 输出json格式的字符串回包
return resp.to_json_string()