基于RASA构建菜谱聊天机器人:生成新菜谱及框架选型咨询
菜谱聊天机器人:技术路径选型与RASA优化建议
一、技术路径合理性分析
- 若你的核心需求是基于现有菜谱生成新菜谱,单纯依赖RASA会存在明显局限——RASA本质是专注于意图识别与对话流程管理的框架,原生生成能力较弱。结合Langchain或ChatGPT API是更贴合需求的方向:
- ChatGPT API:可直接将现有菜谱作为Prompt的一部分,驱动模型生成菜谱变体、融合菜或创新做法,适合快速落地生成功能,但需做好Prompt工程,确保生成内容匹配你现有训练数据的风格与规范。
- Langchain:能更高效地管理现有菜谱知识库(比如将菜谱存入向量数据库,先检索相关内容再喂给大模型生成),解决纯ChatGPT API生成可能偏离训练数据的问题,还可实现多步生成逻辑(如先检索相似菜谱,再调整食材/烹饪方式生成新菜)。
- 最优技术路径建议:用RASA承担对话交互层(处理用户意图,比如“要一份川菜菜谱”“帮我改个番茄炒蛋的新做法”),用Langchain+ChatGPT API作为菜谱生成核心层,兼顾流畅的对话体验与精准的生成能力。
二、基于RASA的最优设计方案
- 意图与实体精细化设计:
- 明确区分核心意图:
request_existing_recipe(索要已有菜谱)、generate_new_recipe(生成新菜谱)、adjust_recipe(调整现有菜谱)等。 - 定义关键实体:
cuisine_type(菜系)、ingredient(食材)、dietary_restriction(饮食限制)、base_recipe(基础菜谱)等,为后续生成逻辑提供精准参数。
- 明确区分核心意图:
- 对话流程优化:
- 针对生成新菜谱的请求,RASA可先收集必要信息(如是否指定食材、菜系、饮食禁忌),再将参数传递给Langchain/LLM模块处理。
- 设置回退机制:若生成结果不符合用户预期,RASA引导用户补充需求,重新触发生成流程。
- 自定义动作对接生成模块:
- 在RASA中编写自定义动作,对接Langchain或ChatGPT API。例如创建
action_generate_recipe动作,接收RASA传递的实体参数,构造Prompt或调用Langchain检索生成链,将结果返回给用户。 - 示例伪代码(RASA自定义动作):
from typing import Any, Text, Dict, List from rasa_sdk import Action, Tracker from rasa_sdk.executor import CollectingDispatcher import openai class ActionGenerateRecipe(Action): def name(self) -> Text: return "action_generate_recipe" def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]) -> List[Dict[Text, Any]]: base_recipe = tracker.get_slot("base_recipe") target_ingredient = tracker.get_slot("ingredient") # 构造生成Prompt prompt = f"基于现有菜谱《{base_recipe}》,将核心食材替换为{target_ingredient},生成一份详细的新菜谱,包含食材用量、烹饪步骤和注意事项" # 调用ChatGPT API response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[{"role": "user", "content": prompt}] ) new_recipe_content = response.choices[0].message.content dispatcher.utter_message(text=new_recipe_content) return []
- 在RASA中编写自定义动作,对接Langchain或ChatGPT API。例如创建
- 知识库集成:
- 将现有菜谱存入RASA知识库(或通过Langchain接入向量数据库),用户索要现有菜谱时直接检索返回;用户要求生成新菜谱时,先检索相似菜谱作为生成参考,提升内容贴合度。
三、协作方向建议
若需要具体技术协助,可明确以下需求方向:
- 现有RASA项目的对话流程梳理与优化
- Langchain与RASA的对接方案落地
- 菜谱生成的Prompt工程调优
- 向量数据库选型与菜谱知识库构建
内容的提问来源于stack exchange,提问作者Alessandro Pio Budetti
相关产品推荐
相关产品推荐

