mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2025-07-30 20:40:53 +00:00

* feat: ai settings page * chore: intergate client api * chore: replace open ai calls * chore: disable gen image from ai * chore: clippy * chore: remove learn about ai * chore: fix wanrings * chore: fix restart button title * chore: remove await * chore: remove loading indicator --------- Co-authored-by: nathan <nathan@appflowy.io> Co-authored-by: Lucas.Xu <lucas.xu@appflowy.io>
86 lines
2.1 KiB
Rust
86 lines
2.1 KiB
Rust
use bytes::Bytes;
|
|
pub use client_api::entity::ai_dto::{
|
|
CompletionType, RelatedQuestion, RepeatedRelatedQuestion, StringOrMessage,
|
|
};
|
|
pub use client_api::entity::{
|
|
ChatAuthorType, ChatMessage, ChatMessageType, MessageCursor, QAChatMessage, RepeatedChatMessage,
|
|
};
|
|
use client_api::error::AppResponseError;
|
|
use flowy_error::FlowyError;
|
|
use futures::stream::BoxStream;
|
|
use lib_infra::async_trait::async_trait;
|
|
use lib_infra::future::FutureResult;
|
|
|
|
pub type ChatMessageStream = BoxStream<'static, Result<ChatMessage, AppResponseError>>;
|
|
pub type StreamAnswer = BoxStream<'static, Result<Bytes, AppResponseError>>;
|
|
pub type StreamComplete = BoxStream<'static, Result<Bytes, AppResponseError>>;
|
|
#[async_trait]
|
|
pub trait ChatCloudService: Send + Sync + 'static {
|
|
fn create_chat(
|
|
&self,
|
|
uid: &i64,
|
|
workspace_id: &str,
|
|
chat_id: &str,
|
|
) -> FutureResult<(), FlowyError>;
|
|
|
|
async fn send_chat_message(
|
|
&self,
|
|
workspace_id: &str,
|
|
chat_id: &str,
|
|
message: &str,
|
|
message_type: ChatMessageType,
|
|
) -> Result<ChatMessageStream, FlowyError>;
|
|
|
|
fn send_question(
|
|
&self,
|
|
workspace_id: &str,
|
|
chat_id: &str,
|
|
message: &str,
|
|
message_type: ChatMessageType,
|
|
) -> FutureResult<ChatMessage, FlowyError>;
|
|
|
|
fn save_answer(
|
|
&self,
|
|
workspace_id: &str,
|
|
chat_id: &str,
|
|
message: &str,
|
|
question_id: i64,
|
|
) -> FutureResult<ChatMessage, FlowyError>;
|
|
|
|
async fn stream_answer(
|
|
&self,
|
|
workspace_id: &str,
|
|
chat_id: &str,
|
|
message_id: i64,
|
|
) -> Result<StreamAnswer, FlowyError>;
|
|
|
|
fn get_chat_messages(
|
|
&self,
|
|
workspace_id: &str,
|
|
chat_id: &str,
|
|
offset: MessageCursor,
|
|
limit: u64,
|
|
) -> FutureResult<RepeatedChatMessage, FlowyError>;
|
|
|
|
fn get_related_message(
|
|
&self,
|
|
workspace_id: &str,
|
|
chat_id: &str,
|
|
message_id: i64,
|
|
) -> FutureResult<RepeatedRelatedQuestion, FlowyError>;
|
|
|
|
fn generate_answer(
|
|
&self,
|
|
workspace_id: &str,
|
|
chat_id: &str,
|
|
question_message_id: i64,
|
|
) -> FutureResult<ChatMessage, FlowyError>;
|
|
|
|
async fn stream_complete(
|
|
&self,
|
|
workspace_id: &str,
|
|
text: &str,
|
|
complete_type: CompletionType,
|
|
) -> Result<StreamComplete, FlowyError>;
|
|
}
|