Firebase Genkit:如何在JS代码中直接定义多轮对话历史并解决报错
在Firebase Genkit中直接用JS代码实现多轮对话历史
问题描述
我正在使用Firebase Genkit,单轮生成功能可正常运行:
import { generate } from '@genkit-ai/ai'; generate({ model: 'googleai/gemini-1.5-flash-latest', prompt: 'You are a helpful AI assistant named Walt. Say hello.', });
但尝试实现多轮对话历史时遇到问题。参考文档使用dotprompt编写代码后,出现TypeError: multiTurnPrompt.generate is not a function报错;按照建议改用promptRef后,又出现GenkitError: dotprompt: NOT_FOUND: Could not find 'nameOfPrompt.prompt' in the prompts folder.报错。我希望直接在JS代码中定义对话历史,而非使用外部prompt文件,请问该如何解决?
解决方案
无需依赖外部dotprompt文件,直接在generate函数中通过messages参数定义对话历史即可,这是Genkit原生支持的多轮对话实现方式:
import { generate } from '@genkit-ai/ai'; async function runMultiTurnConversation() { // 定义完整对话历史,按交互顺序排列 const conversationHistory = [ { role: 'system', content: 'You are a helpful AI assistant named Walt.', }, { role: 'user', content: 'Hello, Walt!', }, { role: 'assistant', content: 'Hello there! How can I assist you today?', }, { role: 'user', content: 'What\'s the best way to start learning Firebase?', }, ]; const result = await generate({ model: 'googleai/gemini-1.5-flash-latest', messages: conversationHistory, // 传入对话历史数组 }); console.log(result.text()); } runMultiTurnConversation();
核心要点
- 用
messages参数替代单轮场景的prompt参数,数组元素需包含role和content字段 role可选值:system(设置助手身份/规则)、user(用户提问)、assistant(助手历史回复)- 对话历史需按实际交互顺序排列,模型会基于完整上下文生成下一轮回复
generate是异步函数,需用await获取结果
内容的提问来源于stack exchange,提问作者toto_tata
相关产品推荐
相关产品推荐

