Files
mixly3/boards/default_src/micropython/blocks/ai_cloud.js
2025-12-05 18:17:33 +08:00

252 lines
9.8 KiB
JavaScript

import * as Blockly from 'blockly/core';
import { Variables } from '../../python/export';
const AI_CLOUD_VOICE_HUE = '#88ada6';
export const init_xunfei_vi = {
init: function () {
this.setColour(AI_CLOUD_VOICE_HUE);
this.appendValueInput('VAR')
.appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE);
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.MIXLY_AS + Blockly.Msg.MIXLY_XUFEI + Blockly.Msg.MIXLY_AipSpeech_asr );
this.appendValueInput('APPID')
.setCheck(String)
.appendField('APPID');
this.appendValueInput('APISecret')
.setCheck(String)
.appendField('APISecret');
this.appendValueInput('APIKey')
.setCheck(String)
.appendField('APIKey');
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
}
};
export const init_xunfei_Spark_Ultra = {
init: function () {
this.setColour(AI_CLOUD_VOICE_HUE);
this.appendValueInput('VAR')
.appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE);
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.MIXLY_AS + Blockly.Msg.MIXLY_XUFEI +Blockly.Msg.MIXLY_LARGE_LANGUAGE_MODEL );
this.appendValueInput('APPID')
.setCheck(String)
.appendField('APPID');
this.appendValueInput('APISecret')
.setCheck(String)
.appendField('APISecret');
this.appendValueInput('APIKey')
.setCheck(String)
.appendField('APIKey');
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_SELECT_MODEL)
.appendField(new Blockly.FieldDropdown([
["Spark-X1-32K","Spark X1-32K"],
["Spark-Lite","Spark Lite"],
["Spark-Pro","Spark Pro"],
["Spark-Pro-128K","Spark Pro-128K"],
["Spark-Max, " + Blockly.Msg.MIXLY_SUPPORT + Blockly.Msg.MIXLY_DIALOGUE_BACKGROUND + "、" + Blockly.Msg.MIXLY_ESP32_ONENET_SUB, "Spark Max"],
["Spark-Max-32K, "+ Blockly.Msg.MIXLY_SUPPORT + Blockly.Msg.MIXLY_DIALOGUE_BACKGROUND + "、" + Blockly.Msg.MIXLY_ESP32_ONENET_SUB, "Spark Max-32K"],
["Spark-Ultra-32K, "+ Blockly.Msg.MIXLY_SUPPORT + Blockly.Msg.MIXLY_DIALOGUE_BACKGROUND + "、" + Blockly.Msg.MIXLY_ESP32_ONENET_SUB, "Spark Ultra-32K"],
[Blockly.Msg.MIXLY_KJWX, "Spark kjwx"],
[Blockly.Msg.MIXLY_CUSTOMIZE_MODEL + "," + Blockly.Msg.MIXLY_SUPPORT + Blockly.Msg.MIXLY_ESP32_ONENET_SUB, "Spark Customize"]
]),"model");
this.appendValueInput('DBG')
.setCheck(String)
.appendField(Blockly.Msg.MIXLY_DIALOGUE_BACKGROUND);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
}
};
export const init_xunfei_Chinese_Model = {
init: function () {
this.setColour(AI_CLOUD_VOICE_HUE);
this.appendValueInput('VAR')
.appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE);
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.MIXLY_AS + Blockly.Msg.MIXLY_XUFEI+Blockly.Msg.MIXLY_CHINESE_RECOGNIZION+Blockly.Msg.MIXLY_LARGE_LANGUAGE_MODEL );
this.appendValueInput('APPID')
.setCheck(String)
.appendField('APPID');
this.appendValueInput('APISecret')
.setCheck(String)
.appendField('APISecret');
this.appendValueInput('APIKey')
.setCheck(String)
.appendField('APIKey');
this.appendValueInput('HW')
.setCheck(String)
.appendField(Blockly.Msg.MIXLY_HOT_WORD + 'ID');
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
}
};
export const xunfei_vi_run = {
init: function () {
this.setColour(AI_CLOUD_VOICE_HUE);
this.appendValueInput('VAR')
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_RUN + Blockly.Msg.MIXLY_AipSpeech_asr);
this.appendValueInput('time')
.setCheck(Number);
this.appendDummyInput()
.appendField(Blockly.Msg.MIXPY_AI_AUDIO_TIME);
this.setInputsInline(true);
this.setOutput(true);
this.setTooltip(Blockly.Msg.init_xunfei_vi_op_tooltip);
}
};
export const xunfei_Spark_Ultra_run = {
init: function () {
this.setColour(AI_CLOUD_VOICE_HUE);
this.appendValueInput('VAR')
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_RUN + Blockly.Msg.MIXLY_LARGE_LANGUAGE_MODEL);
this.appendValueInput('qus')
.setCheck(String)
.appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_SEND);
this.setInputsInline(true);
this.setOutput(true);
this.setTooltip(Blockly.Msg.init_xunfei_vi_run_tooltip);
}
};
export const init_xunfei_Spark_Ultra_clr_his = {
init: function () {
this.setColour(AI_CLOUD_VOICE_HUE);
this.appendValueInput('VAR')
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_RUN + Blockly.Msg.MIXLY_LARGE_LANGUAGE_MODEL + Blockly.Msg.MIXLY_EMPTY_HISTORY);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
}
};
export const llm_set_callback = {
init: function () {
this.setColour(AI_CLOUD_VOICE_HUE);
this.appendValueInput('VAR1')
this.appendValueInput('callback')
.appendField(Blockly.Msg.MIXLY_PYTHON_CONTROLS_THREAD_USE)
this.appendValueInput('VAR2')
.appendField(Blockly.Msg.MIXLY_FUNCTION_NAME);
this.appendValueInput('VAR3')
.appendField(Blockly.Msg.MIXLY_FUNCTION_DESCRIPTION)
this.itemCount_ = 2;
this.updateShape_();
this.setMutator(new Blockly.icons.MutatorIcon(['llm_set_callback_item'], this));
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setInputsInline(true);
this.setTooltip(Blockly.Msg.llm_set_callback_tooltip);
},
mutationToDom: function () {
var container = document.createElement('mutation');
container.setAttribute('items', this.itemCount_);
return container;
},
domToMutation: function (xmlElement) {
this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10);
this.updateShape_();
},
decompose: function (workspace) {
var containerBlock =
workspace.newBlock('llm_set_callback_container');
containerBlock.initSvg();
var connection = containerBlock.getInput('STACK').connection;
for (var i = 0; i < this.itemCount_; i++) {
var itemBlock = workspace.newBlock('llm_set_callback_item');
itemBlock.initSvg();
connection.connect(itemBlock.previousConnection);
connection = itemBlock.nextConnection;
}
return containerBlock;
},
compose: function (containerBlock) {
var itemBlock = containerBlock.getInputTargetBlock('STACK');
// Count number of inputs.
var connections = [];
var i = 0;
while (itemBlock) {
connections[i] = itemBlock.valueConnection_;
itemBlock = itemBlock.nextConnection &&
itemBlock.nextConnection.targetBlock();
i++;
}
this.itemCount_ = i;
this.updateShape_();
// Reconnect any child blocks.
for (var i = 0; i < this.itemCount_; i++) {
if (connections[i]) {
this.getInput('ADD' + i)
.connection.connect(connections[i]);
}
}
},
saveConnections: function (containerBlock) {
var itemBlock = containerBlock.getInputTargetBlock('STACK');
var i = 0;
while (itemBlock) {
var input = this.getInput('ADD' + i);
itemBlock.valueConnection_ = input && input.connection.targetConnection;
i++;
itemBlock = itemBlock.nextConnection &&
itemBlock.nextConnection.targetBlock();
}
},
updateShape_: function () {
// Delete everything.
if (this.getInput('EMPTY')) {
this.removeInput('EMPTY');
}
if (this.getInput('PARAMS_LABEL')) {
this.removeInput('PARAMS_LABEL');
}
var i = 0;
while (this.getInput('ADD' + i)) {
this.removeInput('ADD' + i);
i++;
}
// Rebuild block.
if (this.itemCount_ == 0) {
} else {
this.appendDummyInput('PARAMS_LABEL')
.appendField(Blockly.Msg.MIXLY_PARAMS + Blockly.Msg.OLED_STRING);
for (var i = 0; i < this.itemCount_; i++) {
var input = this.appendValueInput('ADD' + i);
}
}
}
};
export const llm_set_callback_container = {
init: function () {
this.setColour(AI_CLOUD_VOICE_HUE);
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_SETTING + Blockly.Msg.MIXLY_PARAMS);
this.appendStatementInput('STACK');
this.contextMenu = false;
}
};
export const llm_set_callback_item = {
init: function () {
this.setColour(AI_CLOUD_VOICE_HUE);
this.appendDummyInput()
.appendField(Blockly.Msg.LISTS_CREATE_WITH_ITEM_TITLE);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.contextMenu = false;
}
};