|
|
@ -94,7 +94,6 @@ async fn send_message_streaming(
|
|
|
|
handler: &mut ReplyHandler,
|
|
|
|
handler: &mut ReplyHandler,
|
|
|
|
) -> Result<()> {
|
|
|
|
) -> Result<()> {
|
|
|
|
let mut es = builder.eventsource()?;
|
|
|
|
let mut es = builder.eventsource()?;
|
|
|
|
let mut offset = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
while let Some(event) = es.next().await {
|
|
|
|
while let Some(event) = es.next().await {
|
|
|
|
match event {
|
|
|
|
match event {
|
|
|
@ -102,10 +101,7 @@ async fn send_message_streaming(
|
|
|
|
Ok(Event::Message(message)) => {
|
|
|
|
Ok(Event::Message(message)) => {
|
|
|
|
let data: Value = serde_json::from_str(&message.data)?;
|
|
|
|
let data: Value = serde_json::from_str(&message.data)?;
|
|
|
|
if let Some(text) = data["output"]["text"].as_str() {
|
|
|
|
if let Some(text) = data["output"]["text"].as_str() {
|
|
|
|
|
|
|
|
|
|
|
|
let text = &text[offset..];
|
|
|
|
|
|
|
|
handler.text(text)?;
|
|
|
|
handler.text(text)?;
|
|
|
|
offset += text.len();
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
Err(err) => {
|
|
|
|
Err(err) => {
|
|
|
@ -143,11 +139,15 @@ fn build_body(data: SendData, model: String) -> Value {
|
|
|
|
let SendData {
|
|
|
|
let SendData {
|
|
|
|
messages,
|
|
|
|
messages,
|
|
|
|
temperature,
|
|
|
|
temperature,
|
|
|
|
stream: _,
|
|
|
|
stream,
|
|
|
|
} = data;
|
|
|
|
} = data;
|
|
|
|
|
|
|
|
|
|
|
|
let mut parameters = json!({});
|
|
|
|
let mut parameters = json!({});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if stream {
|
|
|
|
|
|
|
|
parameters["incremental_output"] = true.into();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if let Some(v) = temperature {
|
|
|
|
if let Some(v) = temperature {
|
|
|
|
parameters["temperature"] = v.into();
|
|
|
|
parameters["temperature"] = v.into();
|
|
|
|
}
|
|
|
|
}
|
|
|
|