feat: AgentIO abort previous request on new input
This commit is contained in:
parent
f9322531d0
commit
5fb7796df1
@ -343,6 +343,11 @@ bricks.AgentIO = class extends bricks.VBox {
|
|||||||
console.log('chunk end');
|
console.log('chunk end');
|
||||||
}
|
}
|
||||||
async user_inputed(e){
|
async user_inputed(e){
|
||||||
|
// 中止上一次请求
|
||||||
|
if (this._current_hr) {
|
||||||
|
this._current_hr.abort();
|
||||||
|
this._current_hr = null;
|
||||||
|
}
|
||||||
this.show_input(e.params);
|
this.show_input(e.params);
|
||||||
var params = e.params;
|
var params = e.params;
|
||||||
params.llmid = this.agent_using_llmid;
|
params.llmid = this.agent_using_llmid;
|
||||||
@ -361,12 +366,15 @@ bricks.AgentIO = class extends bricks.VBox {
|
|||||||
});
|
});
|
||||||
this.msg_box.add_widget(mout);
|
this.msg_box.add_widget(mout);
|
||||||
var hr = new bricks.HttpResponseStream();
|
var hr = new bricks.HttpResponseStream();
|
||||||
|
this._current_hr = hr;
|
||||||
var resp = await hr.post(this.opts.url, {params:params});
|
var resp = await hr.post(this.opts.url, {params:params});
|
||||||
if (! resp) {
|
if (! resp) {
|
||||||
mout.run_stopped();
|
mout.run_stopped();
|
||||||
|
this._current_hr = null;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
await hr.handle_chunk(resp, this.chunk_response.bind(this, mout));
|
await hr.handle_chunk(resp, this.chunk_response.bind(this, mout));
|
||||||
|
this._current_hr = null;
|
||||||
this.chunk_ended();
|
this.chunk_ended();
|
||||||
}
|
}
|
||||||
async show_input(params){
|
async show_input(params){
|
||||||
|
|||||||
@ -247,6 +247,34 @@ bricks.HttpResponse = class extends bricks.HttpText {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bricks.HttpResponseStream = class extends bricks.HttpResponse {
|
bricks.HttpResponseStream = class extends bricks.HttpResponse {
|
||||||
|
constructor(){
|
||||||
|
super();
|
||||||
|
this._controller = new AbortController();
|
||||||
|
}
|
||||||
|
abort(){
|
||||||
|
this._controller.abort();
|
||||||
|
}
|
||||||
|
async bricks_fetch(url, {method='GET', headers=null, params=null, signal=null}={}){
|
||||||
|
url = this.url_parse(url);
|
||||||
|
var data = this.add_own_params(params);
|
||||||
|
var header = this.add_own_headers(headers);
|
||||||
|
var _params = {
|
||||||
|
method:method,
|
||||||
|
signal: signal || this._controller.signal
|
||||||
|
}
|
||||||
|
if (data instanceof FormData){
|
||||||
|
method = 'POST';
|
||||||
|
_params.body = data;
|
||||||
|
} else {
|
||||||
|
if (method == 'GET' || method == 'HEAD') {
|
||||||
|
let pstr = url_params(data);
|
||||||
|
url = url + '?' + pstr;
|
||||||
|
} else {
|
||||||
|
_params.body = JSON.stringify(data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return await fetch(url, _params);
|
||||||
|
}
|
||||||
async handle_chunk(resp, handler){
|
async handle_chunk(resp, handler){
|
||||||
const reader = resp.body.getReader();
|
const reader = resp.body.getReader();
|
||||||
const decoder = new TextDecoder('utf-8');
|
const decoder = new TextDecoder('utf-8');
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user