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

RASA与GPT-3集成无正确响应,请求协助排查代码问题

Rasa与GPT-3集成无正确响应问题排查

问题概述

尝试将Rasa与GPT-3集成后无法获得正确响应,以下是相关代码及问题分析:

GPT-3调用函数代码

def gpt3(text):
    response = openai.Completion.create(
        model="code-cushman-001",
        # engine="ada",
        prompt="\n\n" + text,
        temperature=0,
        logprobs=10,
        max_tokens=150,
        top_p=0,
        frequency_penalty=0,
        presence_penalty=0,
        stop=["\n\n"]
    ) 
    return response['choices'][0]['text']

action.py代码

class ActionDefaultFallback(Action):
    def init(self):
        # self.gpt3 = gpt3()
        super()._init_()

    def name(self) -> Text:
        return "action_default_fallback"

    async def run(self, dispatcher, tracker, domain):
        query = tracker.latest_message['text']
        dispatcher.utter_message(text=gpt3(query))

        return [UserUtteranceReverted()]

问题分析

  1. 模型选择错误:code-cushman-001是代码专用生成模型,不适合处理自然语言对话场景,会导致回复不符合预期。
  2. 语法错误:类初始化方法init和super()._init_()都缺少双下划线,正确写法应为__init__,这会导致类初始化失败。
  3. 同步/异步冲突:gpt3是同步函数,但Rasa的run方法是异步的,同步调用会阻塞Rasa的事件循环,可能导致响应延迟或无响应。
  4. Prompt格式问题:prompt开头的多余空行和stop序列中的空行可能导致GPT-3提前截断回复或生成无效内容;temperature=0和top_p=0会让回复过于生硬,缺乏自然性。
  5. 无异常处理:未捕获OpenAI API调用可能出现的异常(如密钥错误、网络问题),会直接导致Rasa动作崩溃。

修复方案

修正GPT-3调用函数

import openai
import asyncio
from concurrent.futures import ThreadPoolExecutor

# 替换为你的OpenAI API密钥
openai.api_key = "your-api-key"

# 创建线程池用于同步函数异步执行
executor = ThreadPoolExecutor()

def gpt3_sync(text):
    try:
        response = openai.Completion.create(
            model="text-davinci-003",  # 更换为自然语言对话模型
            prompt=text,  # 移除多余空行
            temperature=0.7,  # 调整温度提升回复自然度
            max_tokens=150,
            top_p=1.0,
            frequency_penalty=0,
            presence_penalty=0
        )
        # 去除回复前后的空白字符
        return response['choices'][0]['text'].strip()
    except Exception as e:
        return f"对话服务暂时不可用: {str(e)}"

# 异步包装函数,适配Rasa的异步环境
async def gpt3(text):
    loop = asyncio.get_event_loop()
    return await loop.run_in_executor(executor, gpt3_sync, text)

修正action.py代码

from rasa_sdk import Action, Tracker
from rasa_sdk.executor import CollectingDispatcher
from rasa_sdk.events import UserUtteranceReverted
from typing import Text, Dict, Any, List

class ActionDefaultFallback(Action):
    def __init__(self):  # 修正双下划线
        super().__init__()  # 修正双下划线

    def name(self) -> Text:
        return "action_default_fallback"

    async def run(
        self,
        dispatcher: CollectingDispatcher,
        tracker: Tracker,
        domain: Dict[Text, Any]
    ) -> List[Dict[Text, Any]]:
        query = tracker.latest_message['text']
        # 异步调用GPT-3
        gpt_response = await gpt3(query)
        dispatcher.utter_message(text=gpt_response)

        return [UserUtteranceReverted()]

关键修复点说明

  • 更换为适合自然语言对话的GPT-3模型(如text-davinci-003)
  • 修正类初始化方法的语法错误
  • 将同步GPT-3调用包装为异步,避免阻塞Rasa事件循环
  • 调整prompt格式和生成参数,提升回复自然度
  • 添加异常捕获,保证动作稳定性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 07:01:24