summaryrefslogtreecommitdiffstats
path: root/src/client/common.rs
diff options
context:
space:
mode:
authorsigoden <sigoden@gmail.com>2023-11-04 08:11:51 +0800
committerGitHub <noreply@github.com>2023-11-04 08:11:51 +0800
commitbba5028615a1c81ee513096eff3e5f2e71eed5a5 (patch)
tree04e686495d26ee946f8d008e43cfd367d06583cb /src/client/common.rs
parent4380b4f20bed88221a3dcf90d2f6e8b23b539794 (diff)
downloadaichat-bba5028615a1c81ee513096eff3e5f2e71eed5a5.tar.gz
feat: support PaLM (#209)
Diffstat (limited to 'src/client/common.rs')
-rw-r--r--src/client/common.rs20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/client/common.rs b/src/client/common.rs
index d43f1b6..7959b46 100644
--- a/src/client/common.rs
+++ b/src/client/common.rs
@@ -11,10 +11,10 @@ use crate::{
use anyhow::{Context, Result};
use async_trait::async_trait;
-use reqwest::{Client as ReqwestClient, ClientBuilder, Proxy};
+use reqwest::{Client as ReqwestClient, ClientBuilder, Proxy, RequestBuilder};
use serde::Deserialize;
use serde_json::{json, Value};
-use std::{env, time::Duration};
+use std::{env, future::Future, time::Duration};
use tokio::time::sleep;
#[macro_export]
@@ -298,6 +298,22 @@ pub fn create_config(list: &[PromptType], client: &str) -> Result<Value> {
Ok(clients)
}
+pub async fn send_message_as_streaming<F, Fut>(
+ builder: RequestBuilder,
+ handler: &mut ReplyHandler,
+ f: F,
+) -> Result<()>
+where
+ F: FnOnce(RequestBuilder) -> Fut,
+ Fut: Future<Output = Result<String>>,
+{
+ let text = f(builder).await?;
+ handler.text(&text)?;
+ handler.done()?;
+
+ Ok(())
+}
+
fn set_config_value(json: &mut Value, path: &str, kind: &PromptKind, value: &str) {
let segs: Vec<&str> = path.split('.').collect();
match segs.as_slice() {