crystelf-plugin/lib/ai/tools/contentTool.js
2025-12-14 00:58:38 +08:00

140 lines
2.9 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import BaseTool from './baseTool.js';
import Renderer from '../renderer.js';
/**
* 渲染代码工具
*/
class RenderCodeTool extends BaseTool {
constructor() {
super(
'render_code',
'将代码渲染为高亮图片',
{
type: 'object',
properties: {
code: {
type: 'string',
description: '要渲染的代码内容'
},
language: {
type: 'string',
description: '编程语言类型如javascript、python、java等'
}
},
required: ['code', 'language']
}
);
}
async execute(params, context) {
const { code, language } = params;
const { responseQueue } = context;
const codeObj = {
type: 'code',
data: code,
language: language
};
responseQueue.push(codeObj);
return {
success: true,
message: `已渲染${language}代码块`
};
}
}
/**
* 渲染Markdown工具
*/
class RenderMarkdownTool extends BaseTool {
constructor() {
super(
'render_markdown',
'将Markdown内容渲染为图片',
{
type: 'object',
properties: {
markdown: {
type: 'string',
description: '要渲染的Markdown内容'
}
},
required: ['markdown']
}
);
}
async execute(params, context) {
const { markdown } = params;
const { responseQueue } = context;
const markdownObj = {
type: 'markdown',
data: markdown
};
responseQueue.push(markdownObj);
return {
success: true,
message: '已渲染Markdown内容'
};
}
}
/**
* 生成图片工具
*/
class GenerateImageTool extends BaseTool {
constructor() {
super(
'generate_image',
'根据描述生成图片',
{
type: 'object',
properties: {
prompt: {
type: 'string',
description: '图片生成的描述文本'
},
style: {
type: 'string',
enum: ['natural', 'vivid'],
description: '图片风格默认natural',
default: 'natural'
},
size: {
type: 'string',
enum: ['1024x1024', '1792x1024', '1024x1792'],
description: '图片尺寸默认1024x1024',
default: '1024x1024'
}
},
required: ['prompt']
}
);
}
async execute(params, context) {
const { prompt, style = 'natural', size = '1024x1024' } = params;
const { responseQueue } = context;
const imageObj = {
type: 'image',
data: prompt,
style: style,
size: size
};
responseQueue.push(imageObj);
return {
success: true,
message: `已生成图片: ${prompt.substring(0, 30)}...`
};
}
}
export { RenderCodeTool, RenderMarkdownTool, GenerateImageTool };