Yunzai接入cf的ai模型

Yunzai接入cf的ai模型

https://github.com/EnderCHX/Yunzai-Plugin

用法

1. 对话

http://img.hrbeu.top/img/5bc24d637cdad8d75f0b824b13c7fbda.png-logo.webp

2. 画图

http://img.hrbeu.top/img/d1a927482d6a04175852d5bab586709d.png-logo.webp

import { segment } from 'oicq';
import plugin from '../../lib/plugins/plugin.js';
import fetch from 'node-fetch';
import { writeFile } from 'fs/promises';

let botname = "布洛妮娅"
const ACCOUNT_ID = "aaaa"   //Cloudflare账号ID
const API_TOKEN = "dddd"    //Cloudflare账号Workers AI API Token

export class cloudflareWorkersAi extends plugin {
    constructor() {
        super({
            name: 'cloudflareWorkersAi',
            dsc: 'test',
            event: 'message',
            priority: 50000,
            rule: [
                {
                    reg: '#draw',
                    fnc: 'draw'
                },
                {
                    /** 命令正则匹配 */
                    reg: '',
                    /** 执行方法 */
                    fnc: 'workersAi'
                }
            ]
        })
    }

    async workersAi(e) {
        if (!e.msg || e.msg.charAt(0) == '#') {
            return
        }
        if (e.msg.includes(botname) || e.atBot && e.msg || e.isPrivate) {
            let msg = e.msg
            let model = "@cf/qwen/qwen1.5-7b-chat-awq"
            let input = {
                messages: [
                    {
                        role: "system",
                        content: "你是一只可爱猫娘,你的主人是EnderCHX",
                    },
                    {
                        role: "user",
                        content: msg,
                    },
                ],
            }
            let result = await workersAiRun(model, input)
            result = JSON.stringify(result)
            result = JSON.parse(result)
            if (result.success) {
                e.reply(result.result.response + `(model: ${model})`)
            } else {
                e.reply("出错了")
            }
        } else {
            return
        }
    }

    async draw(e) {
        let prompt = e.msg.replace("#draw", "")
        let model = "@cf/bytedance/stable-diffusion-xl-lightning"
        e.reply(`正在生成中...\n使用模型: ${model}`, true)
        let input = { "prompt": prompt }
        try {
            const response = await fetch(
                `https://api.cloudflare.com/client/v4/accounts/${ACCOUNT_ID}/ai/run/${model}`,
                {
                  headers: { Authorization: `Bearer ${API_TOKEN}` },
                  method: "POST",
                  body: JSON.stringify(input),
                }
              );
            
            const buffer = await response.arrayBuffer()
            await writeFile('data/image/output.png', Buffer.from(buffer));
    
            e.reply(segment.image('data/image/output.png'), true)
        } catch {
            e.reply("出错了")
        }
        
    }
}

async function workersAiRun(model, input) {
    const response = await fetch(
      `https://api.cloudflare.com/client/v4/accounts/${ACCOUNT_ID}/ai/run/${model}`,
      {
        headers: { Authorization: `Bearer ${API_TOKEN}` },
        method: "POST",
        body: JSON.stringify(input),
      }
    );
    const result = await response.json();
    return result;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值