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

如何实现IBM Watson对话循环交互,支持回复后重复提问?

实现IBM Watson Conversation持续对话循环的解决方案

嘿,别担心,刚接触Watson Conversation遇到这个问题太正常了!我来帮你把单次对话改成可以持续聊天的循环模式,一步步来,很简单的~

问题根源

你原来的代码只执行了一次提问和回复逻辑,所以程序运行一次就结束了。要实现持续对话,我们需要加一个循环结构,同时还要注意传递对话上下文(Context),这样Watson才能记住之前的对话内容,理解上下文相关的问题。

修改后的完整代码

import json
import watson_developer_cloud

# 初始化Watson Conversation客户端
conversation = watson_developer_cloud.ConversationV1(
    username='你的Watson用户名',  # 替换成你的用户名
    password='你的Watson密码',    # 替换成你的密码
    version='2018-03-16'
)

# 初始化对话上下文,用来维持对话状态
context = None

print("你好!可以开始和Watson聊天啦~输入 'quit' 或 'exit' 结束对话\n")

# 对话循环
while True:
    # 获取用户输入(Python3用input,Python2用raw_input,根据你的版本调整)
    question = input("你: ")
    
    # 退出条件:输入quit或exit就结束对话
    if question.lower() in ['quit', 'exit']:
        print("再见!")
        break
    
    # 调用Watson的message接口,传递上下文
    response = conversation.message(
        workspace_id='你的工作区ID',  # 替换成你的workspace ID
        input={'text': question},
        context=context  # 传递上一次的对话上下文
    )
    
    # 更新上下文,用于下一次对话
    context = response.get('context', {})
    
    # 打印Watson的回复
    print("Watson:")
    for text in response['output']['text']:
        print(f"  {text}")

关键部分解释

  • 循环结构:while True会让程序一直运行,直到你触发退出条件(输入quit/exit)。
  • 上下文传递:context变量存储每次对话的状态,每次调用conversation.message()时传入,这样Watson能记住之前的对话内容(比如你说过的名字、偏好等)。
  • 退出逻辑:判断用户输入是否是退出指令,是的话就用break跳出循环,结束程序。
  • 回复提取:Watson的回复内容在response['output']['text']里,我们用循环把所有回复文本打印出来。

新手必备提示

  • 先安装依赖包:如果还没装watson-developer-cloud,打开终端执行 pip install watson-developer-cloud。
  • 填写正确的凭证:username、password和workspace_id都要从IBM Cloud的Watson Conversation服务控制台获取,别留空或填错哦!
  • 测试上下文:可以试试先问“我叫小明”,再问“我叫什么名字”,Watson应该能正确回答,这就是上下文的作用~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:22:44