import base64 import mimetypes import random import os import json import httpx from pathlib import Path from datetime import datetime from zhDateTime import DateTime from azure.ai.inference.models import SystemMessage from .config import config async def get_image_b64(url): headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' } async with httpx.AsyncClient() as client: response = await client.get(url, headers=headers) if response.status_code == 200: # 获取图片数据 image_data = response.content content_type = response.headers.get('Content-Type') if not content_type: content_type = mimetypes.guess_type(url)[0] image_format = content_type.split('/')[1] if content_type else 'jpeg' base64_image = base64.b64encode(image_data).decode('utf-8') data_url = f"data:{content_type};base64,{base64_image}" return data_url else: return None def get_praises(): filename = "praises.json" if not os.path.exists("praises.json"): init_data = { "like": [ {"name":"Asankilp","advantages":"赋予了Marsho猫娘人格,使用vim为Marsho写了许多代码,使Marsho更加可爱"} ] } with open(filename,"w",encoding="utf-8") as f: json.dump(init_data,f,ensure_ascii=False,indent=4) with open(filename,"r",encoding="utf-8") as f: data = json.load(f) return data def build_praises(): praises = get_praises() result = ["你喜欢以下几个人物,他们有各自的优点:"] for item in praises["like"]: result.append(f"名字:{item['name']},优点:{item['advantages']}") return "\n".join(result) def get_prompt(): prompts = "" prompts += config.marshoai_additional_prompt current_time = datetime.now().strftime('%Y.%m.%d %H:%M:%S') current_lunar_date = DateTime.now().to_lunar().date_hanzify()[5:]#库更新之前使用切片 if config.marshoai_enable_praises: praises_prompt = build_praises() prompts += praises_prompt if config.marshoai_enable_time_prompt: time_prompt = f"现在的时间是{current_time},农历{current_lunar_date}。" prompts += time_prompt marsho_prompt = config.marshoai_prompt spell = SystemMessage(content=marsho_prompt+prompts) return spell