smart_prompt 0.4.4 → 0.5.1
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +16 -0
- data/README.cn.md +305 -11
- data/README.md +309 -11
- data/Rakefile +10 -1
- data/config/anthropic_config.yml +151 -0
- data/config/image_generation_config.yml +22 -0
- data/config/multimodal_config.yml +85 -0
- data/config/sensenova_config.yml +63 -0
- data/config/zhipu_config.yml +73 -0
- data/docs/ANTHROPIC_EXAMPLES.md +559 -0
- data/docs/CONVERSATION_INTEGRATION_SUMMARY.md +155 -0
- data/docs/HISTORY_EXAMPLES_README.md +533 -0
- data/docs/HISTORY_MANAGEMENT_GUIDE.md +797 -0
- data/docs/MONITORING_GUIDE.md +278 -0
- data/docs/MULTIMODAL_README.md +265 -0
- data/docs/RELEVANCE_BASED_STRATEGY_IMPLEMENTATION.md +124 -0
- data/docs/STT_README.md +302 -0
- data/docs/TTS_README.md +303 -0
- data/docs/VIDEO_GENERATION_README.md +246 -0
- data/docs/delete_files_list.md +124 -0
- data/examples/anthropic_basic_chat.rb +143 -0
- data/examples/anthropic_example.rb +232 -0
- data/examples/anthropic_multimodal.rb +212 -0
- data/examples/anthropic_streaming.rb +312 -0
- data/examples/anthropic_tool_calling.rb +393 -0
- data/examples/automatic_cleanup_example.rb +109 -0
- data/examples/history_management_examples.rb +522 -0
- data/examples/image_generation_example.rb +130 -0
- data/examples/monitoring_example.rb +121 -0
- data/examples/multimodal_example.rb +63 -0
- data/examples/relevance_based_strategy_example.rb +87 -0
- data/examples/sensenova_example.rb +129 -0
- data/examples/stt_example.rb +287 -0
- data/examples/tts_example.rb +244 -0
- data/examples/video_generation_example.rb +189 -0
- data/examples/zhipu_example.rb +151 -0
- data/lib/smart_prompt/anthropic_adapter.rb +407 -298
- data/lib/smart_prompt/compression_engine.rb +201 -0
- data/lib/smart_prompt/context_strategy.rb +22 -0
- data/lib/smart_prompt/conversation.rb +47 -4
- data/lib/smart_prompt/engine.rb +29 -2
- data/lib/smart_prompt/history_manager.rb +596 -0
- data/lib/smart_prompt/hybrid_strategy.rb +222 -0
- data/lib/smart_prompt/image_generation_adapter.rb +297 -0
- data/lib/smart_prompt/lru_cache.rb +133 -0
- data/lib/smart_prompt/message.rb +57 -0
- data/lib/smart_prompt/multimodal_adapter.rb +277 -0
- data/lib/smart_prompt/persistence_layer.rb +197 -0
- data/lib/smart_prompt/relevance_based_strategy.rb +221 -0
- data/lib/smart_prompt/sensenova_adapter.rb +410 -0
- data/lib/smart_prompt/session.rb +140 -0
- data/lib/smart_prompt/sliding_window_strategy.rb +100 -0
- data/lib/smart_prompt/stt_adapter.rb +381 -0
- data/lib/smart_prompt/summary_based_strategy.rb +152 -0
- data/lib/smart_prompt/token_counter.rb +74 -0
- data/lib/smart_prompt/tts_adapter.rb +403 -0
- data/lib/smart_prompt/version.rb +1 -1
- data/lib/smart_prompt/video_generation_adapter.rb +330 -0
- data/lib/smart_prompt/worker.rb +28 -3
- data/lib/smart_prompt/zhipu_adapter.rb +616 -0
- data/lib/smart_prompt.rb +21 -0
- data/workers/history_management_examples.rb +407 -0
- data/workers/image_generation_workers.rb +119 -0
- data/workers/multimodal_workers.rb +110 -0
- data/workers/sensenova_workers.rb +62 -0
- data/workers/stt_workers.rb +195 -0
- data/workers/tts_workers.rb +388 -0
- data/workers/video_generation_workers.rb +264 -0
- data/workers/zhipu_workers.rb +113 -0
- metadata +88 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 73eed476ea088ca5d249ae100e774c4bbe4235242773c49b478ac60304f2250e
|
|
4
|
+
data.tar.gz: 7e28652297f66ab0829ea9f24927bfa0d8f8618915dc4e2d969f7733c29ca8bc
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: cfed4b173e3382fd59c8be7dd7712dd3e2da56948cf605e1e402e0c998bd20e6f0867915c9d8f749e6f794a63d796a013ea4c5aabad0177df17b2649e931c181
|
|
7
|
+
data.tar.gz: 21a684256011301008700ce3b66bf2220778ced62d1ecb4195fc610d492123a14717420f671af3499662f4df4fb9004948a7aeb5b9788756e715be2fdc9c344a
|
data/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,22 @@ 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.5.1] - 2026-06-21
|
|
9
|
+
### Added
|
|
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
|
|
16
|
+
- Integrated upstream gemma4 multimodal support (`use_model`, `thinking`, `image`/`audio`/`video`, `multimodal_prompt`) and `request_options` plumbing
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
- Expose `engine` on `WorkerContext` so workers can reach a configured adapter directly (fixes the `engine.llms[...]` pattern used by media workers)
|
|
20
|
+
- `Worker#execute` default session_id was hard-coded to `"default"`, leaving the per-worker session branch as dead code and collapsing all history-using workers onto one shared session; now generates `worker_<name>_<ts>`
|
|
21
|
+
- `AnthropicAdapter`: add `extract_content_from_response` and stop double-wrapping multimodal (array) content
|
|
22
|
+
- file_upload multimodal fix: base64-encode local image/audio/video files instead of passing raw paths
|
|
23
|
+
|
|
8
24
|
## [0.4.1] - 2026-04-22
|
|
9
25
|
### Fixed
|
|
10
26
|
- Re-release package with `lib/smart_prompt/anthropic_adapter.rb`, which is required by the gem entrypoint.
|
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
|
-
- **
|
|
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,7 +82,13 @@ 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
|
-
|
|
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:
|
|
@@ -238,7 +258,10 @@ end
|
|
|
238
258
|
|
|
239
259
|
### 对话历史
|
|
240
260
|
|
|
261
|
+
SmartPrompt 提供智能对话历史管理,支持会话隔离、自动压缩和多种上下文策略。
|
|
262
|
+
|
|
241
263
|
```ruby
|
|
264
|
+
# 基本用法,自动管理历史
|
|
242
265
|
SmartPrompt.define_worker :conversational_chat do
|
|
243
266
|
use "deepseek"
|
|
244
267
|
model "deepseek-chat"
|
|
@@ -246,8 +269,38 @@ SmartPrompt.define_worker :conversational_chat do
|
|
|
246
269
|
prompt(params[:message], with_history: true)
|
|
247
270
|
send_msg
|
|
248
271
|
end
|
|
272
|
+
|
|
273
|
+
# 高级用法,显式会话管理
|
|
274
|
+
SmartPrompt.define_worker :session_chat do
|
|
275
|
+
use "deepseek"
|
|
276
|
+
model "deepseek-chat"
|
|
277
|
+
|
|
278
|
+
# 使用 session_id 进行隔离的对话
|
|
279
|
+
session_id = params[:session_id] || "default"
|
|
280
|
+
|
|
281
|
+
# 配置会话行为
|
|
282
|
+
session_config = {
|
|
283
|
+
max_messages: 100,
|
|
284
|
+
max_tokens: 4000,
|
|
285
|
+
context_strategy: :sliding_window # 或 :relevance_based, :summary_based, :hybrid
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
sys_msg("你是一个有用的助手。", params)
|
|
289
|
+
prompt(params[:message], with_history: true)
|
|
290
|
+
params.merge(session_id: session_id, session_config: session_config)
|
|
291
|
+
send_msg
|
|
292
|
+
end
|
|
249
293
|
```
|
|
250
294
|
|
|
295
|
+
**历史管理功能:**
|
|
296
|
+
- **会话隔离**: 每个对话都有独立的历史记录
|
|
297
|
+
- **上下文策略**: 可选择滑动窗口、基于相关性、基于摘要或混合策略
|
|
298
|
+
- **自动压缩**: 在保留上下文的同时减少 token 使用量
|
|
299
|
+
- **持久化**: 跨重启保存和恢复对话
|
|
300
|
+
- **性能优化**: LRU 缓存和异步 I/O 以获得最佳性能
|
|
301
|
+
|
|
302
|
+
详见 [历史管理指南](HISTORY_MANAGEMENT_GUIDE.md)。
|
|
303
|
+
|
|
251
304
|
### 嵌入向量生成
|
|
252
305
|
|
|
253
306
|
```ruby
|
|
@@ -263,6 +316,75 @@ embeddings = engine.call_worker(:text_embedder, {
|
|
|
263
316
|
text: "将此文本转换为嵌入向量",
|
|
264
317
|
dimensions: 1024
|
|
265
318
|
})
|
|
319
|
+
|
|
320
|
+
### 多模态 AI 示例
|
|
321
|
+
|
|
322
|
+
#### 图像生成
|
|
323
|
+
```ruby
|
|
324
|
+
# 从文本提示生成图像
|
|
325
|
+
result = engine.call_worker(:image_generator, {
|
|
326
|
+
prompt: "山间美丽的日落",
|
|
327
|
+
size: "1024x1024",
|
|
328
|
+
quality: "standard",
|
|
329
|
+
save_to_file: true,
|
|
330
|
+
output_dir: "./generated_images"
|
|
331
|
+
})
|
|
332
|
+
|
|
333
|
+
puts "图像已生成: #{result[:image_file][:file_path]}"
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
#### 视频生成
|
|
337
|
+
```ruby
|
|
338
|
+
# 从文本提示生成视频
|
|
339
|
+
result = engine.call_worker(:video_generator, {
|
|
340
|
+
prompt: "一只猫在玩毛线球",
|
|
341
|
+
duration: 5,
|
|
342
|
+
resolution: "720p",
|
|
343
|
+
save_to_file: true,
|
|
344
|
+
output_dir: "./generated_videos"
|
|
345
|
+
})
|
|
346
|
+
|
|
347
|
+
puts "视频生成已开始: #{result[:video_id]}"
|
|
348
|
+
puts "检查状态: engine.call_worker(:video_status, {video_id: '#{result[:video_id]}'})"
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
#### 文本转语音
|
|
352
|
+
```ruby
|
|
353
|
+
# 将文本转换为语音
|
|
354
|
+
result = engine.call_worker(:tts_synthesizer, {
|
|
355
|
+
text: "欢迎使用 SmartPrompt,您的 AI 助手",
|
|
356
|
+
voice: "alloy",
|
|
357
|
+
speed: 1.0,
|
|
358
|
+
save_to_file: true,
|
|
359
|
+
output_dir: "./generated_audio"
|
|
360
|
+
})
|
|
361
|
+
|
|
362
|
+
puts "音频文件已创建: #{result[:audio_file][:file_path]}"
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
#### 语音转文本
|
|
366
|
+
```ruby
|
|
367
|
+
# 将音频转录为文本
|
|
368
|
+
result = engine.call_worker(:stt_transcriber, {
|
|
369
|
+
audio_file: "./audio.wav",
|
|
370
|
+
language: "zh",
|
|
371
|
+
response_format: "json"
|
|
372
|
+
})
|
|
373
|
+
|
|
374
|
+
puts "转录文本: #{result[:transcription][:text]}"
|
|
375
|
+
puts "语言: #{result[:transcription][:language]}"
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
#### 视觉分析
|
|
379
|
+
```ruby
|
|
380
|
+
# 使用视觉模型分析图像
|
|
381
|
+
result = engine.call_worker(:vision_analyzer, {
|
|
382
|
+
image_file: "./image.jpg",
|
|
383
|
+
prompt: "描述你在这张图片中看到了什么"
|
|
384
|
+
})
|
|
385
|
+
|
|
386
|
+
puts "分析结果: #{result[:response]}"
|
|
387
|
+
```
|
|
266
388
|
```
|
|
267
389
|
|
|
268
390
|
## 🏗️ 架构概述
|
|
@@ -282,6 +404,13 @@ SmartPrompt 采用模块化架构:
|
|
|
282
404
|
│Worker │ │对话 │ │ 模板 │
|
|
283
405
|
│ │ │管理 │ │ 系统 │
|
|
284
406
|
└───────┘ └─────┘ └────────┘
|
|
407
|
+
│
|
|
408
|
+
┌────────┴────────┐
|
|
409
|
+
│ │
|
|
410
|
+
┌───▼────────┐ ┌─────▼──────┐
|
|
411
|
+
│ 历史管理 │ │ 持久化层 │
|
|
412
|
+
│ 器 │ │ │
|
|
413
|
+
└────────────┘ └────────────┘
|
|
285
414
|
```
|
|
286
415
|
|
|
287
416
|
### 核心组件
|
|
@@ -289,8 +418,10 @@ SmartPrompt 采用模块化架构:
|
|
|
289
418
|
- **引擎(Engine)**: 中央编排器,管理配置、适配器和 Worker
|
|
290
419
|
- **Worker**: 包含嵌入业务逻辑的可重用任务定义
|
|
291
420
|
- **对话(Conversation)**: 上下文和消息历史管理
|
|
292
|
-
-
|
|
421
|
+
- **历史管理器**: 智能对话历史,支持会话隔离和上下文策略
|
|
422
|
+
- **适配器(Adapters)**: LLM 提供商集成(OpenAI、Anthropic、Llama.cpp 等)
|
|
293
423
|
- **模板(Templates)**: 基于 ERB 的提示词模板系统
|
|
424
|
+
- **持久化层(Persistence Layer)**: 跨重启保存和恢复对话历史
|
|
294
425
|
|
|
295
426
|
## 🔧 配置参考
|
|
296
427
|
|
|
@@ -298,20 +429,176 @@ SmartPrompt 采用模块化架构:
|
|
|
298
429
|
|
|
299
430
|
```yaml
|
|
300
431
|
adapters:
|
|
301
|
-
openai: "OpenAIAdapter"
|
|
432
|
+
openai: "OpenAIAdapter" # 用于 OpenAI API
|
|
433
|
+
anthropic: "AnthropicAdapter" # 用于 Anthropic Claude API
|
|
434
|
+
sensenova: "SenseNovaAdapter" # 用于商汤 SenseNova(对话/视觉/向量/文生图)
|
|
435
|
+
zhipu: "ZhipuAIAdapter" # 用于智谱 BigModel/GLM(对话/视觉/向量/图/视频/语音)
|
|
436
|
+
multimodal: "MultimodalAdapter" # 用于视觉模型
|
|
437
|
+
image_generation: "ImageGenerationAdapter" # 用于图像生成
|
|
438
|
+
video_generation: "VideoGenerationAdapter" # 用于视频生成
|
|
439
|
+
tts: "TTSAdapter" # 用于文本转语音
|
|
440
|
+
stt: "STTAdapter" # 用于语音转文本
|
|
302
441
|
```
|
|
303
442
|
|
|
304
443
|
### LLM 配置
|
|
305
444
|
|
|
306
445
|
```yaml
|
|
307
446
|
llms:
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
model: "
|
|
447
|
+
# 文本模型
|
|
448
|
+
gpt:
|
|
449
|
+
adapter: "openai"
|
|
450
|
+
api_key: ENV["OPENAI_API_KEY"]
|
|
451
|
+
model: "gpt-4"
|
|
452
|
+
temperature: 0.7
|
|
453
|
+
|
|
454
|
+
# Anthropic Claude 模型
|
|
455
|
+
claude:
|
|
456
|
+
adapter: "anthropic"
|
|
457
|
+
api_key: ENV["ANTHROPIC_API_KEY"]
|
|
458
|
+
model: "claude-3-5-sonnet-20241022"
|
|
459
|
+
temperature: 0.7
|
|
460
|
+
max_tokens: 4096
|
|
461
|
+
|
|
462
|
+
claude_opus:
|
|
463
|
+
adapter: "anthropic"
|
|
464
|
+
api_key: ENV["ANTHROPIC_API_KEY"]
|
|
465
|
+
model: "claude-3-opus-20240229"
|
|
466
|
+
temperature: 0.7
|
|
467
|
+
max_tokens: 4096
|
|
468
|
+
|
|
469
|
+
claude_haiku:
|
|
470
|
+
adapter: "anthropic"
|
|
471
|
+
api_key: ENV["ANTHROPIC_API_KEY"]
|
|
472
|
+
model: "claude-3-5-haiku-20241022"
|
|
473
|
+
temperature: 0.7
|
|
474
|
+
max_tokens: 4096
|
|
475
|
+
|
|
476
|
+
# 自定义 Anthropic 端点(用于代理或自定义部署)
|
|
477
|
+
claude_custom:
|
|
478
|
+
adapter: "anthropic"
|
|
479
|
+
api_key: ENV["ANTHROPIC_API_KEY"]
|
|
480
|
+
url: "https://your-custom-endpoint.com"
|
|
481
|
+
model: "claude-3-5-sonnet-20241022"
|
|
482
|
+
temperature: 0.7
|
|
483
|
+
max_tokens: 4096
|
|
484
|
+
|
|
485
|
+
# 商汤 SenseNova —— 单一适配器覆盖四类模型,只需切换 model。
|
|
486
|
+
# 免费模型走 token.sensenova.cn/v1;付费模型(SenseChat-5、SenseNova-V6-*、Cupido)
|
|
487
|
+
# 走 api.sensenova.cn/compatible-mode/v2(key 无权限时返回 403)。
|
|
488
|
+
sensechat: # 商量 文本对话(免费档)
|
|
489
|
+
adapter: "sensenova"
|
|
490
|
+
url: "https://token.sensenova.cn/v1"
|
|
491
|
+
api_key: ENV["SENSENOVA_API_KEY"]
|
|
492
|
+
model: "sensenova-6.7-flash-lite"
|
|
493
|
+
temperature: 0.7
|
|
494
|
+
# 可选 SenseNova 采样参数(会透传到 /chat/completions):
|
|
495
|
+
# reasoning_effort: "medium"
|
|
496
|
+
# max_completion_tokens: 4096
|
|
497
|
+
# 付费:url https://api.sensenova.cn/compatible-mode/v2,model SenseChat-5
|
|
498
|
+
|
|
499
|
+
sensevision: # 商量 图文多模态(flash-lite 原生多模态)
|
|
500
|
+
adapter: "sensenova"
|
|
501
|
+
url: "https://token.sensenova.cn/v1"
|
|
502
|
+
api_key: ENV["SENSENOVA_API_KEY"]
|
|
503
|
+
model: "sensenova-6.7-flash-lite"
|
|
504
|
+
# 付费:url https://api.sensenova.cn/compatible-mode/v2,model SenseNova-V6-Pro
|
|
505
|
+
|
|
506
|
+
senseembedding: # Cupido 向量模型(付费;原生端点)
|
|
507
|
+
adapter: "sensenova"
|
|
508
|
+
url: "https://api.sensenova.cn/compatible-mode/v2"
|
|
509
|
+
embeddings_url: "https://api.sensenova.cn/v1/llm/embeddings"
|
|
510
|
+
api_key: ENV["SENSENOVA_API_KEY"]
|
|
511
|
+
model: "Cupido"
|
|
512
|
+
|
|
513
|
+
senseimage: # 秒画 文生图(sensenova-u1-fast,token.sensenova.cn base)
|
|
514
|
+
adapter: "sensenova"
|
|
515
|
+
url: "https://token.sensenova.cn/v1"
|
|
516
|
+
image_url: "https://token.sensenova.cn/v1/images/generations"
|
|
517
|
+
api_key: ENV["SENSENOVA_API_KEY"]
|
|
518
|
+
model: "sensenova-u1-fast"
|
|
519
|
+
# sensenova-u1-fast 只接受特定尺寸(默认 2048x2048),见 sensenova_adapter.rb 的 VALID_IMAGE_SIZES
|
|
520
|
+
|
|
521
|
+
# 智谱 AI(BigModel/GLM)—— 单一适配器覆盖全部类别,只需切换 model。
|
|
522
|
+
# base https://open.bigmodel.cn/api/paas/v4 ,Bearer 鉴权。默认用免费模型。
|
|
523
|
+
glm: # 文本对话(免费 glm-4-flash;付费 glm-4-plus/glm-5.2)
|
|
524
|
+
adapter: "zhipu"
|
|
525
|
+
url: "https://open.bigmodel.cn/api/paas/v4"
|
|
526
|
+
api_key: ENV["ZHIPUAI_API_KEY"]
|
|
527
|
+
model: "glm-4-flash"
|
|
313
528
|
temperature: 0.7
|
|
314
|
-
#
|
|
529
|
+
# CodeGeeX-4:设 `coding: true` 并 model: codegeex-4(走 coding base)
|
|
530
|
+
|
|
531
|
+
glm_vision: # 图文多模态(免费 glm-4v-flash;付费 glm-4v-plus)
|
|
532
|
+
adapter: "zhipu"
|
|
533
|
+
url: "https://open.bigmodel.cn/api/paas/v4"
|
|
534
|
+
api_key: ENV["ZHIPUAI_API_KEY"]
|
|
535
|
+
model: "glm-4v-flash"
|
|
536
|
+
|
|
537
|
+
embedding: # 向量模型(embedding-3;可自定义维度 256/512/1024/2048)
|
|
538
|
+
adapter: "zhipu"
|
|
539
|
+
url: "https://open.bigmodel.cn/api/paas/v4"
|
|
540
|
+
api_key: ENV["ZHIPUAI_API_KEY"]
|
|
541
|
+
model: "embedding-3"
|
|
542
|
+
dimensions: 1024
|
|
543
|
+
|
|
544
|
+
cogview: # 文生图(免费 cogview-3-flash;付费 cogview-4/glm-image)
|
|
545
|
+
adapter: "zhipu"
|
|
546
|
+
url: "https://open.bigmodel.cn/api/paas/v4"
|
|
547
|
+
api_key: ENV["ZHIPUAI_API_KEY"]
|
|
548
|
+
model: "cogview-3-flash"
|
|
549
|
+
|
|
550
|
+
cogvideo: # 文生视频(异步 提交->轮询->下载;免费 cogvideox-flash)
|
|
551
|
+
adapter: "zhipu"
|
|
552
|
+
url: "https://open.bigmodel.cn/api/paas/v4"
|
|
553
|
+
api_key: ENV["ZHIPUAI_API_KEY"]
|
|
554
|
+
model: "cogvideox-flash"
|
|
555
|
+
|
|
556
|
+
glm_tts: # 语音合成(GLM-TTS)
|
|
557
|
+
adapter: "zhipu"
|
|
558
|
+
url: "https://open.bigmodel.cn/api/paas/v4"
|
|
559
|
+
api_key: ENV["ZHIPUAI_API_KEY"]
|
|
560
|
+
model: "glm-tts"
|
|
561
|
+
|
|
562
|
+
glm_asr: # 语音识别(GLM-ASR-2512)
|
|
563
|
+
adapter: "zhipu"
|
|
564
|
+
url: "https://open.bigmodel.cn/api/paas/v4"
|
|
565
|
+
api_key: ENV["ZHIPUAI_API_KEY"]
|
|
566
|
+
model: "glm-asr-2512"
|
|
567
|
+
|
|
568
|
+
# 视觉模型
|
|
569
|
+
vision:
|
|
570
|
+
adapter: "multimodal"
|
|
571
|
+
url: "https://api.siliconflow.cn/v1/"
|
|
572
|
+
api_key: ENV["SILICONFLOW_API_KEY"]
|
|
573
|
+
model: "Qwen/Qwen2.5-VL-7B-Instruct"
|
|
574
|
+
|
|
575
|
+
# 图像生成
|
|
576
|
+
image_gen:
|
|
577
|
+
adapter: "image_generation"
|
|
578
|
+
url: "https://api.siliconflow.cn/v1/"
|
|
579
|
+
api_key: ENV["SILICONFLOW_API_KEY"]
|
|
580
|
+
model: "stabilityai/stable-diffusion-xl-base-1.0"
|
|
581
|
+
|
|
582
|
+
# 视频生成
|
|
583
|
+
video_gen:
|
|
584
|
+
adapter: "video_generation"
|
|
585
|
+
url: "https://api.siliconflow.cn/v1/"
|
|
586
|
+
api_key: ENV["SILICONFLOW_API_KEY"]
|
|
587
|
+
model: "Wan-AI/Wan2.2-T2V-A14B"
|
|
588
|
+
|
|
589
|
+
# 文本转语音
|
|
590
|
+
tts_service:
|
|
591
|
+
adapter: "tts"
|
|
592
|
+
url: "https://api.siliconflow.cn/v1/"
|
|
593
|
+
api_key: ENV["SILICONFLOW_API_KEY"]
|
|
594
|
+
model: "FunAudioLLM/CosyVoice2-0.5B"
|
|
595
|
+
|
|
596
|
+
# 语音转文本
|
|
597
|
+
stt_service:
|
|
598
|
+
adapter: "stt"
|
|
599
|
+
url: "https://api.siliconflow.cn/v1/"
|
|
600
|
+
api_key: ENV["SILICONFLOW_API_KEY"]
|
|
601
|
+
model: "FunAudioLLM/CosyVoice2-0.5B"
|
|
315
602
|
```
|
|
316
603
|
|
|
317
604
|
### 模型别名配置
|
|
@@ -398,20 +685,27 @@ end
|
|
|
398
685
|
## 🚀 实际应用场景
|
|
399
686
|
|
|
400
687
|
- **聊天机器人和对话式 AI**: 构建具有上下文感知能力的复杂聊天机器人
|
|
401
|
-
- **内容生成**: 基于模板驱动的提示词进行自动化内容创建
|
|
688
|
+
- **内容生成**: 基于模板驱动的提示词进行自动化内容创建
|
|
402
689
|
- **代码分析**: AI 驱动的代码审查和文档生成
|
|
403
690
|
- **客户支持**: 智能工单路由和响应建议
|
|
404
691
|
- **数据处理**: LLM 驱动的数据提取和转换
|
|
405
692
|
- **教育工具**: AI 导师和学习辅助系统
|
|
693
|
+
- **多媒体内容创作**: 生成图像、视频和音频内容
|
|
694
|
+
- **语音界面**: 使用 TTS 和 STT 构建语音应用
|
|
695
|
+
- **视觉分析**: 图像理解和目标检测应用
|
|
696
|
+
- **无障碍工具**: 为视障人士提供音频描述、文本转语音
|
|
406
697
|
|
|
407
698
|
## 🛣️ 发展路线图
|
|
408
699
|
|
|
700
|
+
- [x] **多模态 AI 支持** - 视觉、图像生成、视频生成、TTS、STT
|
|
409
701
|
- [ ] 新增 LLM 提供商适配器(Anthropic Claude、Google PaLM)
|
|
410
702
|
- [ ] 可视化提示词构建器和管理界面
|
|
411
703
|
- [ ] 增强缓存和性能优化
|
|
412
704
|
- [ ] 与向量数据库集成,支持 RAG 应用
|
|
413
705
|
- [ ] 内置提示词评估和测试框架
|
|
414
706
|
- [ ] 分布式 worker 执行支持
|
|
707
|
+
- [ ] 实时音视频流支持
|
|
708
|
+
- [ ] 高级多模态提示链
|
|
415
709
|
|
|
416
710
|
## 🤝 贡献
|
|
417
711
|
|