2025-05-14 10:26:59 +08:00
|
|
|
use crate::{TestContext, collect_stream, load_asset_content};
|
2025-05-09 21:58:23 +08:00
|
|
|
use uuid::Uuid;
|
|
|
|
|
|
|
|
#[tokio::test]
|
|
|
|
async fn local_ollama_test_context_related_questions() {
|
|
|
|
let context = TestContext::new().unwrap();
|
|
|
|
let mut chat = context.create_chat(vec![]).await;
|
|
|
|
let stream = chat
|
|
|
|
.stream_question("hello world", Default::default())
|
|
|
|
.await
|
|
|
|
.unwrap();
|
|
|
|
let result = collect_stream(stream).await;
|
|
|
|
assert!(!result.answer.is_empty());
|
|
|
|
|
|
|
|
let doc_id = Uuid::new_v4().to_string();
|
|
|
|
let trip_docs = load_asset_content("japan_trip.md");
|
|
|
|
chat.set_rag_ids(vec![doc_id.clone()]);
|
|
|
|
chat
|
|
|
|
.embed_paragraphs(&doc_id, vec![trip_docs])
|
|
|
|
.await
|
|
|
|
.unwrap();
|
|
|
|
|
|
|
|
let stream = chat
|
|
|
|
.stream_question("Compare rust with js", Default::default())
|
|
|
|
.await
|
|
|
|
.unwrap();
|
|
|
|
let result = collect_stream(stream).await;
|
|
|
|
dbg!(&result.suggested_questions);
|
|
|
|
assert_eq!(result.suggested_questions.len(), 3);
|
|
|
|
assert!(!result.gen_related_question);
|
|
|
|
|
|
|
|
// all suggested questions' object id should equal to doc_id
|
|
|
|
for question in result.suggested_questions.iter() {
|
|
|
|
assert_eq!(question.object_id, doc_id);
|
|
|
|
}
|
|
|
|
|
|
|
|
let stream = chat
|
|
|
|
.stream_question(
|
|
|
|
result.suggested_questions[0].content.as_str(),
|
|
|
|
Default::default(),
|
|
|
|
)
|
|
|
|
.await
|
|
|
|
.unwrap();
|
|
|
|
let result = collect_stream(stream).await;
|
|
|
|
dbg!(&result);
|
|
|
|
assert!(result.suggested_questions.is_empty());
|
|
|
|
assert!(result.gen_related_question);
|
|
|
|
}
|