理解 property.json
此文件包含扩展的编排配置。它是主要的运行时配置文件。

property.json 文件包含以下编排信息:
- 图 (Graphs)
- 节点 (Nodes)
- 连接 (Connections)
图 (Graphs)
predefined_graphs 属性包含了可用图的列表。每个图定义了 agent 在特定场景中的行为方式。每个图都有一个 name 属性,用于标识图。
每个图包含 nodes 和 connections 属性。
节点 (Nodes)
nodes 部分包含图中包含的扩展列表。每个节点都有一个 name 属性,用于标识节点,以及一个 addon 属性,用于指定它将使用的扩展模块。你可以在一个图中拥有多个相同扩展类型的节点。例如,你可以拥有多个具有相同 addon 属性的 chatgpt_openai_python 扩展,而每个节点将具有不同的 name 属性。它的工作方式类似于同一扩展的多个实例。
节点属性
节点的 property 部分包含扩展的配置。每个扩展都有其特定的属性,这些可用的属性在扩展文件夹下的 manifest.json 文件中定义。你可以使用定义扩展的运行时属性来自定义其行为。以下是如何配置 chatgpt_openai_python 扩展的示例:
{
"name": "chatgpt_openai_python",
"addon": "chatgpt_openai_python",
"property": {
"api_key": "${env:OPENAI_API_KEY|}",
"model": "gpt-3.5-turbo",
"temperature": 0.5,
"max_tokens": 100,
"prompt": "You are a helpful assistant"
}
}
读取环境变量
扩展通常需要 api_key 才能工作。如果你不想在 property.json 文件中硬编码 api_key,可以使用环境变量。你可以使用 ${env:<env_var_name>|<default_value>} 语法来读取环境变量。以下是如何读取 OPENAI_API_KEY 环境变量的示例:
{
"name": "chatgpt_openai_python",
"addon": "chatgpt_openai_python",
"property": {
"api_key": "${env:OPENAI_API_KEY|}"
}
}通信链路 (Connections)
connections部分包含节点之间通信链路的列表。每个通信链路分别指定了源节点和目标节点。每个通信链路都有一个extension_group和extension属性,用于指定源节点,并定义了 TEN framework 支持的一组多模态数据协议(audio_frame、video_frame、data、cmd)。对于每个数据协议,它都有一个目标定义列表,并且每个目标定义都有一个name属性(它是属性数据的键)和一个dest属性(它定义了目标节点列表)。下面是如何连接两个节点的示例,
{
"extension_group": "default",
"extension": "agora_rtc",
"audio_frame": [
{
"name": "pcm_frame",
"dest": [
{
"extension_group": "default",
"extension": "deepgram_asr"
}
]
}
]
}
在上面的示例中,我们将 agora_rtc 扩展连接到 deepgram_asr 扩展。agora_rtc 扩展正在向 deepgram_asr 扩展发送 pcm_frame 数据。
最后更新