This commit is contained in:
yumoqing 2025-09-20 21:14:50 +08:00
parent b0b6d914e9
commit cc288dcb8f
2 changed files with 49 additions and 14 deletions

View File

@ -281,6 +281,10 @@ bricks.LlmIO = class extends bricks.VBox {
tip:'add new model', tip:'add new model',
css:'clickable' css:'clickable'
}); });
this.inputshower = new bricks.UserInputView({
input_fields:this.input_fields,
width: '100%'
});
this.input_fields.forEach(f => { this.input_fields.forEach(f => {
if (f.name == 'model') this.model_inputed = True; if (f.name == 'model') this.model_inputed = True;
}); });
@ -435,25 +439,12 @@ bricks.LlmIO = class extends bricks.VBox {
} }
async handle_input(event){ async handle_input(event){
var params = event.params; var params = event.params;
await this.show_input(params); this.inputshower.show_input(params)
for(var i=0;i<this.llmmodels.length;i++){ for(var i=0;i<this.llmmodels.length;i++){
var lm = this.llmmodels[i]; var lm = this.llmmodels[i];
schedule_once(lm.model_inputed.bind(lm, params), 0.01); schedule_once(lm.model_inputed.bind(lm, params), 0.01);
}; };
} }
async show_input(params){
var box = new bricks.HBox({width:'100%'});
var data = inputdata2dic(params);
console.log('data=', data, 'input_view=', this.input_view);
var w = await bricks.widgetBuild(this.input_view, this.o_w, data);
w.set_css(this.msg_css||'user_msg');
w.set_css('filler');
var img = new bricks.Svg({rate:2,url:this.user_icon||bricks_resource('imgs/chat-user.svg')});
// box.add_widget(new bricks.BlankIcon({rate:2, flexShrink:0}));
box.add_widget(w);
box.add_widget(img);
this.o_w.add_widget(box);
}
} }
bricks.Factory.register('LlmIO', bricks.LlmIO); bricks.Factory.register('LlmIO', bricks.LlmIO);

View File

@ -10,6 +10,50 @@ video视频url或base64视频
image如果是个数组则多个图片url image如果是个数组则多个图片url
*/ */
bricks.UserInputView = class extends bricks.VBox {
constructor(opts){
super(opts);
this.v_w = null;
this.a_v = null;
this.images = [];
}
show_input(data){
var mdtext = '';
this.input_fields.forEach(f =>{
if (data[f.name]){
if (f.name.startsWith('video')){
this.v_w = new bricks.VideoPlayer({
url:data[f.name],
autoplay:true
width: '100%'
});
} else if (f.name.startsWith('audio'){
this.a_w = new bricks.AudioPlayer({
url:data[f.name],
autoplay:true
width: '100%'
});
} else if (f.name.startsWidth('image'){
mdtext += '\n![' + f.label || f.name + ']('+ data[f.name] + ')\n';
} else {
mdtext += '\n# ' + f.label || f.name + '\n```' + data[f.name] + '\n```\n';
}
}
});
this.clear_widgets();
var w = new bricks.MdWidget({
width: '100%',
mdtext:mdtext
});
this.add_widget(w);
if (this.v_w){
this.add_widget(this.v_w);
}
if (this.a_w){
this.add_widget(this.a_w);
}
}
}
bricks.LlmOut = class extends bricks.VBox { bricks.LlmOut = class extends bricks.VBox {
constructor(opts){ constructor(opts){
super(opts); super(opts);