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

PyCharm中如何格式化Watson Conversation响应,仅展示回答内容?

搞定Watson Conversation的响应展示问题

我明白你的需求啦——就是想和Watson聊的时候,只看到它的回答,不用被一堆无关的JSON数据干扰,还能反复提问对吧?我帮你把代码调整一下,直接实现这个功能:

首先,你原来的代码缺了几个关键部分(比如workspace_id和完整的版本号),我先给你补全,然后重点处理响应的提取逻辑:

import json
from watson_developer_cloud import ConversationV1

# 初始化Watson Conversation客户端
conversation = ConversationV1(
    username='你的用户名',  # 替换成你的Watson用户名
    password='你的密码',    # 替换成你的Watson密码
    version='2018-09-20'   # 用一个有效的版本号,这个是常用的稳定版本
)

# 替换成你的Workspace ID,在Watson控制台里能找到
WORKSPACE_ID = '你的工作空间ID'

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

print("嗨!我是Watson机器人,有什么问题尽管问我~输入'退出'可以结束对话。")

while True:
    # 获取用户输入
    user_input = input("\n你:")
    
    if user_input.lower() == '退出':
        print("Watson:再见啦!")
        break
    
    # 调用Watson服务获取响应
    try:
        response = conversation.message(
            workspace_id=WORKSPACE_ID,
            input={'text': user_input},
            context=context
        )
        
        # 更新对话上下文,维持对话连贯性
        context = response['context']
        
        # 提取Watson的回答文本(只取有用的部分)
        watson_answers = response['output']['text']
        
        # 打印回答,多个回答的话逐行显示
        print("Watson:")
        for answer in watson_answers:
            print(f"- {answer}")
    
    except Exception as e:
        print(f"出错啦:{str(e)}")

关键说明:

  • 提取有效响应:Watson返回的完整响应里,真正的回答内容存在response['output']['text']这个列表里,我们直接提取这个部分就可以,不用管其他上下文、输入记录等信息。
  • 对话上下文维持:context变量用来保存对话状态,比如你之前问过的问题,Watson会记住,这样多轮对话更自然。
  • 循环交互:用while True实现持续提问,直到用户输入“退出”才结束。
  • 异常处理:加了try-except,避免调用Watson出错时程序直接崩溃。

你只需要把代码里的你的用户名、你的密码、你的工作空间ID替换成你自己的Watson账号信息就行啦,运行之后就能和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:18:57