Skip to content

Commit fda0ca2

Browse files
authored
Merge pull request #19 from songguocola/main
[Add] Multimodal Dialog API
2 parents 9f7d789 + 257dbbe commit fda0ca2

File tree

6 files changed

+1075
-0
lines changed

6 files changed

+1075
-0
lines changed

dashscope/multimodal/__init__.py

Whitespace-only changes.

dashscope/multimodal/dialog_state.py

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# dialog_state.py
2+
3+
from enum import Enum
4+
5+
6+
class DialogState(Enum):
7+
"""
8+
对话状态枚举类,定义了对话机器人可能处于的不同状态。
9+
10+
Attributes:
11+
IDLE (str): 表示机器人处于空闲状态。
12+
LISTENING (str): 表示机器人正在监听用户输入。
13+
THINKING (str): 表示机器人正在思考。
14+
RESPONDING (str): 表示机器人正在生成或回复中。
15+
"""
16+
IDLE = 'Idle'
17+
LISTENING = 'Listening'
18+
THINKING = 'Thinking'
19+
RESPONDING = 'Responding'
20+
21+
22+
class StateMachine:
23+
"""
24+
状态机类,用于管理机器人的状态转换。
25+
26+
Attributes:
27+
current_state (DialogState): 当前状态。
28+
"""
29+
30+
def __init__(self):
31+
# 初始化状态机时设置初始状态为IDLE
32+
self.current_state = DialogState.IDLE
33+
34+
def change_state(self, new_state: str) -> None:
35+
"""
36+
更改当前状态到指定的新状态。
37+
38+
Args:
39+
new_state (str): 要切换到的新状态。
40+
41+
Raises:
42+
ValueError: 如果尝试切换到一个无效的状态,则抛出此异常。
43+
"""
44+
if new_state in [state.value for state in DialogState]:
45+
self.current_state = DialogState(new_state)
46+
else:
47+
raise ValueError("无效的状态类型")
48+
49+
def get_current_state(self) -> DialogState:
50+
"""
51+
获取当前状态。
52+
53+
Returns:
54+
DialogState: 当前状态。
55+
"""
56+
return self.current_state
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Copyright (c) Alibaba, Inc. and its affiliates.
2+
# -*- coding: utf-8 -*-
3+
4+
# multimodal conversation request directive
5+
6+
class RequestToRespondType:
7+
TRANSCRIPT = 'transcript'
8+
PROMPT = 'prompt'
9+
10+
11+
# multimodal conversation response directive
12+
RESPONSE_NAME_TASK_STARTED = "task-started"
13+
RESPONSE_NAME_RESULT_GENERATED = "result-generated"
14+
RESPONSE_NAME_TASK_FINISHED = "task-finished"
15+
16+
RESPONSE_NAME_TASK_FAILED = "TaskFailed"
17+
RESPONSE_NAME_STARTED = "Started"
18+
RESPONSE_NAME_STOPPED = "Stopped"
19+
RESPONSE_NAME_STATE_CHANGED = "DialogStateChanged"
20+
RESPONSE_NAME_REQUEST_ACCEPTED = "RequestAccepted"
21+
RESPONSE_NAME_SPEECH_STARTED = "SpeechStarted"
22+
RESPONSE_NAME_SPEECH_ENDED = "SpeechEnded" # 服务端检测到asr语音尾点时下发此事件,可选事件
23+
RESPONSE_NAME_RESPONDING_STARTED = "RespondingStarted" # AI语音应答开始,sdk要准备接收服务端下发的语音数据
24+
RESPONSE_NAME_RESPONDING_ENDED = "RespondingEnded" # AI语音应答结束
25+
RESPONSE_NAME_SPEECH_CONTENT = "SpeechContent" # 用户语音识别出的文本,流式全量输出
26+
RESPONSE_NAME_RESPONDING_CONTENT = "RespondingContent" # 统对外输出的文本,流式全量输出
27+
RESPONSE_NAME_ERROR = "Error" # 服务端对话中报错

0 commit comments

Comments
 (0)