跳过主要内容

Python 交互

1. 安装 Dora CLI 和依赖项

首先,请确保您安装了 Python 3.11

接下来,如果你还没有安装uv

pip install uv

然后,创建和激活虚拟环境:

uv venv --seed -p 3.11
source .venv/bin/activate # Linux/macOS
.venv\Scripts\activate # Windows

最后,安装 Dora CLI:

pip install dora-rs-cli

2. 建立一个新的数据流(dataflow)

创建基于 Python 的数据流并导航到项目目录:

dora new conversation_py --lang python
cd conversation_py

这就创建了下面的 conversation_py 目录结构:

├── dataflow.yml
├── listener-1
│ ├── README.md
│ ├── listener_1
│ │ ├── __init__.py
│ │ ├── __main__.py
│ │ └── main.py
│ ├── pyproject.toml
│ └── tests
│ └── test_listener_1.py
└── talker-1
├── README.md
├── pyproject.toml
├── talker_1
│ ├── __init__.py
│ ├── __main__.py
│ └── main.py
└── tests
└── test_talker_1.py

3. 添加另一个节点 (可选)

conversation_py 项目目录内,您可以添加另一个节点到工作区:

dora new --kind node talker --lang python

现在请在您的文本编辑器中打开 talker-1/talker_1/main.py 文件。


4. 默认节点如何工作

您的节点现在是非常精简的。 以下是关于其默认工作方式的说明。

导入并初始化节点

from dora import Node
import pyarrow as pa

def main():
node = Node()

处理输入事件

for event in node:
if event["type"] == "INPUT":
print(
f"""Node received:
id: {event["id"]},
value: {event["value"]},
metadata: {event["metadata"]}"""
)

正在发送输出到另一个节点

node.send_output("speech", pa.array(["Hello World"]))
  • send_output 将数据发送到其他节点。
  • "speech" 是数据流中引用的输出 ID。
  • pa.array(["Hello World"]) 创建一个 Apache Arrow 数组。
  • 为了简化,本教程省略了元数据。

5. 监听器节点故障

文件: listener-1/listener_1/main.py

from dora import Node

def main():
node = Node()
for event in node:
if event["type"] == "INPUT":
message = event["value"][0].as_py()
print(f"I heard {message} from {event['id']}")

if __name__ == "__main__":
main()
  • event["value"] 是一个Apache Arrow 数组。
  • [0] 访问第一个元素。
  • .as_py() 将其转换为原生的 Python 值。

6. 运行 数据流(dataflow)

编辑 dataflow.yml 以连接节点:

nodes:
- id: talker
path: talker-1/talker_1/main.py
inputs:
tick: dora/timer/secs/1
outputs:
- speech

- id: listener
path: listener-1/listener_1/main.py
inputs:
speech: talker/speech

构建并运行数据流

# 安装依赖
dora build dataflow.yml --uv

# 运行数据流
dora run dataflow.yml --uv

您应该看到:

I heard Hello World from speech

要停止数据流,请按 Ctrl+C


7. 结论

恭喜您完成本教程。
您已经创建并运行了一个 Dora 数据流,连接了一个说话者(talker)节点和一个监听者(listener)节点。

从这里开始,可以尝试使用不同的数据类型或探索Dora的高级功能。