smart_prompt 0.4.4 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +10 -10
  3. data/README.cn.md +307 -64
  4. data/README.md +311 -64
  5. data/Rakefile +10 -1
  6. data/config/anthropic_config.yml +151 -0
  7. data/config/image_generation_config.yml +22 -0
  8. data/config/multimodal_config.yml +85 -0
  9. data/config/sensenova_config.yml +63 -0
  10. data/config/zhipu_config.yml +73 -0
  11. data/examples/anthropic_basic_chat.rb +143 -0
  12. data/examples/anthropic_example.rb +232 -0
  13. data/examples/anthropic_multimodal.rb +212 -0
  14. data/examples/anthropic_streaming.rb +312 -0
  15. data/examples/anthropic_tool_calling.rb +393 -0
  16. data/examples/automatic_cleanup_example.rb +109 -0
  17. data/examples/history_management_examples.rb +522 -0
  18. data/examples/image_generation_example.rb +130 -0
  19. data/examples/monitoring_example.rb +121 -0
  20. data/examples/multimodal_example.rb +63 -0
  21. data/examples/relevance_based_strategy_example.rb +87 -0
  22. data/examples/sensenova_example.rb +129 -0
  23. data/examples/stt_example.rb +287 -0
  24. data/examples/tts_example.rb +244 -0
  25. data/examples/video_generation_example.rb +189 -0
  26. data/examples/zhipu_example.rb +151 -0
  27. data/lib/smart_prompt/anthropic_adapter.rb +363 -281
  28. data/lib/smart_prompt/compression_engine.rb +201 -0
  29. data/lib/smart_prompt/context_strategy.rb +22 -0
  30. data/lib/smart_prompt/conversation.rb +81 -191
  31. data/lib/smart_prompt/engine.rb +36 -19
  32. data/lib/smart_prompt/history_manager.rb +596 -0
  33. data/lib/smart_prompt/hybrid_strategy.rb +222 -0
  34. data/lib/smart_prompt/image_generation_adapter.rb +297 -0
  35. data/lib/smart_prompt/lru_cache.rb +133 -0
  36. data/lib/smart_prompt/message.rb +57 -0
  37. data/lib/smart_prompt/multimodal_adapter.rb +277 -0
  38. data/lib/smart_prompt/openai_adapter.rb +1 -25
  39. data/lib/smart_prompt/persistence_layer.rb +197 -0
  40. data/lib/smart_prompt/relevance_based_strategy.rb +221 -0
  41. data/lib/smart_prompt/sensenova_adapter.rb +410 -0
  42. data/lib/smart_prompt/session.rb +140 -0
  43. data/lib/smart_prompt/sliding_window_strategy.rb +100 -0
  44. data/lib/smart_prompt/stt_adapter.rb +381 -0
  45. data/lib/smart_prompt/summary_based_strategy.rb +152 -0
  46. data/lib/smart_prompt/token_counter.rb +74 -0
  47. data/lib/smart_prompt/tts_adapter.rb +403 -0
  48. data/lib/smart_prompt/version.rb +1 -1
  49. data/lib/smart_prompt/video_generation_adapter.rb +330 -0
  50. data/lib/smart_prompt/worker.rb +25 -3
  51. data/lib/smart_prompt/zhipu_adapter.rb +616 -0
  52. data/lib/smart_prompt.rb +22 -2
  53. data/workers/history_management_examples.rb +407 -0
  54. data/workers/image_generation_workers.rb +119 -0
  55. data/workers/multimodal_workers.rb +110 -0
  56. data/workers/sensenova_workers.rb +62 -0
  57. data/workers/stt_workers.rb +195 -0
  58. data/workers/tts_workers.rb +388 -0
  59. data/workers/video_generation_workers.rb +264 -0
  60. data/workers/zhipu_workers.rb +113 -0
  61. metadata +84 -8
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a1b5288acfef3c366b16a0e08dc0b4f43a7f8613f73879f92420a3cf60ce9332
4
- data.tar.gz: c2fd82bf35e96c6784492dfe2dd9ee30dbf02e56b5cce41ee8d9895f4b050b13
3
+ metadata.gz: 6417bfd0f16178f4e5b2d26b9c14f3ce8a22e8d9ab77f3cacf1845fa6531d6d0
4
+ data.tar.gz: 9eae765158a312e1605aad80917d59180109bb0a8c2603a2e2b7b95dd7284b00
5
5
  SHA512:
6
- metadata.gz: ccd75b4af683bb4585ca46a24d60833fac4344e214f5fef6730e9b55e86e80a35951d39e6cbff8ad1f364623e62aade8bce065ade1cd8c6ddea7e1b1faea2126
7
- data.tar.gz: 68cba98948160fc872d2b5661661fe16ae76f5b43025fa96ea0c546563e01be5a0930d76fd13ec327017e07b23c7b739953794a3b385185c448888862374190c
6
+ metadata.gz: 4109ce9c8131961870d2c9b83d3d2ed534ebdf2ba42b34674516b61058034bab9af6c53079354d39a154759ca02bb39751eeb2c055465f2dfb7db8f2a3a12682
7
+ data.tar.gz: e12c080c4d95a7196e91497b02ef493a11b45e3da7ba6cdb5e342c00c40abb686fa1aac3e6c0db9e3905f5f18adab0395559188fe0fae5837c1128dad70f236b
data/CHANGELOG.md CHANGED
@@ -5,17 +5,17 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
- ## [0.4.1] - 2026-04-22
9
- ### Fixed
10
- - Re-release package with `lib/smart_prompt/anthropic_adapter.rb`, which is required by the gem entrypoint.
11
-
12
- ## [0.4.0] - 2026-04-22
8
+ ## [0.4.0] - 2026-06-21
13
9
  ### Added
14
- - Anthropic adapter support.
10
+ - **SenseNova (商汤日日新) support** — unified `SenseNovaAdapter` covering chat (商量), multimodal vision, Cupido embeddings, and 秒画 text-to-image, with SSE streaming and reasoning-field handling
11
+ - **智谱 AI (BigModel / GLM) support** — unified `ZhipuAIAdapter` covering all REST categories: chat (GLM-4), vision (GLM-4V), embeddings (embedding-3), text-to-image (CogView), text-to-video (CogVideoX async), TTS (GLM-TTS), ASR (GLM-ASR), and rerank
12
+ - Media adapters: multimodal, image generation, video generation, TTS, STT
13
+ - Intelligent conversation history management (sliding-window, relevance-based, summary-based, hybrid strategies) with session isolation, compression, persistence, and LRU caching
14
+ - Token counter, message/session models, and persistence layer
15
+ - Example configs, workers, and self-contained examples for every provider
15
16
 
16
- ## [0.3.6] - 2026-04-08
17
- ### Changed
18
- - Bumped `ruby-openai` dependency from `8.1.0` to `8.3.0`
17
+ ### Fixed
18
+ - Expose `engine` on `WorkerContext` so workers can reach a configured adapter directly (fixes the `engine.llms[...]` pattern used by media workers)
19
19
 
20
20
  ## [0.3.2] - 2025-05-18
21
21
  ### Added
@@ -46,4 +46,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
46
46
  - Initial gem release
47
47
  - Llama.cpp adapter
48
48
  - Basic configuration parameters
49
- - Environment bug fixes
49
+ - Environment bug fixes
data/README.cn.md CHANGED
@@ -11,13 +11,24 @@ SmartPrompt 是一个强大的 Ruby gem,提供了优雅的领域特定语言
11
11
 
12
12
  ### 多 LLM 支持
13
13
  - **OpenAI API 兼容**: 完全支持 OpenAI GPT 模型和兼容的 API
14
- - **Llama.cpp 集成**: 直接集成本地 Llama.cpp 服务器
14
+ - **Anthropic Claude**: 原生支持 Claude 模型及多模态能力
15
+ - **商汤 SenseNova(日日新)**: 单一适配器覆盖商量文本对话、图文多模态、Cupido 向量、秒画文生图四类 API,详见 `examples/sensenova_example.rb`
16
+ - **智谱 AI(BigModel / GLM)**: 单一适配器覆盖全部模型类别——文本对话(GLM-4)、图文多模态(GLM-4V)、向量(embedding-3)、文生图(CogView)、文生视频(CogVideoX)、语音合成(GLM-TTS)、语音识别(GLM-ASR),详见 `examples/zhipu_example.rb`
17
+ - **Llama.cpp 集成**: 直接集成本地 Llama.cpp 服务器
15
18
  - **可扩展适配器**: 易于扩展的适配器系统,支持新的 LLM 提供商
16
19
  - **统一接口**: 无论底层 LLM 提供商如何,都使用相同的 API
17
20
 
21
+ ### 多模态 AI 能力
22
+ - **视觉模型**: 支持图像理解和分析
23
+ - **图像生成**: 使用扩散模型从文本提示生成图像
24
+ - **视频生成**: 从文本或图像提示生成视频
25
+ - **文本转语音**: 将文本转换为自然语音
26
+ - **语音转文本**: 支持多语言的音频转文本转录
27
+
18
28
  ### 灵活架构
19
29
  - **基于 Worker 的任务**: 为特定 AI 任务定义可重用的 Worker
20
30
  - **模板系统**: 基于 ERB 的提示词模板,支持参数注入
31
+ - **智能历史管理**: 会话隔离、自动压缩和多种上下文策略
21
32
  - **对话管理**: 内置对话历史和上下文管理
22
33
  - **流式支持**: 实时响应流,提供更好的用户体验
23
34
 
@@ -26,6 +37,8 @@ SmartPrompt 是一个强大的 Ruby gem,提供了优雅的领域特定语言
26
37
  - **重试逻辑**: 强大的错误处理机制,支持可配置的重试
27
38
  - **嵌入向量**: 文本嵌入生成,用于语义搜索和 RAG 应用
28
39
  - **配置驱动**: 基于 YAML 的配置,便于部署管理
40
+ - **批量处理**: 高效处理多个文件和任务
41
+ - **语言检测**: 从文本和音频自动识别语言
29
42
 
30
43
  ### 生产就绪
31
44
  - **全面日志记录**: 详细的日志记录,用于调试和监控
@@ -61,6 +74,7 @@ $ gem install smart_prompt
61
74
  # 适配器定义
62
75
  adapters:
63
76
  openai: OpenAIAdapter
77
+ anthropic: AnthropicAdapter
64
78
  # LLM 配置
65
79
  llms:
66
80
  SiliconFlow:
@@ -68,40 +82,25 @@ llms:
68
82
  url: https://api.siliconflow.cn/v1/
69
83
  api_key: ENV["APIKey"]
70
84
  default_model: Qwen/Qwen2.5-7B-Instruct
71
- local:
85
+ claude:
86
+ adapter: anthropic
87
+ api_key: ENV["ANTHROPIC_API_KEY"]
88
+ model: claude-3-5-sonnet-20241022
89
+ temperature: 0.7
90
+ max_tokens: 4096
91
+ llamacpp:
72
92
  adapter: openai
73
93
  url: http://localhost:8080/
74
94
  ollama:
75
95
  adapter: openai
76
96
  url: http://localhost:11434/
77
97
  default_model: deepseek-r1
78
- gemma4_local:
79
- adapter: openai
80
- url: http://localhost:8000/v1
81
- api_key: dummy
82
- default_model: gemma-4-12B-it
83
- temperature: 1.0
84
- top_p: 0.95
85
- top_k: 64
86
98
  deepseek:
87
99
  adapter: openai
88
100
  url: https://api.deepseek.com
89
101
  api_key: ENV["DSKEY"]
90
102
  default_model: deepseek-reasoner
91
103
 
92
- # 模型别名配置
93
- models:
94
- local/qwen3.5:
95
- use: local
96
- model: qwen3.5
97
- deepseekv3.2:
98
- use: SiliconFlow
99
- model: Pro/deepseek-ai/DeepSeek-V3.2
100
- gemma4/12b:
101
- use: gemma4_local
102
- model: gemma-4-12B-it
103
- max_tokens: 1024
104
-
105
104
  # 默认设置
106
105
  default_llm: SiliconFlow
107
106
  template_path: "./templates"
@@ -129,8 +128,9 @@ logger_file: "./logs/smart_prompt.log"
129
128
  **workers/chat_worker.rb**:
130
129
  ```ruby
131
130
  SmartPrompt.define_worker :chat_assistant do
132
- # 使用配置好的模型别名
133
- use_model "deepseekv3.2"
131
+ # 使用特定的 LLM
132
+ use "SiliconFlow"
133
+ model "deepseek-ai/DeepSeek-V3"
134
134
  # 设置系统消息
135
135
  sys_msg("你是一个有用的 AI 助手。", params)
136
136
  # 使用模板和参数
@@ -182,26 +182,6 @@ engine.call_worker_by_stream(:streaming_chat, {
182
182
  end
183
183
  ```
184
184
 
185
- ### Gemma 4 12B 多模态
186
-
187
- Gemma 4 12B 可以通过 LiteRT-LM、LM Studio、Ollama、llama.cpp 等 OpenAI 兼容本地服务接入。SmartPrompt 会把图片放在文本前、音频放在文本后,以匹配 Gemma 4 的多模态最佳实践。
188
-
189
- ```ruby
190
- SmartPrompt.define_worker :gemma_multimodal_assistant do
191
- use_model "gemma4/12b"
192
- thinking params.fetch(:thinking, true)
193
- sys_msg("你是一个严谨的本地多模态助手。", params)
194
-
195
- image(params[:image], token_budget: params[:token_budget] || 280) if params[:image]
196
- video(params[:video], fps: 1, max_seconds: 60) if params[:video]
197
- audio(params[:audio]) if params[:audio]
198
- prompt(params[:message])
199
-
200
- request_options(response_format: { type: "json_object" }) if params[:json]
201
- send_msg
202
- end
203
- ```
204
-
205
185
  ### 工具集成
206
186
 
207
187
  ```ruby
@@ -238,7 +218,10 @@ end
238
218
 
239
219
  ### 对话历史
240
220
 
221
+ SmartPrompt 提供智能对话历史管理,支持会话隔离、自动压缩和多种上下文策略。
222
+
241
223
  ```ruby
224
+ # 基本用法,自动管理历史
242
225
  SmartPrompt.define_worker :conversational_chat do
243
226
  use "deepseek"
244
227
  model "deepseek-chat"
@@ -246,8 +229,38 @@ SmartPrompt.define_worker :conversational_chat do
246
229
  prompt(params[:message], with_history: true)
247
230
  send_msg
248
231
  end
232
+
233
+ # 高级用法,显式会话管理
234
+ SmartPrompt.define_worker :session_chat do
235
+ use "deepseek"
236
+ model "deepseek-chat"
237
+
238
+ # 使用 session_id 进行隔离的对话
239
+ session_id = params[:session_id] || "default"
240
+
241
+ # 配置会话行为
242
+ session_config = {
243
+ max_messages: 100,
244
+ max_tokens: 4000,
245
+ context_strategy: :sliding_window # 或 :relevance_based, :summary_based, :hybrid
246
+ }
247
+
248
+ sys_msg("你是一个有用的助手。", params)
249
+ prompt(params[:message], with_history: true)
250
+ params.merge(session_id: session_id, session_config: session_config)
251
+ send_msg
252
+ end
249
253
  ```
250
254
 
255
+ **历史管理功能:**
256
+ - **会话隔离**: 每个对话都有独立的历史记录
257
+ - **上下文策略**: 可选择滑动窗口、基于相关性、基于摘要或混合策略
258
+ - **自动压缩**: 在保留上下文的同时减少 token 使用量
259
+ - **持久化**: 跨重启保存和恢复对话
260
+ - **性能优化**: LRU 缓存和异步 I/O 以获得最佳性能
261
+
262
+ 详见 [历史管理指南](HISTORY_MANAGEMENT_GUIDE.md)。
263
+
251
264
  ### 嵌入向量生成
252
265
 
253
266
  ```ruby
@@ -263,6 +276,75 @@ embeddings = engine.call_worker(:text_embedder, {
263
276
  text: "将此文本转换为嵌入向量",
264
277
  dimensions: 1024
265
278
  })
279
+
280
+ ### 多模态 AI 示例
281
+
282
+ #### 图像生成
283
+ ```ruby
284
+ # 从文本提示生成图像
285
+ result = engine.call_worker(:image_generator, {
286
+ prompt: "山间美丽的日落",
287
+ size: "1024x1024",
288
+ quality: "standard",
289
+ save_to_file: true,
290
+ output_dir: "./generated_images"
291
+ })
292
+
293
+ puts "图像已生成: #{result[:image_file][:file_path]}"
294
+ ```
295
+
296
+ #### 视频生成
297
+ ```ruby
298
+ # 从文本提示生成视频
299
+ result = engine.call_worker(:video_generator, {
300
+ prompt: "一只猫在玩毛线球",
301
+ duration: 5,
302
+ resolution: "720p",
303
+ save_to_file: true,
304
+ output_dir: "./generated_videos"
305
+ })
306
+
307
+ puts "视频生成已开始: #{result[:video_id]}"
308
+ puts "检查状态: engine.call_worker(:video_status, {video_id: '#{result[:video_id]}'})"
309
+ ```
310
+
311
+ #### 文本转语音
312
+ ```ruby
313
+ # 将文本转换为语音
314
+ result = engine.call_worker(:tts_synthesizer, {
315
+ text: "欢迎使用 SmartPrompt,您的 AI 助手",
316
+ voice: "alloy",
317
+ speed: 1.0,
318
+ save_to_file: true,
319
+ output_dir: "./generated_audio"
320
+ })
321
+
322
+ puts "音频文件已创建: #{result[:audio_file][:file_path]}"
323
+ ```
324
+
325
+ #### 语音转文本
326
+ ```ruby
327
+ # 将音频转录为文本
328
+ result = engine.call_worker(:stt_transcriber, {
329
+ audio_file: "./audio.wav",
330
+ language: "zh",
331
+ response_format: "json"
332
+ })
333
+
334
+ puts "转录文本: #{result[:transcription][:text]}"
335
+ puts "语言: #{result[:transcription][:language]}"
336
+ ```
337
+
338
+ #### 视觉分析
339
+ ```ruby
340
+ # 使用视觉模型分析图像
341
+ result = engine.call_worker(:vision_analyzer, {
342
+ image_file: "./image.jpg",
343
+ prompt: "描述你在这张图片中看到了什么"
344
+ })
345
+
346
+ puts "分析结果: #{result[:response]}"
347
+ ```
266
348
  ```
267
349
 
268
350
  ## 🏗️ 架构概述
@@ -282,6 +364,13 @@ SmartPrompt 采用模块化架构:
282
364
  │Worker │ │对话 │ │ 模板 │
283
365
  │ │ │管理 │ │ 系统 │
284
366
  └───────┘ └─────┘ └────────┘
367
+
368
+ ┌────────┴────────┐
369
+ │ │
370
+ ┌───▼────────┐ ┌─────▼──────┐
371
+ │ 历史管理 │ │ 持久化层 │
372
+ │ 器 │ │ │
373
+ └────────────┘ └────────────┘
285
374
  ```
286
375
 
287
376
  ### 核心组件
@@ -289,8 +378,10 @@ SmartPrompt 采用模块化架构:
289
378
  - **引擎(Engine)**: 中央编排器,管理配置、适配器和 Worker
290
379
  - **Worker**: 包含嵌入业务逻辑的可重用任务定义
291
380
  - **对话(Conversation)**: 上下文和消息历史管理
292
- - **适配器(Adapters)**: LLM 提供商集成(OpenAI、Llama.cpp 等)
381
+ - **历史管理器**: 智能对话历史,支持会话隔离和上下文策略
382
+ - **适配器(Adapters)**: LLM 提供商集成(OpenAI、Anthropic、Llama.cpp 等)
293
383
  - **模板(Templates)**: 基于 ERB 的提示词模板系统
384
+ - **持久化层(Persistence Layer)**: 跨重启保存和恢复对话历史
294
385
 
295
386
  ## 🔧 配置参考
296
387
 
@@ -298,32 +389,177 @@ SmartPrompt 采用模块化架构:
298
389
 
299
390
  ```yaml
300
391
  adapters:
301
- openai: "OpenAIAdapter" # 用于 OpenAI API
392
+ openai: "OpenAIAdapter" # 用于 OpenAI API
393
+ anthropic: "AnthropicAdapter" # 用于 Anthropic Claude API
394
+ sensenova: "SenseNovaAdapter" # 用于商汤 SenseNova(对话/视觉/向量/文生图)
395
+ zhipu: "ZhipuAIAdapter" # 用于智谱 BigModel/GLM(对话/视觉/向量/图/视频/语音)
396
+ multimodal: "MultimodalAdapter" # 用于视觉模型
397
+ image_generation: "ImageGenerationAdapter" # 用于图像生成
398
+ video_generation: "VideoGenerationAdapter" # 用于视频生成
399
+ tts: "TTSAdapter" # 用于文本转语音
400
+ stt: "STTAdapter" # 用于语音转文本
302
401
  ```
303
402
 
304
403
  ### LLM 配置
305
404
 
306
405
  ```yaml
307
406
  llms:
308
- model_name:
309
- adapter: "adapter_name"
310
- api_key: "your_api_key" # 可以使用 ENV['KEY_NAME']
311
- url: "https://api.url"
312
- model: "model_identifier"
407
+ # 文本模型
408
+ gpt:
409
+ adapter: "openai"
410
+ api_key: ENV["OPENAI_API_KEY"]
411
+ model: "gpt-4"
313
412
  temperature: 0.7
314
- # 其他提供商特定选项
315
- ```
316
413
 
317
- ### 模型别名配置
414
+ # Anthropic Claude 模型
415
+ claude:
416
+ adapter: "anthropic"
417
+ api_key: ENV["ANTHROPIC_API_KEY"]
418
+ model: "claude-3-5-sonnet-20241022"
419
+ temperature: 0.7
420
+ max_tokens: 4096
318
421
 
319
- ```yaml
320
- models:
321
- model_alias:
322
- use: "llm_name"
323
- model: "model_identifier"
324
- ```
422
+ claude_opus:
423
+ adapter: "anthropic"
424
+ api_key: ENV["ANTHROPIC_API_KEY"]
425
+ model: "claude-3-opus-20240229"
426
+ temperature: 0.7
427
+ max_tokens: 4096
325
428
 
326
- 在 worker 中,`use_model "model_alias"` 等价于调用 `use "llm_name"` 和 `model "model_identifier"`。
429
+ claude_haiku:
430
+ adapter: "anthropic"
431
+ api_key: ENV["ANTHROPIC_API_KEY"]
432
+ model: "claude-3-5-haiku-20241022"
433
+ temperature: 0.7
434
+ max_tokens: 4096
435
+
436
+ # 自定义 Anthropic 端点(用于代理或自定义部署)
437
+ claude_custom:
438
+ adapter: "anthropic"
439
+ api_key: ENV["ANTHROPIC_API_KEY"]
440
+ url: "https://your-custom-endpoint.com"
441
+ model: "claude-3-5-sonnet-20241022"
442
+ temperature: 0.7
443
+ max_tokens: 4096
444
+
445
+ # 商汤 SenseNova —— 单一适配器覆盖四类模型,只需切换 model。
446
+ # 免费模型走 token.sensenova.cn/v1;付费模型(SenseChat-5、SenseNova-V6-*、Cupido)
447
+ # 走 api.sensenova.cn/compatible-mode/v2(key 无权限时返回 403)。
448
+ sensechat: # 商量 文本对话(免费档)
449
+ adapter: "sensenova"
450
+ url: "https://token.sensenova.cn/v1"
451
+ api_key: ENV["SENSENOVA_API_KEY"]
452
+ model: "sensenova-6.7-flash-lite"
453
+ temperature: 0.7
454
+ # 可选 SenseNova 采样参数(会透传到 /chat/completions):
455
+ # reasoning_effort: "medium"
456
+ # max_completion_tokens: 4096
457
+ # 付费:url https://api.sensenova.cn/compatible-mode/v2,model SenseChat-5
458
+
459
+ sensevision: # 商量 图文多模态(flash-lite 原生多模态)
460
+ adapter: "sensenova"
461
+ url: "https://token.sensenova.cn/v1"
462
+ api_key: ENV["SENSENOVA_API_KEY"]
463
+ model: "sensenova-6.7-flash-lite"
464
+ # 付费:url https://api.sensenova.cn/compatible-mode/v2,model SenseNova-V6-Pro
465
+
466
+ senseembedding: # Cupido 向量模型(付费;原生端点)
467
+ adapter: "sensenova"
468
+ url: "https://api.sensenova.cn/compatible-mode/v2"
469
+ embeddings_url: "https://api.sensenova.cn/v1/llm/embeddings"
470
+ api_key: ENV["SENSENOVA_API_KEY"]
471
+ model: "Cupido"
472
+
473
+ senseimage: # 秒画 文生图(sensenova-u1-fast,token.sensenova.cn base)
474
+ adapter: "sensenova"
475
+ url: "https://token.sensenova.cn/v1"
476
+ image_url: "https://token.sensenova.cn/v1/images/generations"
477
+ api_key: ENV["SENSENOVA_API_KEY"]
478
+ model: "sensenova-u1-fast"
479
+ # sensenova-u1-fast 只接受特定尺寸(默认 2048x2048),见 sensenova_adapter.rb 的 VALID_IMAGE_SIZES
480
+
481
+ # 智谱 AI(BigModel/GLM)—— 单一适配器覆盖全部类别,只需切换 model。
482
+ # base https://open.bigmodel.cn/api/paas/v4 ,Bearer 鉴权。默认用免费模型。
483
+ glm: # 文本对话(免费 glm-4-flash;付费 glm-4-plus/glm-5.2)
484
+ adapter: "zhipu"
485
+ url: "https://open.bigmodel.cn/api/paas/v4"
486
+ api_key: ENV["ZHIPUAI_API_KEY"]
487
+ model: "glm-4-flash"
488
+ temperature: 0.7
489
+ # CodeGeeX-4:设 `coding: true` 并 model: codegeex-4(走 coding base)
490
+
491
+ glm_vision: # 图文多模态(免费 glm-4v-flash;付费 glm-4v-plus)
492
+ adapter: "zhipu"
493
+ url: "https://open.bigmodel.cn/api/paas/v4"
494
+ api_key: ENV["ZHIPUAI_API_KEY"]
495
+ model: "glm-4v-flash"
496
+
497
+ embedding: # 向量模型(embedding-3;可自定义维度 256/512/1024/2048)
498
+ adapter: "zhipu"
499
+ url: "https://open.bigmodel.cn/api/paas/v4"
500
+ api_key: ENV["ZHIPUAI_API_KEY"]
501
+ model: "embedding-3"
502
+ dimensions: 1024
503
+
504
+ cogview: # 文生图(免费 cogview-3-flash;付费 cogview-4/glm-image)
505
+ adapter: "zhipu"
506
+ url: "https://open.bigmodel.cn/api/paas/v4"
507
+ api_key: ENV["ZHIPUAI_API_KEY"]
508
+ model: "cogview-3-flash"
509
+
510
+ cogvideo: # 文生视频(异步 提交->轮询->下载;免费 cogvideox-flash)
511
+ adapter: "zhipu"
512
+ url: "https://open.bigmodel.cn/api/paas/v4"
513
+ api_key: ENV["ZHIPUAI_API_KEY"]
514
+ model: "cogvideox-flash"
515
+
516
+ glm_tts: # 语音合成(GLM-TTS)
517
+ adapter: "zhipu"
518
+ url: "https://open.bigmodel.cn/api/paas/v4"
519
+ api_key: ENV["ZHIPUAI_API_KEY"]
520
+ model: "glm-tts"
521
+
522
+ glm_asr: # 语音识别(GLM-ASR-2512)
523
+ adapter: "zhipu"
524
+ url: "https://open.bigmodel.cn/api/paas/v4"
525
+ api_key: ENV["ZHIPUAI_API_KEY"]
526
+ model: "glm-asr-2512"
527
+
528
+ # 视觉模型
529
+ vision:
530
+ adapter: "multimodal"
531
+ url: "https://api.siliconflow.cn/v1/"
532
+ api_key: ENV["SILICONFLOW_API_KEY"]
533
+ model: "Qwen/Qwen2.5-VL-7B-Instruct"
534
+
535
+ # 图像生成
536
+ image_gen:
537
+ adapter: "image_generation"
538
+ url: "https://api.siliconflow.cn/v1/"
539
+ api_key: ENV["SILICONFLOW_API_KEY"]
540
+ model: "stabilityai/stable-diffusion-xl-base-1.0"
541
+
542
+ # 视频生成
543
+ video_gen:
544
+ adapter: "video_generation"
545
+ url: "https://api.siliconflow.cn/v1/"
546
+ api_key: ENV["SILICONFLOW_API_KEY"]
547
+ model: "Wan-AI/Wan2.2-T2V-A14B"
548
+
549
+ # 文本转语音
550
+ tts_service:
551
+ adapter: "tts"
552
+ url: "https://api.siliconflow.cn/v1/"
553
+ api_key: ENV["SILICONFLOW_API_KEY"]
554
+ model: "FunAudioLLM/CosyVoice2-0.5B"
555
+
556
+ # 语音转文本
557
+ stt_service:
558
+ adapter: "stt"
559
+ url: "https://api.siliconflow.cn/v1/"
560
+ api_key: ENV["SILICONFLOW_API_KEY"]
561
+ model: "FunAudioLLM/CosyVoice2-0.5B"
562
+ ```
327
563
 
328
564
  ### 路径配置
329
565
 
@@ -398,20 +634,27 @@ end
398
634
  ## 🚀 实际应用场景
399
635
 
400
636
  - **聊天机器人和对话式 AI**: 构建具有上下文感知能力的复杂聊天机器人
401
- - **内容生成**: 基于模板驱动的提示词进行自动化内容创建
637
+ - **内容生成**: 基于模板驱动的提示词进行自动化内容创建
402
638
  - **代码分析**: AI 驱动的代码审查和文档生成
403
639
  - **客户支持**: 智能工单路由和响应建议
404
640
  - **数据处理**: LLM 驱动的数据提取和转换
405
641
  - **教育工具**: AI 导师和学习辅助系统
642
+ - **多媒体内容创作**: 生成图像、视频和音频内容
643
+ - **语音界面**: 使用 TTS 和 STT 构建语音应用
644
+ - **视觉分析**: 图像理解和目标检测应用
645
+ - **无障碍工具**: 为视障人士提供音频描述、文本转语音
406
646
 
407
647
  ## 🛣️ 发展路线图
408
648
 
649
+ - [x] **多模态 AI 支持** - 视觉、图像生成、视频生成、TTS、STT
409
650
  - [ ] 新增 LLM 提供商适配器(Anthropic Claude、Google PaLM)
410
651
  - [ ] 可视化提示词构建器和管理界面
411
652
  - [ ] 增强缓存和性能优化
412
653
  - [ ] 与向量数据库集成,支持 RAG 应用
413
654
  - [ ] 内置提示词评估和测试框架
414
655
  - [ ] 分布式 worker 执行支持
656
+ - [ ] 实时音视频流支持
657
+ - [ ] 高级多模态提示链
415
658
 
416
659
  ## 🤝 贡献
417
660
 
@@ -442,4 +685,4 @@ end
442
685
 
443
686
  ---
444
687
 
445
- **SmartPrompt** - 让 Ruby 应用中的 LLM 集成变得简单、强大且优雅。
688
+ **SmartPrompt** - 让 Ruby 应用中的 LLM 集成变得简单、强大且优雅。