| className='w-full' | className='w-full' | ||||
| onClick={() => setShowSettingAuth(true)} | onClick={() => setShowSettingAuth(true)} | ||||
| disabled={!isCurrentWorkspaceManager} | disabled={!isCurrentWorkspaceManager} | ||||
| >{t('tools.auth.unauthorized')}</Button> | |||||
| >{t('workflow.nodes.tool.authorize')}</Button> | |||||
| )} | )} | ||||
| </div> | </div> | ||||
| <div className='flex flex-col gap-2'> | <div className='flex flex-col gap-2'> |
| } | } | ||||
| panelShowState={panelShowState} | panelShowState={panelShowState} | ||||
| onPanelShowStateChange={setPanelShowState} | onPanelShowStateChange={setPanelShowState} | ||||
| isEdit={false} | |||||
| /> | /> | ||||
| {value.length === 0 && ( | {value.length === 0 && ( | ||||
| <div className='system-xs-regular flex justify-center rounded-[10px] bg-background-section p-3 text-text-tertiary'>{t('plugin.detailPanel.toolSelector.empty')}</div> | <div className='system-xs-regular flex justify-center rounded-[10px] bg-background-section p-3 text-text-tertiary'>{t('plugin.detailPanel.toolSelector.empty')}</div> | ||||
| onSelect={item => handleConfigure(item, index)} | onSelect={item => handleConfigure(item, index)} | ||||
| onDelete={() => handleDelete(index)} | onDelete={() => handleDelete(index)} | ||||
| supportEnableSwitch | supportEnableSwitch | ||||
| isEdit | |||||
| /> | /> | ||||
| </div> | </div> | ||||
| ))} | ))} |
| scope?: string | scope?: string | ||||
| value?: ToolValue | value?: ToolValue | ||||
| selectedTools?: ToolValue[] | selectedTools?: ToolValue[] | ||||
| isEdit?: boolean | |||||
| onSelect: (tool: { | onSelect: (tool: { | ||||
| provider_name: string | provider_name: string | ||||
| tool_name: string | tool_name: string | ||||
| const ToolSelector: FC<Props> = ({ | const ToolSelector: FC<Props> = ({ | ||||
| value, | value, | ||||
| selectedTools, | selectedTools, | ||||
| isEdit, | |||||
| disabled, | disabled, | ||||
| placement = 'left', | placement = 'left', | ||||
| offset = 4, | offset = 4, | ||||
| <div className={cn('relative max-h-[642px] min-h-20 w-[361px] rounded-xl border-[0.5px] border-components-panel-border bg-components-panel-bg-blur pb-4 shadow-lg backdrop-blur-sm', !isShowSettingAuth && 'overflow-y-auto pb-2')}> | <div className={cn('relative max-h-[642px] min-h-20 w-[361px] rounded-xl border-[0.5px] border-components-panel-border bg-components-panel-bg-blur pb-4 shadow-lg backdrop-blur-sm', !isShowSettingAuth && 'overflow-y-auto pb-2')}> | ||||
| {!isShowSettingAuth && ( | {!isShowSettingAuth && ( | ||||
| <> | <> | ||||
| <div className='system-xl-semibold px-4 pb-1 pt-3.5 text-text-primary'>{t('plugin.detailPanel.toolSelector.title')}</div> | |||||
| <div className='system-xl-semibold px-4 pb-1 pt-3.5 text-text-primary'>{t(`plugin.detailPanel.toolSelector.${isEdit ? 'toolSetting' : 'title'}`)}</div> | |||||
| {/* base form */} | {/* base form */} | ||||
| <div className='flex flex-col gap-3 px-4 py-2'> | <div className='flex flex-col gap-3 px-4 py-2'> | ||||
| <div className='flex flex-col gap-1'> | <div className='flex flex-col gap-1'> |
| className='w-full' | className='w-full' | ||||
| onClick={showSetAuthModal} | onClick={showSetAuthModal} | ||||
| > | > | ||||
| {t(`${i18nPrefix}.toAuthorize`)} | |||||
| {t(`${i18nPrefix}.authorize`)} | |||||
| </Button> | </Button> | ||||
| </div> | </div> | ||||
| </> | </> |
| }, | }, | ||||
| author: 'Von', | author: 'Von', | ||||
| auth: { | auth: { | ||||
| unauthorized: 'Zur Autorisierung', | |||||
| authorized: 'Autorisiert', | authorized: 'Autorisiert', | ||||
| setup: 'Autorisierung einrichten, um zu nutzen', | setup: 'Autorisierung einrichten, um zu nutzen', | ||||
| setupModalTitle: 'Autorisierung einrichten', | setupModalTitle: 'Autorisierung einrichten', |
| 'assignedVarsDescription': 'Zugewiesene Variablen müssen beschreibbare Variablen sein, z. B. Konversationsvariablen.', | 'assignedVarsDescription': 'Zugewiesene Variablen müssen beschreibbare Variablen sein, z. B. Konversationsvariablen.', | ||||
| }, | }, | ||||
| tool: { | tool: { | ||||
| toAuthorize: 'Autorisieren', | |||||
| inputVars: 'Eingabevariablen', | inputVars: 'Eingabevariablen', | ||||
| outputVars: { | outputVars: { | ||||
| text: 'durch das Tool generierter Inhalt', | text: 'durch das Tool generierter Inhalt', |
| modelNum: '{{num}} MODELS INCLUDED', | modelNum: '{{num}} MODELS INCLUDED', | ||||
| toolSelector: { | toolSelector: { | ||||
| title: 'Add tool', | title: 'Add tool', | ||||
| toolSetting: 'Tool Settings', | |||||
| toolLabel: 'Tool', | toolLabel: 'Tool', | ||||
| descriptionLabel: 'Tool description', | descriptionLabel: 'Tool description', | ||||
| descriptionPlaceholder: 'Brief description of the tool\'s purpose, e.g., get the temperature for a specific location.', | descriptionPlaceholder: 'Brief description of the tool\'s purpose, e.g., get the temperature for a specific location.', |
| }, | }, | ||||
| author: 'By', | author: 'By', | ||||
| auth: { | auth: { | ||||
| unauthorized: 'To Authorize', | |||||
| authorized: 'Authorized', | authorized: 'Authorized', | ||||
| setup: 'Set up authorization to use', | setup: 'Set up authorization to use', | ||||
| setupModalTitle: 'Set Up Authorization', | setupModalTitle: 'Set Up Authorization', |
| 'assignedVarsDescription': 'Assigned variables must be writable variables, such as conversation variables.', | 'assignedVarsDescription': 'Assigned variables must be writable variables, such as conversation variables.', | ||||
| }, | }, | ||||
| tool: { | tool: { | ||||
| toAuthorize: 'To authorize', | |||||
| authorize: 'Authorize', | |||||
| inputVars: 'Input Variables', | inputVars: 'Input Variables', | ||||
| outputVars: { | outputVars: { | ||||
| text: 'tool generated content', | text: 'tool generated content', |
| }, | }, | ||||
| author: 'Por', | author: 'Por', | ||||
| auth: { | auth: { | ||||
| unauthorized: 'Para Autorizar', | |||||
| authorized: 'Autorizado', | authorized: 'Autorizado', | ||||
| setup: 'Configurar la autorización para usar', | setup: 'Configurar la autorización para usar', | ||||
| setupModalTitle: 'Configurar Autorización', | setupModalTitle: 'Configurar Autorización', |
| 'assignedVarsDescription': 'Las variables asignadas deben ser variables grabables, como las variables de conversación.', | 'assignedVarsDescription': 'Las variables asignadas deben ser variables grabables, como las variables de conversación.', | ||||
| }, | }, | ||||
| tool: { | tool: { | ||||
| toAuthorize: 'Para autorizar', | |||||
| inputVars: 'Variables de entrada', | inputVars: 'Variables de entrada', | ||||
| outputVars: { | outputVars: { | ||||
| text: 'Contenido generado por la herramienta', | text: 'Contenido generado por la herramienta', |
| }, | }, | ||||
| author: 'توسط', | author: 'توسط', | ||||
| auth: { | auth: { | ||||
| unauthorized: 'برای مجوز دادن', | |||||
| authorized: 'مجوز داده شده', | authorized: 'مجوز داده شده', | ||||
| setup: 'تنظیم مجوز برای استفاده', | setup: 'تنظیم مجوز برای استفاده', | ||||
| setupModalTitle: 'تنظیم مجوز', | setupModalTitle: 'تنظیم مجوز', |
| 'varNotSet': 'متغیر NOT Set', | 'varNotSet': 'متغیر NOT Set', | ||||
| }, | }, | ||||
| tool: { | tool: { | ||||
| toAuthorize: 'برای مجوز دادن', | |||||
| inputVars: 'متغیرهای ورودی', | inputVars: 'متغیرهای ورودی', | ||||
| outputVars: { | outputVars: { | ||||
| text: 'محتوای تولید شده توسط ابزار', | text: 'محتوای تولید شده توسط ابزار', |
| }, | }, | ||||
| author: 'Par', | author: 'Par', | ||||
| auth: { | auth: { | ||||
| unauthorized: 'Pour Autoriser', | |||||
| authorized: 'Autorisé', | authorized: 'Autorisé', | ||||
| setup: 'Mettez en place l\'autorisation à utiliser', | setup: 'Mettez en place l\'autorisation à utiliser', | ||||
| setupModalTitle: 'Configurer l\'Autorisation', | setupModalTitle: 'Configurer l\'Autorisation', |
| 'selectAssignedVariable': 'Sélectionner la variable affectée...', | 'selectAssignedVariable': 'Sélectionner la variable affectée...', | ||||
| }, | }, | ||||
| tool: { | tool: { | ||||
| toAuthorize: 'Autoriser', | |||||
| inputVars: 'Variables de saisie', | inputVars: 'Variables de saisie', | ||||
| outputVars: { | outputVars: { | ||||
| text: 'contenu généré par l\'outil', | text: 'contenu généré par l\'outil', |
| }, | }, | ||||
| author: 'द्वारा', | author: 'द्वारा', | ||||
| auth: { | auth: { | ||||
| unauthorized: 'अधिकृत करने के लिए', | |||||
| authorized: 'अधिकृत', | authorized: 'अधिकृत', | ||||
| setup: 'उपयोग करने के लिए अधिकृति सेटअप करें', | setup: 'उपयोग करने के लिए अधिकृति सेटअप करें', | ||||
| setupModalTitle: 'अधिकृति सेटअप करें', | setupModalTitle: 'अधिकृति सेटअप करें', |
| 'noAssignedVars': 'कोई उपलब्ध असाइन किए गए चर नहीं', | 'noAssignedVars': 'कोई उपलब्ध असाइन किए गए चर नहीं', | ||||
| }, | }, | ||||
| tool: { | tool: { | ||||
| toAuthorize: 'अधिकृत करने के लिए', | |||||
| inputVars: 'इनपुट वेरिएबल्स', | inputVars: 'इनपुट वेरिएबल्स', | ||||
| outputVars: { | outputVars: { | ||||
| text: 'उपकरण द्वारा उत्पन्न सामग्री', | text: 'उपकरण द्वारा उत्पन्न सामग्री', |
| }, | }, | ||||
| author: 'Di', | author: 'Di', | ||||
| auth: { | auth: { | ||||
| unauthorized: 'Per Autorizzare', | |||||
| authorized: 'Autorizzato', | authorized: 'Autorizzato', | ||||
| setup: 'Configura l\'autorizzazione per utilizzare', | setup: 'Configura l\'autorizzazione per utilizzare', | ||||
| setupModalTitle: 'Configura Autorizzazione', | setupModalTitle: 'Configura Autorizzazione', |
| 'noVarTip': 'Fare clic sul pulsante "+" per aggiungere variabili', | 'noVarTip': 'Fare clic sul pulsante "+" per aggiungere variabili', | ||||
| }, | }, | ||||
| tool: { | tool: { | ||||
| toAuthorize: 'Per autorizzare', | |||||
| inputVars: 'Variabili di Input', | inputVars: 'Variabili di Input', | ||||
| outputVars: { | outputVars: { | ||||
| text: 'contenuto generato dallo strumento', | text: 'contenuto generato dallo strumento', |
| }, | }, | ||||
| author: '著者:', | author: '著者:', | ||||
| auth: { | auth: { | ||||
| unauthorized: '認証する', | |||||
| authorized: '認証済み', | authorized: '認証済み', | ||||
| setup: '使用するための認証を設定する', | setup: '使用するための認証を設定する', | ||||
| setupModalTitle: '認証の設定', | setupModalTitle: '認証の設定', |
| 'assignedVarsDescription': '代入される変数は、会話変数などの書き込み可能な変数である必要があります。', | 'assignedVarsDescription': '代入される変数は、会話変数などの書き込み可能な変数である必要があります。', | ||||
| }, | }, | ||||
| tool: { | tool: { | ||||
| toAuthorize: '承認するには', | |||||
| inputVars: '入力変数', | inputVars: '入力変数', | ||||
| outputVars: { | outputVars: { | ||||
| text: 'ツールが生成したコンテンツ', | text: 'ツールが生成したコンテンツ', |
| }, | }, | ||||
| author: '저자', | author: '저자', | ||||
| auth: { | auth: { | ||||
| unauthorized: '인증되지 않음', | |||||
| authorized: '인증됨', | authorized: '인증됨', | ||||
| setup: '사용을 위한 인증 설정', | setup: '사용을 위한 인증 설정', | ||||
| setupModalTitle: '인증 설정', | setupModalTitle: '인증 설정', |
| 'varNotSet': '변수가 설정되지 않음', | 'varNotSet': '변수가 설정되지 않음', | ||||
| }, | }, | ||||
| tool: { | tool: { | ||||
| toAuthorize: '승인하기', | |||||
| inputVars: '입력 변수', | inputVars: '입력 변수', | ||||
| outputVars: { | outputVars: { | ||||
| text: '도구가 생성한 내용', | text: '도구가 생성한 내용', |
| }, | }, | ||||
| author: 'Przez', | author: 'Przez', | ||||
| auth: { | auth: { | ||||
| unauthorized: 'Autoryzacja', | |||||
| authorized: 'Zautoryzowane', | authorized: 'Zautoryzowane', | ||||
| setup: 'Skonfiguruj autoryzację aby użyć', | setup: 'Skonfiguruj autoryzację aby użyć', | ||||
| setupModalTitle: 'Konfiguruj autoryzację', | setupModalTitle: 'Konfiguruj autoryzację', |
| 'noVarTip': 'Kliknij przycisk "+", aby dodać zmienne', | 'noVarTip': 'Kliknij przycisk "+", aby dodać zmienne', | ||||
| }, | }, | ||||
| tool: { | tool: { | ||||
| toAuthorize: 'Do autoryzacji', | |||||
| inputVars: 'Zmienne wejściowe', | inputVars: 'Zmienne wejściowe', | ||||
| outputVars: { | outputVars: { | ||||
| text: 'treść generowana przez narzędzie', | text: 'treść generowana przez narzędzie', |
| }, | }, | ||||
| author: 'Por', | author: 'Por', | ||||
| auth: { | auth: { | ||||
| unauthorized: 'Para Autorizar', | |||||
| authorized: 'Autorizado', | authorized: 'Autorizado', | ||||
| setup: 'Configurar autorização para usar', | setup: 'Configurar autorização para usar', | ||||
| setupModalTitle: 'Configurar Autorização', | setupModalTitle: 'Configurar Autorização', |
| 'variables': 'Variáveis', | 'variables': 'Variáveis', | ||||
| }, | }, | ||||
| tool: { | tool: { | ||||
| toAuthorize: 'Autorizar', | |||||
| inputVars: 'Variáveis de entrada', | inputVars: 'Variáveis de entrada', | ||||
| outputVars: { | outputVars: { | ||||
| text: 'conteúdo gerado pela ferramenta', | text: 'conteúdo gerado pela ferramenta', |
| }, | }, | ||||
| author: 'De', | author: 'De', | ||||
| auth: { | auth: { | ||||
| unauthorized: 'Pentru a Autoriza', | |||||
| authorized: 'Autorizat', | authorized: 'Autorizat', | ||||
| setup: 'Configurează autorizarea pentru a utiliza', | setup: 'Configurează autorizarea pentru a utiliza', | ||||
| setupModalTitle: 'Configurează Autorizarea', | setupModalTitle: 'Configurează Autorizarea', |
| 'variables': 'Variabile', | 'variables': 'Variabile', | ||||
| }, | }, | ||||
| tool: { | tool: { | ||||
| toAuthorize: 'Autorizați', | |||||
| inputVars: 'Variabile de intrare', | inputVars: 'Variabile de intrare', | ||||
| outputVars: { | outputVars: { | ||||
| text: 'conținut generat de instrument', | text: 'conținut generat de instrument', |
| }, | }, | ||||
| author: 'Автор', | author: 'Автор', | ||||
| auth: { | auth: { | ||||
| unauthorized: 'Авторизовать', | |||||
| authorized: 'Авторизовано', | authorized: 'Авторизовано', | ||||
| setup: 'Настроить авторизацию для использования', | setup: 'Настроить авторизацию для использования', | ||||
| setupModalTitle: 'Настроить авторизацию', | setupModalTitle: 'Настроить авторизацию', |
| 'selectAssignedVariable': 'Выберите назначенную переменную...', | 'selectAssignedVariable': 'Выберите назначенную переменную...', | ||||
| }, | }, | ||||
| tool: { | tool: { | ||||
| toAuthorize: 'Авторизовать', | |||||
| inputVars: 'Входные переменные', | inputVars: 'Входные переменные', | ||||
| outputVars: { | outputVars: { | ||||
| text: 'контент, сгенерированный инструментом', | text: 'контент, сгенерированный инструментом', |
| }, | }, | ||||
| author: 'Avtor', | author: 'Avtor', | ||||
| auth: { | auth: { | ||||
| unauthorized: 'Za avtorizacijo', | |||||
| authorized: 'Avtorizirano', | authorized: 'Avtorizirano', | ||||
| setup: 'Nastavite avtorizacijo za uporabo', | setup: 'Nastavite avtorizacijo za uporabo', | ||||
| setupModalTitle: 'Nastavi avtorizacijo', | setupModalTitle: 'Nastavi avtorizacijo', |
| 'variable': 'Spremenljivka', | 'variable': 'Spremenljivka', | ||||
| }, | }, | ||||
| tool: { | tool: { | ||||
| toAuthorize: 'Za avtorizacijo', | |||||
| inputVars: 'Vhodne spremenljivke', | inputVars: 'Vhodne spremenljivke', | ||||
| outputVars: { | outputVars: { | ||||
| text: 'orodje je ustvarilo vsebino', | text: 'orodje je ustvarilo vsebino', |
| }, | }, | ||||
| author: 'โดย', | author: 'โดย', | ||||
| auth: { | auth: { | ||||
| unauthorized: 'การอนุญาต', | |||||
| authorized: 'อนุญาต', | authorized: 'อนุญาต', | ||||
| setup: 'ตั้งค่าการให้สิทธิ์เพื่อใช้', | setup: 'ตั้งค่าการให้สิทธิ์เพื่อใช้', | ||||
| setupModalTitle: 'ตั้งค่าการให้สิทธิ์', | setupModalTitle: 'ตั้งค่าการให้สิทธิ์', |
| 'setParameter': 'ตั้งค่าพารามิเตอร์...', | 'setParameter': 'ตั้งค่าพารามิเตอร์...', | ||||
| }, | }, | ||||
| tool: { | tool: { | ||||
| toAuthorize: 'เพื่ออนุญาต', | |||||
| inputVars: 'ตัวแปรอินพุต', | inputVars: 'ตัวแปรอินพุต', | ||||
| outputVars: { | outputVars: { | ||||
| text: 'เนื้อหาที่สร้างขึ้นด้วยเครื่องมือ', | text: 'เนื้อหาที่สร้างขึ้นด้วยเครื่องมือ', |
| }, | }, | ||||
| author: 'Tarafından', | author: 'Tarafından', | ||||
| auth: { | auth: { | ||||
| unauthorized: 'Yetki Ver', | |||||
| authorized: 'Yetkilendirildi', | authorized: 'Yetkilendirildi', | ||||
| setup: 'Kullanmak için yetkilendirmeyi ayarla', | setup: 'Kullanmak için yetkilendirmeyi ayarla', | ||||
| setupModalTitle: 'Yetkilendirmeyi Ayarla', | setupModalTitle: 'Yetkilendirmeyi Ayarla', |
| 'noAssignedVars': 'Kullanılabilir atanmış değişken yok', | 'noAssignedVars': 'Kullanılabilir atanmış değişken yok', | ||||
| }, | }, | ||||
| tool: { | tool: { | ||||
| toAuthorize: 'Yetkilendirmek için', | |||||
| inputVars: 'Giriş Değişkenleri', | inputVars: 'Giriş Değişkenleri', | ||||
| outputVars: { | outputVars: { | ||||
| text: 'araç tarafından oluşturulan içerik', | text: 'araç tarafından oluşturulan içerik', |
| }, | }, | ||||
| author: 'Автор', | author: 'Автор', | ||||
| auth: { | auth: { | ||||
| unauthorized: 'Авторизуватися', | |||||
| authorized: 'Авторизовано', | authorized: 'Авторизовано', | ||||
| setup: 'Налаштувати авторизацію, щоб використовувати', | setup: 'Налаштувати авторизацію, щоб використовувати', | ||||
| setupModalTitle: 'Налаштування авторизації', | setupModalTitle: 'Налаштування авторизації', |
| 'setParameter': 'Встановити параметр...', | 'setParameter': 'Встановити параметр...', | ||||
| }, | }, | ||||
| tool: { | tool: { | ||||
| toAuthorize: 'Авторизувати', | |||||
| inputVars: 'Вхідні змінні', | inputVars: 'Вхідні змінні', | ||||
| outputVars: { | outputVars: { | ||||
| text: 'генерований вміст інструменту', | text: 'генерований вміст інструменту', |
| }, | }, | ||||
| author: 'Tác giả', | author: 'Tác giả', | ||||
| auth: { | auth: { | ||||
| unauthorized: 'Chưa xác thực', | |||||
| authorized: 'Đã xác thực', | authorized: 'Đã xác thực', | ||||
| setup: 'Thiết lập xác thực để sử dụng', | setup: 'Thiết lập xác thực để sử dụng', | ||||
| setupModalTitle: 'Thiết lập xác thực', | setupModalTitle: 'Thiết lập xác thực', |
| 'variables': 'Biến', | 'variables': 'Biến', | ||||
| }, | }, | ||||
| tool: { | tool: { | ||||
| toAuthorize: 'Ủy quyền', | |||||
| inputVars: 'Biến đầu vào', | inputVars: 'Biến đầu vào', | ||||
| outputVars: { | outputVars: { | ||||
| text: 'nội dung do công cụ tạo ra', | text: 'nội dung do công cụ tạo ra', |
| modelNum: '{{num}} 模型已包含', | modelNum: '{{num}} 模型已包含', | ||||
| toolSelector: { | toolSelector: { | ||||
| title: '添加工具', | title: '添加工具', | ||||
| toolSetting: '工具设置', | |||||
| toolLabel: '工具', | toolLabel: '工具', | ||||
| descriptionLabel: '工具描述', | descriptionLabel: '工具描述', | ||||
| descriptionPlaceholder: '简要描述工具目的,例如,获取特定位置的温度。', | descriptionPlaceholder: '简要描述工具目的,例如,获取特定位置的温度。', |
| }, | }, | ||||
| author: '作者', | author: '作者', | ||||
| auth: { | auth: { | ||||
| unauthorized: '去授权', | |||||
| authorized: '已授权', | authorized: '已授权', | ||||
| setup: '要使用请先授权', | setup: '要使用请先授权', | ||||
| setupModalTitle: '设置授权', | setupModalTitle: '设置授权', |
| 'assignedVarsDescription': '赋值变量必须是可写入的变量,例如会话变量。', | 'assignedVarsDescription': '赋值变量必须是可写入的变量,例如会话变量。', | ||||
| }, | }, | ||||
| tool: { | tool: { | ||||
| toAuthorize: '授权', | |||||
| authorize: '授权', | |||||
| inputVars: '输入变量', | inputVars: '输入变量', | ||||
| outputVars: { | outputVars: { | ||||
| text: '工具生成的内容', | text: '工具生成的内容', |
| }, | }, | ||||
| author: '作者', | author: '作者', | ||||
| auth: { | auth: { | ||||
| unauthorized: '去授權', | |||||
| authorized: '已授權', | authorized: '已授權', | ||||
| setup: '要使用請先授權', | setup: '要使用請先授權', | ||||
| setupModalTitle: '設定授權', | setupModalTitle: '設定授權', |
| 'varNotSet': '未設置變數', | 'varNotSet': '未設置變數', | ||||
| }, | }, | ||||
| tool: { | tool: { | ||||
| toAuthorize: '授權', | |||||
| authorize: '授權', | |||||
| inputVars: '輸入變量', | inputVars: '輸入變量', | ||||
| outputVars: { | outputVars: { | ||||
| text: '工具生成的內容', | text: '工具生成的內容', |