import io import base64 from PIL import Image from volcenginesdkarkruntime import Ark client = Ark( api_key= "817dff39-5586-4f9b-acba-55004167c0b1", base_url="https://ark.cn-beijing.volces.com/api/v3", ) default_prompt = """ ## 角色:小红书博主,文案能力优秀 ## 任务:基于图像内容,生成小红书高赞文案,文案风格为小红书风格,需要有标题,具体文案内容和话题标签(话题标签至少5个)。 ## 要求: - 字数控制在400字以内,多使用合适的emoji表情 - 除了输出标题、具体文案内容和话题标签,不要输出任何额外的内容 ## 输出格式: - 标题:<标题文本> - 文案:<文案文本> - 话题标签:<话题标签文本> """ def encode_image(pil_image): """将PIL Image对象转换为base64编码""" buffered = io.BytesIO() pil_image.save(buffered, format="JPEG") return base64.b64encode(buffered.getvalue()).decode('utf-8') def gen_copywriter(image_path, sys_prompt=default_prompt): base64_image = encode_image(image_path) response = client.chat.completions.create( model="doubao-1-5-vision-pro-32k-250115", temperature=1, max_tokens=200, messages=[ { "role": "user", "content": [ { "type": "text", "text": sys_prompt, }, { "type": "image_url", "image_url": { "url": f"data:image/jpg;base64,{base64_image}" }, }, ], } ], ) return response.choices[0].message.content if __name__ == "__main__": with Image.open("./backend/data/cloth.png") as img: print(gen_copywriter(img))