mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-08-01 09:30:01 +08:00
feat(server): update model list (#15375)
This commit is contained in:
@@ -67,7 +67,7 @@ fn built_in_transcript_action_final_result_is_schema_checked() {
|
||||
"openQuestions": [],
|
||||
"blockers": []
|
||||
},
|
||||
"providerMeta": { "provider": "gemini", "model": "gemini-2.5-flash" }
|
||||
"providerMeta": { "provider": "gemini", "model": "gemini-3.5-flash-lite" }
|
||||
}
|
||||
})),
|
||||
)
|
||||
@@ -97,7 +97,7 @@ fn built_in_transcript_action_rejects_malformed_summary() {
|
||||
"transcribe": {
|
||||
"normalizedTranscript": "00:00:01 A: Hello",
|
||||
"summaryJson": { "title": "Sync" },
|
||||
"providerMeta": { "provider": "gemini", "model": "gemini-2.5-flash" }
|
||||
"providerMeta": { "provider": "gemini", "model": "gemini-3.5-flash-lite" }
|
||||
}
|
||||
})),
|
||||
)
|
||||
|
||||
@@ -2,33 +2,20 @@
|
||||
{
|
||||
"name": "Transcript audio",
|
||||
"action": "Transcript audio",
|
||||
"model": "gemini-2.5-flash",
|
||||
"optionalModels": [
|
||||
"gemini-2.5-flash",
|
||||
"gemini-2.5-pro",
|
||||
"gemini-3.1-pro-preview"
|
||||
],
|
||||
"model": "gemini-3.5-flash-lite",
|
||||
"optionalModels": ["gemini-3.5-flash-lite", "gemini-3.6-flash"],
|
||||
"config": {
|
||||
"requireContent": false,
|
||||
"requireAttachment": true,
|
||||
"maxRetries": 1
|
||||
},
|
||||
"messages": [
|
||||
{
|
||||
"role": "system",
|
||||
"template": "\nConvert a multi-speaker audio recording into a structured JSON format by transcribing the speech and identifying individual speakers.\n\n1. Analyze the audio to detect the presence of multiple speakers using distinct microphone inputs.\n2. Transcribe the audio content for each speaker and note the time intervals of speech.\n\n# Examples\n\n**Example Input:**\n- A multi-speaker audio file\n\n**Example Output:**\n\n[{\"a\":\"A\",\"s\":30,\"e\":45,\"t\":\"Hello, everyone.\"},{\"a\":\"B\",\"s\":46,\"e\":70,\"t\":\"Hi, thank you for joining the meeting today.\"}]\n\n# Notes\n\n- Ensure the accurate differentiation of speakers even if multiple speakers overlap slightly or switch rapidly.\n- Maintain a consistent speaker labeling system throughout the transcription.\n- If the provided audio or data does not contain valid talk, you should return an empty JSON array.\n"
|
||||
}
|
||||
]
|
||||
"messages": []
|
||||
},
|
||||
{
|
||||
"name": "Transcript audio structured",
|
||||
"action": "Transcript audio structured",
|
||||
"model": "gemini-2.5-flash",
|
||||
"optionalModels": [
|
||||
"gemini-2.5-flash",
|
||||
"gemini-2.5-pro",
|
||||
"gemini-3.1-pro-preview"
|
||||
],
|
||||
"model": "gemini-3.5-flash-lite",
|
||||
"optionalModels": ["gemini-3.5-flash-lite", "gemini-3.6-flash"],
|
||||
"config": {
|
||||
"requireContent": false,
|
||||
"requireAttachment": true,
|
||||
@@ -48,7 +35,7 @@
|
||||
{
|
||||
"name": "Generate a caption",
|
||||
"action": "Generate a caption",
|
||||
"model": "gemini-2.5-flash",
|
||||
"model": "gemini-3.5-flash-lite",
|
||||
"config": {
|
||||
"requireContent": false,
|
||||
"requireAttachment": true
|
||||
@@ -63,7 +50,7 @@
|
||||
{
|
||||
"name": "Conversation Summary",
|
||||
"action": "Conversation Summary",
|
||||
"model": "gpt-5-mini",
|
||||
"model": "gpt-5.6-luna",
|
||||
"config": {
|
||||
"requireContent": false
|
||||
},
|
||||
@@ -81,7 +68,7 @@
|
||||
{
|
||||
"name": "Summary",
|
||||
"action": "Summary",
|
||||
"model": "gpt-5-mini",
|
||||
"model": "gpt-5.6-luna",
|
||||
"messages": [
|
||||
{
|
||||
"role": "system",
|
||||
@@ -96,7 +83,7 @@
|
||||
{
|
||||
"name": "Summary as title",
|
||||
"action": "Summary as title",
|
||||
"model": "gpt-5-mini",
|
||||
"model": "gpt-5.6-luna",
|
||||
"messages": [
|
||||
{
|
||||
"role": "system",
|
||||
@@ -111,7 +98,7 @@
|
||||
{
|
||||
"name": "Summary the webpage",
|
||||
"action": "Summary the webpage",
|
||||
"model": "gpt-5-mini",
|
||||
"model": "gpt-5.6-luna",
|
||||
"messages": [
|
||||
{
|
||||
"role": "user",
|
||||
@@ -122,7 +109,7 @@
|
||||
{
|
||||
"name": "Explain this",
|
||||
"action": "Explain this",
|
||||
"model": "gpt-5-mini",
|
||||
"model": "gpt-5.6-luna",
|
||||
"builtins": ["language"],
|
||||
"messages": [
|
||||
{
|
||||
@@ -138,7 +125,7 @@
|
||||
{
|
||||
"name": "Explain this image",
|
||||
"action": "Explain this image",
|
||||
"model": "gemini-2.5-flash",
|
||||
"model": "gemini-3.5-flash-lite",
|
||||
"config": {
|
||||
"requireContent": false,
|
||||
"requireAttachment": true
|
||||
@@ -157,7 +144,7 @@
|
||||
{
|
||||
"name": "Explain this code",
|
||||
"action": "Explain this code",
|
||||
"model": "gemini-2.5-flash",
|
||||
"model": "gemini-3.5-flash-lite",
|
||||
"messages": [
|
||||
{
|
||||
"role": "system",
|
||||
@@ -172,7 +159,7 @@
|
||||
{
|
||||
"name": "Translate to",
|
||||
"action": "Translate",
|
||||
"model": "gemini-2.5-flash",
|
||||
"model": "gemini-3.5-flash-lite",
|
||||
"params": {
|
||||
"language": {
|
||||
"default": "English",
|
||||
@@ -205,7 +192,7 @@
|
||||
{
|
||||
"name": "Summarize the meeting structured",
|
||||
"action": "Summarize the meeting structured",
|
||||
"model": "gpt-5-mini",
|
||||
"model": "gpt-5.6-luna",
|
||||
"messages": [
|
||||
{
|
||||
"role": "system",
|
||||
@@ -220,7 +207,7 @@
|
||||
{
|
||||
"name": "Summarize the meeting",
|
||||
"action": "Summarize the meeting",
|
||||
"model": "gpt-5-mini",
|
||||
"model": "gpt-5.6-luna",
|
||||
"messages": [
|
||||
{
|
||||
"role": "system",
|
||||
@@ -235,7 +222,7 @@
|
||||
{
|
||||
"name": "Find action for summary",
|
||||
"action": "Find action for summary",
|
||||
"model": "gpt-5-mini",
|
||||
"model": "gpt-5.6-luna",
|
||||
"messages": [
|
||||
{
|
||||
"role": "system",
|
||||
@@ -250,7 +237,7 @@
|
||||
{
|
||||
"name": "Write an article about this",
|
||||
"action": "Write an article about this",
|
||||
"model": "gemini-2.5-pro",
|
||||
"model": "gpt-5.6-luna",
|
||||
"messages": [
|
||||
{
|
||||
"role": "system",
|
||||
@@ -265,7 +252,7 @@
|
||||
{
|
||||
"name": "Write a twitter about this",
|
||||
"action": "Write a twitter about this",
|
||||
"model": "gemini-2.5-flash",
|
||||
"model": "gemini-3.5-flash-lite",
|
||||
"messages": [
|
||||
{
|
||||
"role": "system",
|
||||
@@ -280,7 +267,7 @@
|
||||
{
|
||||
"name": "Write a poem about this",
|
||||
"action": "Write a poem about this",
|
||||
"model": "gemini-2.5-flash",
|
||||
"model": "gemini-3.5-flash-lite",
|
||||
"messages": [
|
||||
{
|
||||
"role": "system",
|
||||
@@ -295,7 +282,7 @@
|
||||
{
|
||||
"name": "Write a blog post about this",
|
||||
"action": "Write a blog post about this",
|
||||
"model": "gemini-2.5-pro",
|
||||
"model": "gpt-5.6-luna",
|
||||
"messages": [
|
||||
{
|
||||
"role": "system",
|
||||
@@ -310,7 +297,7 @@
|
||||
{
|
||||
"name": "Write outline",
|
||||
"action": "Write outline",
|
||||
"model": "gemini-2.5-flash",
|
||||
"model": "gemini-3.5-flash-lite",
|
||||
"messages": [
|
||||
{
|
||||
"role": "system",
|
||||
@@ -325,7 +312,7 @@
|
||||
{
|
||||
"name": "Change tone to",
|
||||
"action": "Change tone",
|
||||
"model": "gemini-2.5-flash",
|
||||
"model": "gemini-3.5-flash-lite",
|
||||
"params": {
|
||||
"tone": {
|
||||
"default": "professional",
|
||||
@@ -346,7 +333,7 @@
|
||||
{
|
||||
"name": "Brainstorm ideas about this",
|
||||
"action": "Brainstorm ideas about this",
|
||||
"model": "gemini-2.5-flash",
|
||||
"model": "gemini-3.5-flash-lite",
|
||||
"messages": [
|
||||
{
|
||||
"role": "system",
|
||||
@@ -361,7 +348,7 @@
|
||||
{
|
||||
"name": "Brainstorm mindmap",
|
||||
"action": "Brainstorm mindmap",
|
||||
"model": "gpt-5-mini",
|
||||
"model": "gpt-5.6-luna",
|
||||
"messages": [
|
||||
{
|
||||
"role": "system",
|
||||
@@ -376,7 +363,7 @@
|
||||
{
|
||||
"name": "Expand mind map",
|
||||
"action": "Expand mind map",
|
||||
"model": "gpt-5-mini",
|
||||
"model": "gpt-5.6-luna",
|
||||
"messages": [
|
||||
{
|
||||
"role": "system",
|
||||
@@ -395,7 +382,7 @@
|
||||
{
|
||||
"name": "Improve writing for it",
|
||||
"action": "Improve writing for it",
|
||||
"model": "gemini-2.5-flash",
|
||||
"model": "gemini-3.5-flash-lite",
|
||||
"messages": [
|
||||
{
|
||||
"role": "system",
|
||||
@@ -410,7 +397,7 @@
|
||||
{
|
||||
"name": "Improve grammar for it",
|
||||
"action": "Improve grammar for it",
|
||||
"model": "gpt-5-mini",
|
||||
"model": "gpt-5.6-luna",
|
||||
"messages": [
|
||||
{
|
||||
"role": "system",
|
||||
@@ -425,7 +412,7 @@
|
||||
{
|
||||
"name": "Fix spelling for it",
|
||||
"action": "Fix spelling for it",
|
||||
"model": "gemini-2.5-flash",
|
||||
"model": "gemini-3.5-flash-lite",
|
||||
"messages": [
|
||||
{
|
||||
"role": "system",
|
||||
@@ -440,7 +427,7 @@
|
||||
{
|
||||
"name": "Find action items from it",
|
||||
"action": "Find action items from it",
|
||||
"model": "gpt-5-mini",
|
||||
"model": "gpt-5.6-luna",
|
||||
"messages": [
|
||||
{
|
||||
"role": "system",
|
||||
@@ -455,7 +442,7 @@
|
||||
{
|
||||
"name": "Check code error",
|
||||
"action": "Check code error",
|
||||
"model": "gpt-5-mini",
|
||||
"model": "gpt-5.6-luna",
|
||||
"messages": [
|
||||
{
|
||||
"role": "system",
|
||||
@@ -470,7 +457,7 @@
|
||||
{
|
||||
"name": "Create a presentation",
|
||||
"action": "Create a presentation",
|
||||
"model": "gpt-5-mini",
|
||||
"model": "gpt-5.6-luna",
|
||||
"messages": [
|
||||
{
|
||||
"role": "system",
|
||||
@@ -485,7 +472,7 @@
|
||||
{
|
||||
"name": "Create headings",
|
||||
"action": "Create headings",
|
||||
"model": "gemini-2.5-flash",
|
||||
"model": "gemini-3.5-flash-lite",
|
||||
"messages": [
|
||||
{
|
||||
"role": "system",
|
||||
@@ -500,7 +487,7 @@
|
||||
{
|
||||
"name": "Make it real",
|
||||
"action": "Make it real",
|
||||
"model": "claude-sonnet-4-5@20250929",
|
||||
"model": "claude-sonnet-4-6",
|
||||
"messages": [
|
||||
{
|
||||
"role": "system",
|
||||
@@ -515,7 +502,7 @@
|
||||
{
|
||||
"name": "Make it real with text",
|
||||
"action": "Make it real with text",
|
||||
"model": "claude-sonnet-4-5@20250929",
|
||||
"model": "claude-sonnet-4-6",
|
||||
"messages": [
|
||||
{
|
||||
"role": "system",
|
||||
@@ -530,7 +517,7 @@
|
||||
{
|
||||
"name": "Make it longer",
|
||||
"action": "Make it longer",
|
||||
"model": "gemini-2.5-flash",
|
||||
"model": "gemini-3.5-flash-lite",
|
||||
"messages": [
|
||||
{
|
||||
"role": "system",
|
||||
@@ -545,7 +532,7 @@
|
||||
{
|
||||
"name": "Make it shorter",
|
||||
"action": "Make it shorter",
|
||||
"model": "gemini-2.5-flash",
|
||||
"model": "gemini-3.5-flash-lite",
|
||||
"messages": [
|
||||
{
|
||||
"role": "system",
|
||||
@@ -560,7 +547,7 @@
|
||||
{
|
||||
"name": "Continue writing",
|
||||
"action": "Continue writing",
|
||||
"model": "gemini-2.5-flash",
|
||||
"model": "gemini-3.5-flash-lite",
|
||||
"messages": [
|
||||
{
|
||||
"role": "system",
|
||||
@@ -575,7 +562,7 @@
|
||||
{
|
||||
"name": "Section Edit",
|
||||
"action": "Section Edit",
|
||||
"model": "claude-sonnet-4@20250514",
|
||||
"model": "claude-sonnet-4-6",
|
||||
"messages": [
|
||||
{
|
||||
"role": "system",
|
||||
@@ -688,7 +675,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Code Artifact",
|
||||
"model": "claude-sonnet-4-5@20250929",
|
||||
"model": "claude-sonnet-4-6",
|
||||
"messages": [
|
||||
{
|
||||
"role": "system",
|
||||
@@ -702,11 +689,11 @@
|
||||
},
|
||||
{
|
||||
"name": "Chat With AFFiNE AI",
|
||||
"model": "gemini-2.5-flash",
|
||||
"model": "gpt-5.6-luna",
|
||||
"optionalModels": [
|
||||
"gemini-2.5-flash",
|
||||
"gemini-2.5-pro",
|
||||
"gemini-3.5-flash",
|
||||
"gpt-5.6-luna",
|
||||
"gpt-5.6-terra",
|
||||
"gemini-3.6-flash",
|
||||
"claude-sonnet-4-6"
|
||||
],
|
||||
"config": {
|
||||
@@ -722,7 +709,7 @@
|
||||
"codeArtifact",
|
||||
"blobRead"
|
||||
],
|
||||
"proModels": ["gemini-2.5-pro", "gemini-3.5-flash", "claude-sonnet-4-6"]
|
||||
"proModels": ["gpt-5.6-terra", "gemini-3.6-flash", "claude-sonnet-4-6"]
|
||||
},
|
||||
"builtins": [
|
||||
"date",
|
||||
@@ -747,7 +734,7 @@
|
||||
{
|
||||
"name": "mindmap.generate",
|
||||
"action": "mindmap.generate",
|
||||
"model": "gpt-5-mini",
|
||||
"model": "gpt-5.6-luna",
|
||||
"config": {
|
||||
"frequencyPenalty": 0.5,
|
||||
"presencePenalty": 0.5,
|
||||
@@ -772,7 +759,7 @@
|
||||
{
|
||||
"name": "slides.outline",
|
||||
"action": "slides.outline",
|
||||
"model": "gpt-5-mini",
|
||||
"model": "gpt-5.6-luna",
|
||||
"messages": [
|
||||
{
|
||||
"role": "system",
|
||||
@@ -877,7 +864,7 @@
|
||||
{
|
||||
"name": "workflow:presentation:step1",
|
||||
"action": "workflow:presentation:step1",
|
||||
"model": "gpt-5-mini",
|
||||
"model": "gpt-5.6-luna",
|
||||
"config": {
|
||||
"temperature": 0.7
|
||||
},
|
||||
@@ -895,7 +882,7 @@
|
||||
{
|
||||
"name": "workflow:presentation:step2",
|
||||
"action": "workflow:presentation:step2",
|
||||
"model": "gpt-5-mini",
|
||||
"model": "gpt-5.6-luna",
|
||||
"messages": [
|
||||
{
|
||||
"role": "system",
|
||||
@@ -914,7 +901,7 @@
|
||||
{
|
||||
"name": "workflow:presentation:step4",
|
||||
"action": "workflow:presentation:step4",
|
||||
"model": "gpt-5-mini",
|
||||
"model": "gpt-5.6-luna",
|
||||
"messages": [
|
||||
{
|
||||
"role": "system",
|
||||
@@ -939,7 +926,7 @@
|
||||
{
|
||||
"name": "workflow:brainstorm:step1",
|
||||
"action": "workflow:brainstorm:step1",
|
||||
"model": "gpt-5-mini",
|
||||
"model": "gpt-5.6-luna",
|
||||
"config": {
|
||||
"temperature": 0.7
|
||||
},
|
||||
@@ -957,7 +944,7 @@
|
||||
{
|
||||
"name": "workflow:brainstorm:step2",
|
||||
"action": "workflow:brainstorm:step2",
|
||||
"model": "gpt-5-mini",
|
||||
"model": "gpt-5.6-luna",
|
||||
"config": {
|
||||
"frequencyPenalty": 0.5,
|
||||
"presencePenalty": 0.5,
|
||||
|
||||
@@ -58,7 +58,7 @@ mod tests {
|
||||
use crate::llm::core::contracts::{ModelConditionsContract, ModelRegistryMatchRequest, ModelRegistryResolveRequest};
|
||||
|
||||
#[test]
|
||||
fn should_resolve_backend_scoped_alias() {
|
||||
fn should_resolve_current_chat_models() {
|
||||
let response = llm_resolve_model_registry_variant(ModelRegistryResolveRequest {
|
||||
backend_kind: Some("anthropic_vertex".to_string()),
|
||||
model_id: "claude-sonnet-4.6".to_string(),
|
||||
@@ -67,6 +67,26 @@ mod tests {
|
||||
|
||||
assert_eq!(response.matched_by.as_deref(), Some("canonical"));
|
||||
assert_eq!(response.variant.unwrap().raw_model_id, "claude-sonnet-4-6");
|
||||
|
||||
for model_id in ["gpt-5.6-luna", "gpt-5.6-terra"] {
|
||||
let response = llm_resolve_model_registry_variant(ModelRegistryResolveRequest {
|
||||
backend_kind: Some("openai_responses".to_string()),
|
||||
model_id: model_id.to_string(),
|
||||
})
|
||||
.unwrap();
|
||||
|
||||
assert_eq!(response.matched_by.as_deref(), Some("raw_model_id"));
|
||||
assert_eq!(response.variant.unwrap().raw_model_id, model_id);
|
||||
}
|
||||
|
||||
let response = llm_resolve_model_registry_variant(ModelRegistryResolveRequest {
|
||||
backend_kind: Some("gemini_api".to_string()),
|
||||
model_id: "gemini-3.6-flash".to_string(),
|
||||
})
|
||||
.unwrap();
|
||||
|
||||
assert_eq!(response.matched_by.as_deref(), Some("raw_model_id"));
|
||||
assert_eq!(response.variant.unwrap().raw_model_id, "gemini-3.6-flash");
|
||||
}
|
||||
|
||||
#[test]
|
||||
@@ -181,7 +201,7 @@ mod tests {
|
||||
.unwrap();
|
||||
let variant = response.variant.unwrap();
|
||||
|
||||
assert_eq!(variant.raw_model_id, "kimi-k2.7-code");
|
||||
assert_eq!(variant.raw_model_id, "kimi-k3");
|
||||
assert_eq!(variant.backend_kind, "opencode_zen");
|
||||
}
|
||||
|
||||
@@ -201,7 +221,7 @@ mod tests {
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn should_keep_same_raw_id_as_two_backend_variants() {
|
||||
fn should_keep_legacy_model_raw_id_across_backend_variants() {
|
||||
let api_variant = llm_resolve_model_registry_variant(ModelRegistryResolveRequest {
|
||||
backend_kind: Some("gemini_api".to_string()),
|
||||
model_id: "gemini-2.5-flash".to_string(),
|
||||
@@ -281,7 +301,7 @@ mod tests {
|
||||
attachment_kinds: None,
|
||||
attachment_source_kinds: None,
|
||||
has_remote_attachments: None,
|
||||
model_id: Some("gemini-2.5-flash".to_string()),
|
||||
model_id: Some("gemini-3.6-flash".to_string()),
|
||||
output_type: Some("image".to_string()),
|
||||
},
|
||||
})
|
||||
|
||||
@@ -237,7 +237,7 @@ mod tests {
|
||||
fn should_materialize_structured_request_with_response_contract() {
|
||||
let response = llm_build_canonical_structured_request(
|
||||
serde_json::from_value::<CanonicalStructuredRequestContract>(json!({
|
||||
"model": "gemini-2.5-flash",
|
||||
"model": "gemini-3.6-flash",
|
||||
"messages": [
|
||||
{ "role": "user", "content": "hello" }
|
||||
],
|
||||
@@ -253,7 +253,7 @@ mod tests {
|
||||
assert_eq!(
|
||||
response,
|
||||
json!({
|
||||
"model": "gemini-2.5-flash",
|
||||
"model": "gemini-3.6-flash",
|
||||
"messages": [
|
||||
{
|
||||
"role": "user",
|
||||
|
||||
@@ -335,7 +335,7 @@ mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn should_expand_partials_and_collect_prompt_params() {
|
||||
fn should_load_prompt_catalog() {
|
||||
let prompt = built_in_prompt("Translate to").expect("translate prompt");
|
||||
let user_message = prompt
|
||||
.messages
|
||||
@@ -353,5 +353,28 @@ mod tests {
|
||||
.map(|values| values.len()),
|
||||
Some(11)
|
||||
);
|
||||
|
||||
let chat = built_in_prompt("Chat With AFFiNE AI").expect("chat prompt");
|
||||
assert_eq!(chat.model, "gpt-5.6-luna");
|
||||
assert_eq!(
|
||||
chat
|
||||
.optional_models
|
||||
.as_ref()
|
||||
.map(|models| models.iter().map(String::as_str).collect::<Vec<_>>()),
|
||||
Some(vec![
|
||||
"gpt-5.6-luna",
|
||||
"gpt-5.6-terra",
|
||||
"gemini-3.6-flash",
|
||||
"claude-sonnet-4-6"
|
||||
])
|
||||
);
|
||||
assert_eq!(
|
||||
chat.config.as_ref().and_then(|config| config.get("proModels")),
|
||||
Some(&serde_json::json!([
|
||||
"gpt-5.6-terra",
|
||||
"gemini-3.6-flash",
|
||||
"claude-sonnet-4-6"
|
||||
]))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user