diff options
| author | sigoden <sigoden@gmail.com> | 2023-11-04 08:11:51 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-11-04 08:11:51 +0800 |
| commit | bba5028615a1c81ee513096eff3e5f2e71eed5a5 (patch) | |
| tree | 04e686495d26ee946f8d008e43cfd367d06583cb /src/client/common.rs | |
| parent | 4380b4f20bed88221a3dcf90d2f6e8b23b539794 (diff) | |
| download | aichat-bba5028615a1c81ee513096eff3e5f2e71eed5a5.tar.gz | |
feat: support PaLM (#209)
Diffstat (limited to 'src/client/common.rs')
| -rw-r--r-- | src/client/common.rs | 20 |
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() { |
