You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue3+AnimeJS场景下,如何让OpenAI API返回指定代码并改参数

问题:让OpenAI返回指定的puppet调用代码结构而非JSON

我在Vue3项目中使用OpenAI开发包,目前能正常获取API响应,但希望API返回仅修改参数值的指定puppet调用代码结构(实现用户要求的木偶动作),但当前API返回的是JSON结构,无法直接使用。

当前核心问题出在系统提示词和用户prompt的冲突:原系统提示要求输出JSON,导致AI优先返回JSON格式,忽略了返回代码的需求。以下是具体解决方案:

解决方案步骤

1. 修改系统提示词

将系统角色的提示从要求输出JSON,改为明确要求输出指定格式的JavaScript代码块,不要任何额外解释或JSON结构。

2. 优化用户prompt

更清晰地定义输出要求:明确给出要修改的模板代码,指定仅替换translatXValues和rotateValues的具体值,不要改变代码结构。

修改后的代码示例

以下是调整后的sendQuestion方法及相关配置:

async sendQuestion() {
  // 明确的prompt,指定输出格式和修改规则
  const userPrompt = `
  请严格按照以下模板返回JavaScript代码,仅替换translatXValues和rotateValues的具体值,不要修改代码结构,不要添加任何额外内容或JSON:
  模板:
  this.puppet('#rightArm', '替换成具体X位移值', '替换成具体旋转值');
  this.puppet('#leftArm', '替换成具体X位移值', '替换成具体旋转值');
  this.puppet('#leftLeg', '替换成具体X位移值', '替换成具体旋转值');
  this.puppet('#rightLeg', '替换成具体X位移值', '替换成具体旋转值');
  this.puppet('#body', '替换成具体X位移值', '替换成具体旋转值');
  this.puppet('#head', '替换成具体X位移值', '替换成具体旋转值');

  需求:让我的木偶${this.question}
  注意:位移值需要带px单位,旋转值需要带deg单位,比如'10px'、'-5deg'
  `;

  try {
    const completion = await openai.chat.completions.create({
      messages: [
        {
          role: "system",
          content: "你是一个代码生成助手,仅输出符合要求的JavaScript代码块,不要任何解释、说明或JSON结构。"
        },
        { role: "user", content: userPrompt }
      ],
      model: "gpt-3.5-turbo-1106",
    });

    if (completion.choices[0].message.content) {
      this.emitter.emit('openai', completion.choices[0].message.content.trim());
    }
  } catch (error) {
    console.error(error);
  }
}

关键说明

  • 原系统提示"You are a helpful assistant designed to output JSON."是导致返回JSON的核心原因,必须修改。
  • 用户prompt中给出明确的代码模板和参数格式要求(如单位),能大幅提升AI输出的准确性。
  • 使用trim()去除返回内容的首尾空白,避免多余换行或空格影响后续执行。

内容的提问来源于stack exchange,提问作者LK29

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 03:24:58