mirror of
https://github.com/LiteyukiStudio/nonebot-plugin-marshoai.git
synced 2025-01-26 18:12:47 +08:00
✨新增混元生图功能(未完善)
This commit is contained in:
parent
ce6f51f9c9
commit
dd1191e602
@ -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
|
||||||
|
@ -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("上下文已重置")
|
||||||
|
|
||||||
|
@ -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)
|
||||||
|
36
nonebot_plugin_marshoai/hunyuan.py
Normal file
36
nonebot_plugin_marshoai/hunyuan.py
Normal 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()
|
31
nonebot_plugin_marshoai/util_hunyuan.py
Normal file
31
nonebot_plugin_marshoai/util_hunyuan.py
Normal 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()
|
Loading…
x
Reference in New Issue
Block a user