请求生成 
前端助手提供了函数用于更加灵活地请求 AI 生成回复,你可以通过它来自定义生成时要采用的提示词配置。
注意
目前仅支持聊天补全(Chat Completion)。
generate 
使用 Silly Tavern 当前启用的预设,让 AI 生成一段文本。
typescript
async function generate(config: GenerateConfig): Promise<string>;参数 
user_input? 
- 类型: 
string - 描述: 用户输入
 
should_stream? 
- 类型: 
boolean - 描述: 是否启用流式传输;默认为 
false 
image? 
- 类型: 
File|string - 描述: 图片输入,支持以下格式: 
File对象:通过input[type="file"]获取的文件对象Base64字符串:图片的 base64 编码URL字符串:图片的在线地址
 
overrides? 
- 类型: 
Overrides - 描述: 覆盖选项。若设置, 则 
overrides中给出的字段将会覆盖对应的提示词。如overrides.char_description = '覆盖的角色描述';将会覆盖角色描述。具体见Overrides 参数详情 
injects? 
- 类型: 
InjectionPrompt[] - 描述: 要额外注入的提示词,具体见InjectionPrompt 参数详情
 
max_chat_history? 
- 类型: 
'all'|number - 描述: 最多使用多少条聊天历史
 
返回值 
- 生成的最终文本: 
string 
示例 
typescript
const result = await generate({ user_input: "你好", should_stream: true });typescript
const result = await generate({
  user_input: "你好",
  image: "https://example.com/image.jpg",
});typescript
const result = await generate({
  user_input: '你好',
  injects: [{ role: 'system', content: '思维链...', position: 'in_chat', depth: 0, should_scan: true, }]
  overrides: {
    char_personality: '温柔',
    world_info_before: '',
    chat_history: {
      prompts: [],
    }
  }
});generateRaw 
不使用 SillyTavern 当前启用的预设,让 AI 生成一段文本。
typescript
async function generateRaw(config: GenerateConfig): Promise<string>;参数 
user_input? 
- 类型: 
string - 描述: 如果设置,则无论 ordered_prompts 中是否有 
user_input都会加入该用户输入提示词;默认加入在chat_history末尾。 
should_stream? 
- 类型: 
boolean - 描述: 是否启用流式传输;默认为 
false 
image? 
- 类型: 
File|string - 描述: 图片输入,支持以下格式: 
File对象:通过input[type="file"]获取的文件对象Base64字符串:图片的 base64 编码URL字符串:图片的在线地址
 
overrides? 
- 类型: 
Overrides - 描述: 覆盖选项。若设置, 则 
overrides中给出的字段将会覆盖对应的提示词。如overrides.char_description = '覆盖的角色描述';将会覆盖角色描述。具体见Overrides 参数详情 
injects? 
- 类型: 
InjectionRawPrompt[] - 描述: 要额外注入的提示词,具体见InjectionRawPrompt 参数详情
 
max_chat_history? 
- 类型: 
'all'|number - 描述: 最多使用多少条聊天历史
 
ordered_prompts? 
- 类型: 
(BuiltinPrompt | RolePrompt)[] - 描述: 一个提示词数组,数组元素将会按顺序发给 ai,因而相当于自定义预设。该数组允许存放两种类型: 
BuiltinPrompt: 内置提示词。由于不使用预设, 如果需要 "角色描述" 等提示词, 你需要自己指定需要使用哪些并给出顺序。如果不想自己指定, 函数会自行使用builtin_prompt_default_order中的酒馆默认预设顺序(但对于这种情况,你也许更应该用generate)。RolePrompt: 要额外给定的提示词。
 
返回值 
- 生成的最终文本: 
string 
示例 
typescript
// 自定义内置提示词顺序, 未在 ordered_prompts 中给出的将不会被使用
const result = await generateRaw({
  user_input: '你好',
  ordered_prompts: [
    'char_description',
    { role: 'system', content: '系统提示' },
    'chat_history',
    'user_input',
  ]
})通过事件获取生成结果 
函数的事件发送 
该函数在执行过程中将会发送以下事件:
iframe_events.GENERATION_STARTED:生成开始- 若启用流式传输, 
iframe_events.STREAM_TOKEN_RECEIVED_FULLY:监听它可以得到流式传输的当前完整文本 ("这是", "这是一条", "这是一条流式传输") - 若启用流式传输, 
iframe_events.STREAM_TOKEN_RECEIVED_INCREMENTALLY:监听它可以得到流式传输的当前增量文本 ("这是", "一条", "流式传输") iframe_events.GENERATION_ENDED:生成结束, 监听它可以得到生成的最终文本 (当然也能通过函数返回值获得)
示例 
参数详情 
Overrides 
world_info_before? 
- 类型: 
string - 描述: 世界书(角色定义前)
 
persona_description? 
- 类型: 
string - 描述: 用户描述
 
char_description? 
- 类型: 
string - 描述: 角色描述
 
char_personality? 
- 类型: 
string - 描述: 角色性格
 
scenario? 
- 类型: 
string - 描述: 场景
 
world_info_after? 
- 类型: 
string - 描述: 世界书(角色定义后)
 
dialogue_examples? 
- 类型: 
string - 描述: 对话示例
 
chat_history? 
- 类型: 
{with_depth_entries?: boolean, author_note?: string; prompts?: RolePrompt[];} - 描述: 聊天历史,其中 
with_depth_entries: 是否启用世界书中按深度插入的条目; 默认为trueauthor_note: 若设置, 覆盖 "作者注释" 为给定的字符串prompts: 若设置, 覆盖 "聊天历史" 为给定的提示词,详见RolePrompt 格式
 
InjectionPrompt 
role 
- 类型: 
'system' | 'assistant' | 'user' - 描述: 角色
 
content 
- 类型: 
string - 描述: 要注入的提示词
 
position 
- 类型: 
'before_prompt' | 'in_chat' | 'after_prompt' | 'none' - 描述: 要注入的位置。
none不会发给 ai,但能用来激活世界书条目 
depth 
- 类型: 
number - 描述: 深度
 
should_scan 
类型:
boolean描述: 是否要加入世界书扫描中
InjectionRawPrompt 
role 
- 类型: 
'system' | 'assistant' | 'user' - 描述: 角色
 
content 
- 类型: 
string - 描述: 要注入的提示词
 
position 
- 类型: 
'in_chat' | 'none' - 描述: 要注入的位置。
none不会发给 ai,但能用来激活世界书条目 
depth 
- 类型: 
number - 描述: 深度
 
should_scan 
- 类型: 
boolean - 描述: 是否要加入世界书扫描中
 
RolePrompt 
role 
- 类型: 
'system' | 'assistant' | 'user' - 描述: 角色
 
content 
- 类型: 
string - 描述: 提示词内容
 
BuiltinPrompt 
不指定 ordered_prompts 时,将使用以下默认顺序排列提示词:
typescript
const builtin_prompt_default_order: BuiltinPrompt[] = [
  'world_info_before',    // 世界书(角色定义前)
  'persona_description',  // 用户描述
  'char_description',     // 角色描述
  'char_personality',     // 角色性格
  'scenario',             // 场景
  'world_info_after',     // 世界书(角色定义后)
  'dialogue_examples',    // 对话示例
  'chat_history',         // 聊天历史 (含世界书中按深度插入的条目、作者注释)
  'user_input',           // 用户输入
]仅以下字符串可被 generateRaw 识别:
typescript
type BuiltinPrompt =
  | 'world_info_before'    // 世界书(角色定义前)
  | 'persona_description'  // 用户描述
  | 'char_description'     // 角色描述
  | 'char_personality'     // 角色性格
  | 'scenario'             // 场景
  | 'world_info_after'     // 世界书(角色定义后)
  | 'dialogue_examples'    // 对话示例
  | 'chat_history'         // 聊天历史 (含世界书中按深度插入的条目、作者注释)
  | 'user_input'           // 用户输入
  ;user_input与chat_history的关系:
在generateRaw中,user_input可以自由选择放置的位置了。关于user_input和chat_history的关系如下:
当chat_history不在ordered_prompts:
- 如果
user_input未在ordered_prompts中:将自动添加到所有提示词的最后面 - 如果
user_input在ordered_prompts中:以user_input在ordered_prompts中的位置为准 
当chat_history在ordered_prompts时:
- 如果
user_input未在ordered_prompts中:将自动插入到最新一条聊天记录后 - 如果
user_input在ordered_prompts中:user_input和chat_history会分别插入到ordered_prompts中指示的位置