chore: rename function and add docs (#663)
This commit is contained in:
parent
a6539dd963
commit
9884d93aa2
|
|
@ -11,6 +11,7 @@ use shared_entity::dto::ai_dto::RepeatedRelatedQuestion;
|
||||||
use shared_entity::response::{AppResponse, AppResponseError};
|
use shared_entity::response::{AppResponse, AppResponseError};
|
||||||
|
|
||||||
impl Client {
|
impl Client {
|
||||||
|
/// Create a new chat
|
||||||
pub async fn create_chat(
|
pub async fn create_chat(
|
||||||
&self,
|
&self,
|
||||||
workspace_id: &str,
|
workspace_id: &str,
|
||||||
|
|
@ -26,6 +27,8 @@ impl Client {
|
||||||
log_request_id(&resp);
|
log_request_id(&resp);
|
||||||
AppResponse::<()>::from_response(resp).await?.into_error()
|
AppResponse::<()>::from_response(resp).await?.into_error()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Delete a chat for given chat_id
|
||||||
pub async fn delete_chat(
|
pub async fn delete_chat(
|
||||||
&self,
|
&self,
|
||||||
workspace_id: &str,
|
workspace_id: &str,
|
||||||
|
|
@ -41,27 +44,8 @@ impl Client {
|
||||||
AppResponse::<()>::from_response(resp).await?.into_error()
|
AppResponse::<()>::from_response(resp).await?.into_error()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn create_chat_qa_message(
|
/// Save a question message to a chat
|
||||||
&self,
|
pub async fn save_question(
|
||||||
workspace_id: &str,
|
|
||||||
chat_id: &str,
|
|
||||||
params: CreateChatMessageParams,
|
|
||||||
) -> Result<impl Stream<Item = Result<ChatMessage, AppResponseError>>, AppResponseError> {
|
|
||||||
let url = format!(
|
|
||||||
"{}/api/chat/{workspace_id}/{chat_id}/message",
|
|
||||||
self.base_url
|
|
||||||
);
|
|
||||||
let resp = self
|
|
||||||
.http_client_with_auth(Method::POST, &url)
|
|
||||||
.await?
|
|
||||||
.json(¶ms)
|
|
||||||
.send()
|
|
||||||
.await?;
|
|
||||||
log_request_id(&resp);
|
|
||||||
AppResponse::<ChatMessage>::json_response_stream(resp).await
|
|
||||||
}
|
|
||||||
|
|
||||||
pub async fn create_question(
|
|
||||||
&self,
|
&self,
|
||||||
workspace_id: &str,
|
workspace_id: &str,
|
||||||
chat_id: &str,
|
chat_id: &str,
|
||||||
|
|
@ -83,7 +67,8 @@ impl Client {
|
||||||
.into_data()
|
.into_data()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn create_answer(
|
/// save an answer message to a chat
|
||||||
|
pub async fn save_answer(
|
||||||
&self,
|
&self,
|
||||||
workspace_id: &str,
|
workspace_id: &str,
|
||||||
chat_id: &str,
|
chat_id: &str,
|
||||||
|
|
@ -105,7 +90,8 @@ impl Client {
|
||||||
.into_data()
|
.into_data()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn stream_answer(
|
/// Ask AI with a question for given question's message_id
|
||||||
|
pub async fn ask_question(
|
||||||
&self,
|
&self,
|
||||||
workspace_id: &str,
|
workspace_id: &str,
|
||||||
chat_id: &str,
|
chat_id: &str,
|
||||||
|
|
@ -124,8 +110,9 @@ impl Client {
|
||||||
AppResponse::<()>::answer_response_stream(resp).await
|
AppResponse::<()>::answer_response_stream(resp).await
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns the answer to a question message.
|
/// Generate an answer for given question's message_id. The same as ask_question but return ChatMessage
|
||||||
pub async fn get_answer(
|
/// instead of stream of Bytes
|
||||||
|
pub async fn generate_answer(
|
||||||
&self,
|
&self,
|
||||||
workspace_id: &str,
|
workspace_id: &str,
|
||||||
chat_id: &str,
|
chat_id: &str,
|
||||||
|
|
@ -146,6 +133,8 @@ impl Client {
|
||||||
.into_data()
|
.into_data()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Update chat message content. It will override the content of the message.
|
||||||
|
/// A message can be a question or an answer
|
||||||
pub async fn update_chat_message(
|
pub async fn update_chat_message(
|
||||||
&self,
|
&self,
|
||||||
workspace_id: &str,
|
workspace_id: &str,
|
||||||
|
|
@ -166,6 +155,7 @@ impl Client {
|
||||||
AppResponse::<()>::from_response(resp).await?.into_error()
|
AppResponse::<()>::from_response(resp).await?.into_error()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Get related question for a chat message. The message_d should be the question's id
|
||||||
pub async fn get_chat_related_question(
|
pub async fn get_chat_related_question(
|
||||||
&self,
|
&self,
|
||||||
workspace_id: &str,
|
workspace_id: &str,
|
||||||
|
|
@ -187,6 +177,7 @@ impl Client {
|
||||||
.into_data()
|
.into_data()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Return list of chat messages for a chat
|
||||||
pub async fn get_chat_messages(
|
pub async fn get_chat_messages(
|
||||||
&self,
|
&self,
|
||||||
workspace_id: &str,
|
workspace_id: &str,
|
||||||
|
|
@ -219,4 +210,25 @@ impl Client {
|
||||||
.await?
|
.await?
|
||||||
.into_data()
|
.into_data()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// It's no longer used in the frontend application since 0.6.0 version.
|
||||||
|
pub async fn create_question_answer(
|
||||||
|
&self,
|
||||||
|
workspace_id: &str,
|
||||||
|
chat_id: &str,
|
||||||
|
params: CreateChatMessageParams,
|
||||||
|
) -> Result<impl Stream<Item = Result<ChatMessage, AppResponseError>>, AppResponseError> {
|
||||||
|
let url = format!(
|
||||||
|
"{}/api/chat/{workspace_id}/{chat_id}/message",
|
||||||
|
self.base_url
|
||||||
|
);
|
||||||
|
let resp = self
|
||||||
|
.http_client_with_auth(Method::POST, &url)
|
||||||
|
.await?
|
||||||
|
.json(¶ms)
|
||||||
|
.send()
|
||||||
|
.await?;
|
||||||
|
log_request_id(&resp);
|
||||||
|
AppResponse::<ChatMessage>::json_response_stream(resp).await
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,7 @@ pub fn chat_scope() -> Scope {
|
||||||
)
|
)
|
||||||
.service(
|
.service(
|
||||||
web::resource("/{chat_id}/message")
|
web::resource("/{chat_id}/message")
|
||||||
|
// create_chat_message_handler is deprecated. No long used after frontend application v0.6.2
|
||||||
.route(web::post().to(create_chat_message_handler))
|
.route(web::post().to(create_chat_message_handler))
|
||||||
.route(web::put().to(update_chat_message_handler)),
|
.route(web::put().to(update_chat_message_handler)),
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ async fn create_chat_and_create_messages_test() {
|
||||||
let params = CreateChatMessageParams::new_system(format!("hello world {}", i));
|
let params = CreateChatMessageParams::new_system(format!("hello world {}", i));
|
||||||
let message = test_client
|
let message = test_client
|
||||||
.api_client
|
.api_client
|
||||||
.create_chat_qa_message(&workspace_id, &chat_id, params)
|
.create_question_answer(&workspace_id, &chat_id, params)
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.next()
|
.next()
|
||||||
|
|
@ -111,7 +111,7 @@ async fn chat_qa_test() {
|
||||||
let params = CreateChatMessageParams::new_user("where is singapore?");
|
let params = CreateChatMessageParams::new_user("where is singapore?");
|
||||||
let stream = test_client
|
let stream = test_client
|
||||||
.api_client
|
.api_client
|
||||||
.create_chat_qa_message(&workspace_id, &chat_id, params)
|
.create_question_answer(&workspace_id, &chat_id, params)
|
||||||
.await
|
.await
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
|
|
@ -146,7 +146,7 @@ async fn generate_chat_message_answer_test() {
|
||||||
let params = CreateChatMessageParams::new_user("where is singapore?");
|
let params = CreateChatMessageParams::new_user("where is singapore?");
|
||||||
let stream = test_client
|
let stream = test_client
|
||||||
.api_client
|
.api_client
|
||||||
.create_chat_qa_message(&workspace_id, &chat_id, params)
|
.create_question_answer(&workspace_id, &chat_id, params)
|
||||||
.await
|
.await
|
||||||
.unwrap();
|
.unwrap();
|
||||||
let messages: Vec<ChatMessage> = stream.map(|message| message.unwrap()).collect().await;
|
let messages: Vec<ChatMessage> = stream.map(|message| message.unwrap()).collect().await;
|
||||||
|
|
@ -154,7 +154,7 @@ async fn generate_chat_message_answer_test() {
|
||||||
|
|
||||||
let answer = test_client
|
let answer = test_client
|
||||||
.api_client
|
.api_client
|
||||||
.get_answer(&workspace_id, &chat_id, messages[0].message_id)
|
.generate_answer(&workspace_id, &chat_id, messages[0].message_id)
|
||||||
.await
|
.await
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
|
|
@ -188,13 +188,13 @@ async fn generate_stream_answer_test() {
|
||||||
let params = CreateChatMessageParams::new_user("Teach me how to write a article?");
|
let params = CreateChatMessageParams::new_user("Teach me how to write a article?");
|
||||||
let question = test_client
|
let question = test_client
|
||||||
.api_client
|
.api_client
|
||||||
.create_question(&workspace_id, &chat_id, params)
|
.save_question(&workspace_id, &chat_id, params)
|
||||||
.await
|
.await
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
let mut answer_stream = test_client
|
let mut answer_stream = test_client
|
||||||
.api_client
|
.api_client
|
||||||
.stream_answer(&workspace_id, &chat_id, question.message_id)
|
.ask_question(&workspace_id, &chat_id, question.message_id)
|
||||||
.await
|
.await
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue