Griptape Nodes 保留模式腳本撰寫
「保留模式 (Retained Mode)」為與 Griptape Nodes 系統互動提供了一套功能完備的 Python 腳本介面。這讓使用者能透過簡潔優雅的 Python API 以程式化方式建立、修改與管理節點、參數、連線關係以及整個工作流程。
備註: RetainedMode 的底層實際匯入指令為:
from griptape_nodes.retained_mode import RetainedMode as cmd不過為了操作便利,在圖形介面 (GUI) 的腳本編輯器中,系統已自動為您預先完成了此項匯入,因此您可以直接隨意調用
cmd.。
腳本操作與執行方式
開發與執行腳本主要有兩種途徑:
- 使用腳本編輯器 (Script Editor)——直接在 Griptape Nodes 內建的腳本編輯器中編寫程式碼並即時執行,以動態修改或精確掌控您的工作流程。
- 匯入外部腳本 (Importing External Scripts)——將具備高重用性的腳本模組妥善存放於外部檔案中,在腳本編輯器中透過標準 Python 匯入機制載入,並調用其中的模組功能。
內建的腳本編輯器是進行所有程式化腳本操作的主要入口點。
腳本在自動化繁瑣重複任務時極具威力:包含連同屬性與連線完整複製節點、匯出節點設定值並批次匯入至其他流程、透過預設的節點與拓撲結構以程式化方式從零構建整套流程,或在迴圈中跨多個節點執行大量批次操作。您更可將保留模式與各類經典 Python 程式庫(如 pandas、numpy、requests 等)強強聯手,大幅拓展腳本的自動化能力疆界。
本頁面其餘部分為完整的 API 參考指南:包含流程管理、節點操作、參數維護、拓撲連線以及流程執行控制。
流程操作 (Flow Operations)
create_flow
在 Griptape 系統中建立一個全新流程。
cmd.create_flow(flow_name=None, parent_flow_name=None)
引數說明
| 名稱 | 引數型別 | 是否必填 |
|---|---|---|
flow_name |
string | ⚪ |
parent_flow_name |
string | ⚪ |
回傳值
攜帶流程建立狀態的 ResultPayload 物件。
功能說明
以指定的名稱建立新流程。若提供了 parent_flow_name,新流程將作為指定父流程的子流程建立。
delete_flow
cmd.delete_flow(flow_name)
刪除既有的流程。
引數說明
| 名稱 | 引數型別 | 是否必填 |
|---|---|---|
flow_name |
string | 🟢 |
回傳值
攜帶流程刪除狀態的 ResultPayload 物件。
功能說明
從系統中永久移除指定的流程。
get_flows
cmd.get_flows(parent_flow_name=None)
列出父流程底下的所有流程。
引數說明
| 名稱 | 引數型別 | 是否必填 |
|---|---|---|
parent_flow_name |
string | ⚪ |
回傳值
包含流程清單的 ResultPayload 物件。
功能說明
回傳指定父流程內包含的所有子流程。若未提供 parent_flow_name,則列出所有的頂層流程。
get_nodes_in_flow
cmd.get_nodes_in_flow(flow_name, node_types=None)
列出流程內包含的所有節點,並支援依據 Python 類別名稱進行篩選。
引數說明
| 名稱 | 引數型別 | 是否必填 |
|---|---|---|
flow_name |
string | 🟢 |
node_types |
list[string] | None | 🔴 |
回傳值
包含節點名稱清單的 ResultPayload 物件。
功能說明
回傳指定流程中存在的所有節點。當傳入 node_types 時,僅回傳 Python 類別名稱符合該清單項目的節點(例如 ["StartFlow", "Agent"])。省略 node_types 或傳入 None 則回傳所有節點。
run_flow
cmd.run_flow(flow_name)
執行指定的流程。
引數說明
| 名稱 | 引數型別 | 是否必填 |
|---|---|---|
flow_name |
string | 🟢 |
回傳值
攜帶流程執行狀態的 ResultPayload 物件。
功能說明
啟動並執行指定的流程。
reset_flow
cmd.reset_flow(flow_name)
將流程重設為初始狀態。
引數說明
| 名稱 | 引數型別 | 是否必填 |
|---|---|---|
flow_name |
string | 🟢 |
回傳值
攜帶流程重設狀態的 ResultPayload 物件。
功能說明
清除並取消流程中所有節點的解析狀態 (Unresolve),使流程完全回歸至初始就緒狀態。
get_flow_state
cmd.get_flow_state(flow_name)
回傳流程當前的執行狀態。
引數說明
| 名稱 | 引數型別 | 是否必填 |
|---|---|---|
flow_name |
string | 🟢 |
回傳值
包含流程狀態資訊的 ResultPayload 物件。
功能說明
讀取指定流程當下的運行與執行狀態。
cancel_flow
cmd.cancel_flow(flow_name)
取消流程的執行運算。
引數說明
| 名稱 | 引數型別 | 是否必填 |
|---|---|---|
flow_name |
string | 🟢 |
回傳值
攜帶流程取消狀態的 ResultPayload 物件。
功能說明
即刻中止並停止指定流程的執行。
single_step
cmd.single_step(flow_name)
在流程中以單一步驟執行單一節點。
引數說明
| 名稱 | 引數型別 | 是否必填 |
|---|---|---|
flow_name |
string | 🟢 |
回傳值
攜帶單步執行狀態的 ResultPayload 物件。
功能說明
在指定流程中僅執行單一個運算節點。
single_execution_step
cmd.single_execution_step(flow_name)
在流程中執行單一執行步驟。
引數說明
| 名稱 | 引數型別 | 是否必填 |
|---|---|---|
flow_name |
string | 🟢 |
回傳值
攜帶執行步驟狀態的 ResultPayload 物件。
功能說明
在指定流程中推進執行單一執行步驟。
continue_flow
cmd.continue_flow(flow_name)
繼續執行處於暫停狀態的流程。
引數說明
| 名稱 | 引數型別 | 是否必填 |
|---|---|---|
flow_name |
string | 🟢 |
回傳值
攜帶流程繼續執行狀態的 ResultPayload 物件。
功能說明
恢復並繼續運作先前處於暫停狀態的流程。
節點操作 (Node Operations)
create_node
cmd.create_node(node_type, specific_library_name=None, node_name=None, parent_flow_name=None, metadata=None)
建立一個全新節點。
引數說明
| 名稱 | 引數型別 | 是否必填 |
|---|---|---|
node_type |
string | 🟢 |
specific_library_name |
string | ⚪ |
node_name |
string | ⚪ |
parent_flow_name |
string | ⚪ |
metadata |
dict | ⚪ |
回傳值
節點名稱或攜帶節點建立狀態的 ResultPayload 物件。
功能說明
建立指定型別的新節點。選填參數允許進一步明確指定程式庫來源、自訂節點名稱、所屬父流程以及附加中繼資料。
delete_node
cmd.delete_node(node_name)
刪除既有的節點。
引數說明
| 名稱 | 引數型別 | 是否必填 |
|---|---|---|
node_name |
string | 🟢 |
回傳值
攜帶節點刪除狀態的 ResultPayload 物件。
功能說明
從系統中徹底移除指定的節點。
run_node
cmd.run_node(node_name)
獨立執行單一節點。
引數說明
| 名稱 | 引數型別 | 是否必填 |
|---|---|---|
node_name |
string | 🟢 |
回傳值
攜帶節點執行狀態的 ResultPayload 物件。
功能說明
解析並直接觸發執行指定的單一節點。
get_resolution_state_for_node
cmd.get_resolution_state_for_node(node_name)
回傳節點當前的解析狀態。
引數說明
| 名稱 | 引數型別 | 是否必填 |
|---|---|---|
node_name |
string | 🟢 |
回傳值
包含節點解析狀態的 ResultPayload 物件。
功能說明
讀取指定節點當前的解析就緒或完成狀態。
get_metadata_for_node
cmd.get_metadata_for_node(node_name)
讀取節點的中繼資料。
引數說明
| 名稱 | 引數型別 | 是否必填 |
|---|---|---|
node_name |
string | 🟢 |
回傳值
包含節點中繼資料的 ResultPayload 物件。
功能說明
取得與指定節點關聯的所有中繼資料字典。
set_metadata_for_node
cmd.set_metadata_for_node(node_name, metadata)
設定節點的中繼資料。
引數說明
| 名稱 | 引數型別 | 是否必填 |
|---|---|---|
node_name |
string | 🟢 |
metadata |
dict | 🟢 |
回傳值
攜帶中繼資料更新狀態的 ResultPayload 物件。
功能說明
為指定的節點覆寫或指派中繼資料。
exists
cmd.exists(node)
檢查節點是否存在。
引數說明
| 名稱 | 引數型別 | 是否必填 |
|---|---|---|
node |
string | 🟢 |
回傳值
布林值,表示該節點是否存在。
功能說明
若系統中存在指定的節點則回傳 True,否則回傳 False。
ls
cmd.ls(**kwargs)
列出系統中的物件。
引數說明
| 名稱 | 引數型別 | 是否必填 |
|---|---|---|
**kwargs |
dict | ⚪ |
回傳值
符合篩選條件的物件名稱清單。
功能說明
列出系統中的各類物件,並可根據傳入的關鍵字參數進行自訂條件篩選。
參數操作 (Parameter Operations)
list_params
cmd.list_params(node)
列出節點上的所有參數。
引數說明
| 名稱 | 引數型別 | 是否必填 |
|---|---|---|
node |
string | 🟢 |
回傳值
參數名稱字串清單。
功能說明
回傳指定節點上定義的所有參數清單。
add_param
cmd.add_param(
node_name,
parameter_name,
default_value,
tooltip,
type=None,
input_types=None,
output_type=None,
edit=False,
tooltip_as_input=None,
tooltip_as_property=None,
tooltip_as_output=None,
ui_options=None,
mode_allowed_input=True,
mode_allowed_property=True,
mode_allowed_output=True,
**kwargs,
)
為節點新增參數。
引數說明
| 名稱 | 引數型別 | 是否必填 |
|---|---|---|
node_name |
string | 🟢 |
parameter_name |
string | 🟢 |
default_value |
any | 🟢 |
tooltip |
string or list | 🟢 |
type |
string | ⚪ |
input_types |
list of strings | ⚪ |
output_type |
string | ⚪ |
edit |
boolean | ⚪ |
tooltip_as_input |
string or list | ⚪ |
tooltip_as_property |
string or list | ⚪ |
tooltip_as_output |
string or list | ⚪ |
ui_options |
ParameterUIOptions | ⚪ |
mode_allowed_input |
boolean | ⚪ |
mode_allowed_property |
boolean | ⚪ |
mode_allowed_output |
boolean | ⚪ |
回傳值
攜帶參數新增狀態的 ResultPayload 物件。
功能說明
根據所提供的各項配置為指定節點新增參數。若設定 edit=True,則改為修改已存在的同名參數。
del_param
cmd.del_param(node_name, parameter_name)
從節點中移除參數。
引數說明
| 名稱 | 引數型別 | 是否必填 |
|---|---|---|
node_name |
string | 🟢 |
parameter_name |
string | 🟢 |
回傳值
攜帶參數移除狀態的 ResultPayload 物件。
功能說明
從指定節點中刪除所選取的參數。
param_info
cmd.param_info(node, param) 或 cmd.param_info("node.param")
讀取參數的詳細規格資訊。
引數說明
| 名稱 | 引數型別 | 是否必填 |
|---|---|---|
node |
string | 🟢 |
param |
string | 🟢 |
回傳值
包含參數規格細節的 ResultPayload 物件。
功能說明
回傳指定參數的完整詳細資訊。可傳入分立的節點名與參數名,亦可傳入統一的 "node.param" 字串。
get_value
cmd.get_value(node, param) 或 cmd.get_value("node.param")
讀取參數的當前數值。
引數說明
| 名稱 | 引數型別 | 是否必填 |
|---|---|---|
node |
string | 🟢 |
param |
string | 🟢 |
回傳值
參數的實際數值,或回傳失敗結果。
功能說明
回傳指定參數的當前儲存值。支援容器型別的索引存取語法(例如 "node.param[0]")。
set_value
cmd.set_value(node, param, value) 或 cmd.set_value("node.param", value)
設定參數的數值。
引數說明
| 名稱 | 引數型別 | 是否必填 |
|---|---|---|
node |
string | 🟢 |
param |
string | 🟢 |
value |
any | 🟢 |
回傳值
攜帶數值更新狀態的 ResultPayload 物件。
功能說明
設定指定參數的值。支援容器型別的索引存取語法(例如 "node.param[0]")。
連線操作 (Connection Operations)
connect
cmd.connect(source, destination)
在兩個參數之間建立拓撲連線。
引數說明
| 名稱 | 引數型別 | 是否必填 |
|---|---|---|
source |
string | 🟢 |
destination |
string | 🟢 |
回傳值
攜帶連線建立狀態的 ResultPayload 物件。
功能說明
從來源參數 (source) 連線至目的地參數 (destination)。兩者皆應採用 "node.param" 格式指定。
exec_chain
cmd.exec_chain(*node_names)
在一系列節點之間建立執行控制連線鏈。
引數說明
| 名稱 | 引數型別 | 是否必填 |
|---|---|---|
*node_names |
string(s) | 🟢 |
回傳值
包含每個連線嘗試結果的字典物件。
功能說明
依序在傳入的節點串列間建立 exec_out -> exec_in 連線,將它們有效串聯以進行循序執行。
delete_connection
cmd.delete_connection(source_node_name, source_param_name, target_node_name, target_param_name)
刪除參數之間的連線。
引數說明
| 名稱 | 引數型別 | 是否必填 |
|---|---|---|
source_node_name |
string | 🟢 |
source_param_name |
string | 🟢 |
target_node_name |
string | 🟢 |
target_param_name |
string | 🟢 |
回傳值
攜帶連線刪除狀態的 ResultPayload 物件。
功能說明
解除指定來源參數與目標參數之間的實體連線。
get_connections_for_node
cmd.get_connections_for_node(node_name)
列出節點的所有連線。
引數說明
| 名稱 | 引數型別 | 是否必填 |
|---|---|---|
node_name |
string | 🟢 |
回傳值
包含連線資訊的 ResultPayload 物件。
功能說明
回傳所有涉及該節點的輸入連線與輸出連線。
程式庫操作 (Library Operations)
get_available_libraries
cmd.get_available_libraries()
列出所有可用的節點程式庫。
引數說明
無。
回傳值
包含程式庫名稱清單的 ResultPayload 物件。
功能說明
回傳系統中所有已成功註冊的節點程式庫。
get_node_types_in_library
cmd.get_node_types_in_library(library_name)
列出特定程式庫中的所有節點型別。
引數說明
| 名稱 | 引數型別 | 是否必填 |
|---|---|---|
library_name |
string | 🟢 |
回傳值
包含節點型別名稱清單的 ResultPayload 物件。
功能說明
回傳指定程式庫所提供的所有可用節點型別。
get_node_metadata_from_library
cmd.get_node_metadata_from_library(library_name, node_type_name)
讀取節點型別的中繼資料。
引數說明
| 名稱 | 引數型別 | 是否必填 |
|---|---|---|
library_name |
string | 🟢 |
node_type_name |
string | 🟢 |
回傳值
包含節點型別中繼資料的 ResultPayload 物件。
功能說明
回傳指定程式庫中該節點型別的結構定義中繼資料。
設定操作 (Config Operations)
get_config_value
cmd.get_config_value(category_and_key)
讀取設定鍵的數值。
引數說明
| 名稱 | 引數型別 | 是否必填 |
|---|---|---|
category_and_key |
string | 🟢 |
回傳值
包含設定數值的 ResultPayload 物件。
功能說明
回傳指定設定鍵(例如 "category.key")的設定值。
set_config_value
cmd.set_config_value(category_and_key, value)
寫入設定鍵的數值。
引數說明
| 名稱 | 引數型別 | 是否必填 |
|---|---|---|
category_and_key |
string | 🟢 |
value |
any | 🟢 |
回傳值
攜帶設定更新狀態的 ResultPayload 物件。
功能說明
為指定的設定鍵指派新數值。
get_config_category
cmd.get_config_category(category=None)
讀取某個分類下的所有設定值。
引數說明
| 名稱 | 引數型別 | 是否必填 |
|---|---|---|
category |
string | ⚪ |
回傳值
包含該分類下所有設定項目的 ResultPayload 物件。
功能說明
回傳指定分類下的所有設定參數。若未提供 category,則回傳全域所有分類的完整設定。
set_config_category
cmd.set_config_category(category=None, contents={})
批次設定某個分類下的所有項目。
引數說明
| 名稱 | 引數型別 | 是否必填 |
|---|---|---|
category |
string | ⚪ |
contents |
dict | ⚪ |
回傳值
攜帶分類設定更新狀態的 ResultPayload 物件。
功能說明
以傳入的字典內容更新指定分類下的所有設定值。
公用公用程式 (Utility Operations)
run_arbitrary_python
cmd.run_arbitrary_python(python_str)
執行任意 Python 程式碼字串。
引數說明
| 名稱 | 引數型別 | 是否必填 |
|---|---|---|
python_str |
string | 🟢 |
回傳值
包含執行狀態與結果的 ResultPayload 物件。
功能說明
在 Griptape 執行環境中動態執行傳入的 Python 程式碼字串。
範例示範
建立流程與節點
# 建立新流程
flow = cmd.create_flow(flow_name="MyFlow")
# 在流程中建立兩個節點
node1 = cmd.create_node(node_type="CreateText", node_name="MyText", parent_flow_name="MyFlow")
node2 = cmd.create_node(node_type="RunAgent", node_name="MyAgent", parent_flow_name="MyFlow")
設定參數值並建立連線
# 設定參數數值
cmd.set_value("MyText.text", "這是一段供摘要處理的示範文字。")
# 連接兩個節點
cmd.connect("MyText.text", "MyAgent.prompt")
執行流程
# 執行流程
cmd.run_flow("MyFlow")
# 讀取執行結果
summary = cmd.get_value("MyAgent.output")
print(summary) # 印出產生的摘要內容!
管理與自訂參數
# 為節點動態新增參數
cmd.add_param(
node_name="MyAgent",
parameter_name="sunglasses",
default_value=100,
tooltip="太陽眼鏡的帥氣程度",
type=["int"],
)
# 修改新參數的值
cmd.set_value("MyAgent.sunglasses", 50)
# 更新既有參數的規格
cmd.add_param(node_name="MyAgent", parameter_name="sunglasses", tooltip="減半後的太陽眼鏡帥氣程度", edit=1)
清單查詢與探索
# 列出流程內的所有節點
nodes = cmd.get_nodes_in_flow("MyFlow")
print(nodes) # ["MyText", "MyAgent"]
# 列出節點上的所有參數
params = cmd.list_params("MyAgent")
print(params) # ["agent", "prompt_driver", "tools", "rulesets", "prompt", "prompt_context", "output"]
# 檢查節點是否存在
if cmd.exists("MyText"):
print("MyText 節點確實存在") # True