62 lines
2.2 KiB
Rust
62 lines
2.2 KiB
Rust
//! Smoke test that makes a REAL call to Z.ai / 智谱.
|
|
//!
|
|
//! Ignored by default — it costs tokens and needs network + an API key. To run:
|
|
//!
|
|
//! ```bash
|
|
//! ZAI_API_KEY=<your-key> cargo test -p focus-providers --test zai_smoke -- --ignored --nocapture
|
|
//! ```
|
|
//!
|
|
//! It prompts the model in Chinese and asserts a non-empty response is streamed.
|
|
|
|
#![cfg(test)]
|
|
|
|
use focus_core::model::*;
|
|
use focus_core::provider::{ProviderRequest, StreamEvent};
|
|
use focus_core::StreamProvider;
|
|
use focus_json::JsonValue;
|
|
use focus_providers::{ProviderConfig, ZaiProvider};
|
|
|
|
#[tokio::test]
|
|
#[ignore]
|
|
async fn zai_domestic_streams_chinese_response() {
|
|
let api_key = std::env::var("ZAI_API_KEY").expect("set ZAI_API_KEY to run this test");
|
|
let model = std::env::var("ZAI_MODEL").unwrap_or_else(|_| "glm-4.6".to_string());
|
|
|
|
let provider = ZaiProvider::domestic(&api_key, &model);
|
|
let req = ProviderRequest {
|
|
model: model.clone(),
|
|
system_prompt: "你是一个简洁的助手。".into(),
|
|
messages: vec![Message::user_text("用一句话介绍你自己。")],
|
|
tools: JsonValue::arr(),
|
|
max_tokens: Some(256),
|
|
temperature: Some(0.7),
|
|
};
|
|
|
|
let mut iter = provider.stream(&req).expect("stream failed");
|
|
let mut text = String::new();
|
|
let mut got_done = false;
|
|
while let Some(ev) = iter.next_event() {
|
|
match ev {
|
|
StreamEvent::TextDelta { delta, .. } => text.push_str(&delta),
|
|
StreamEvent::Done { .. } => got_done = true,
|
|
StreamEvent::Error { error } => {
|
|
panic!("provider error: {:?}", error.error_message);
|
|
}
|
|
_ => {}
|
|
}
|
|
}
|
|
assert!(got_done, "stream did not emit Done");
|
|
assert!(!text.is_empty(), "no text streamed back");
|
|
eprintln!("Z.ai response: {}", text);
|
|
}
|
|
|
|
#[test]
|
|
#[ignore]
|
|
fn zai_config_builder_uses_domestic_host() {
|
|
// No network — just verifies the builder wires the right host.
|
|
let api_key = std::env::var("ZAI_API_KEY").unwrap_or_default();
|
|
let p = ZaiProvider::domestic(&api_key, "glm-4.6");
|
|
assert_eq!(p.inner().config_ref().base_url, "open.bigmodel.cn");
|
|
let _cfg = ProviderConfig::zai_cn("k", "m");
|
|
}
|