isa-model 0.3.91__py3-none-any.whl → 0.4.3__py3-none-any.whl
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.
- isa_model/client.py +1166 -584
- isa_model/core/cache/redis_cache.py +410 -0
- isa_model/core/config/config_manager.py +282 -12
- isa_model/core/config.py +91 -1
- isa_model/core/database/__init__.py +1 -0
- isa_model/core/database/direct_db_client.py +114 -0
- isa_model/core/database/migration_manager.py +563 -0
- isa_model/core/database/migrations.py +297 -0
- isa_model/core/database/supabase_client.py +258 -0
- isa_model/core/dependencies.py +316 -0
- isa_model/core/discovery/__init__.py +19 -0
- isa_model/core/discovery/consul_discovery.py +190 -0
- isa_model/core/logging/__init__.py +54 -0
- isa_model/core/logging/influx_logger.py +523 -0
- isa_model/core/logging/loki_logger.py +160 -0
- isa_model/core/models/__init__.py +46 -0
- isa_model/core/models/config_models.py +625 -0
- isa_model/core/models/deployment_billing_tracker.py +430 -0
- isa_model/core/models/model_billing_tracker.py +60 -88
- isa_model/core/models/model_manager.py +66 -25
- isa_model/core/models/model_metadata.py +690 -0
- isa_model/core/models/model_repo.py +217 -55
- isa_model/core/models/model_statistics_tracker.py +234 -0
- isa_model/core/models/model_storage.py +0 -1
- isa_model/core/models/model_version_manager.py +959 -0
- isa_model/core/models/system_models.py +857 -0
- isa_model/core/pricing_manager.py +2 -249
- isa_model/core/repositories/__init__.py +9 -0
- isa_model/core/repositories/config_repository.py +912 -0
- isa_model/core/resilience/circuit_breaker.py +366 -0
- isa_model/core/security/secrets.py +358 -0
- isa_model/core/services/__init__.py +2 -4
- isa_model/core/services/intelligent_model_selector.py +479 -370
- isa_model/core/storage/hf_storage.py +2 -2
- isa_model/core/types.py +8 -0
- isa_model/deployment/__init__.py +5 -48
- isa_model/deployment/core/__init__.py +2 -31
- isa_model/deployment/core/deployment_manager.py +1278 -368
- isa_model/deployment/local/__init__.py +31 -0
- isa_model/deployment/local/config.py +248 -0
- isa_model/deployment/local/gpu_gateway.py +607 -0
- isa_model/deployment/local/health_checker.py +428 -0
- isa_model/deployment/local/provider.py +586 -0
- isa_model/deployment/local/tensorrt_service.py +621 -0
- isa_model/deployment/local/transformers_service.py +644 -0
- isa_model/deployment/local/vllm_service.py +527 -0
- isa_model/deployment/modal/__init__.py +8 -0
- isa_model/deployment/modal/config.py +136 -0
- isa_model/deployment/modal/deployer.py +894 -0
- isa_model/deployment/modal/services/__init__.py +3 -0
- isa_model/deployment/modal/services/audio/__init__.py +1 -0
- isa_model/deployment/modal/services/audio/isa_audio_chatTTS_service.py +520 -0
- isa_model/deployment/modal/services/audio/isa_audio_openvoice_service.py +758 -0
- isa_model/deployment/modal/services/audio/isa_audio_service_v2.py +1044 -0
- isa_model/deployment/modal/services/embedding/__init__.py +1 -0
- isa_model/deployment/modal/services/embedding/isa_embed_rerank_service.py +296 -0
- isa_model/deployment/modal/services/llm/__init__.py +1 -0
- isa_model/deployment/modal/services/llm/isa_llm_service.py +424 -0
- isa_model/deployment/modal/services/video/__init__.py +1 -0
- isa_model/deployment/modal/services/video/isa_video_hunyuan_service.py +423 -0
- isa_model/deployment/modal/services/vision/__init__.py +1 -0
- isa_model/deployment/modal/services/vision/isa_vision_ocr_service.py +519 -0
- isa_model/deployment/modal/services/vision/isa_vision_qwen25_service.py +709 -0
- isa_model/deployment/modal/services/vision/isa_vision_table_service.py +676 -0
- isa_model/deployment/modal/services/vision/isa_vision_ui_service.py +833 -0
- isa_model/deployment/modal/services/vision/isa_vision_ui_service_optimized.py +660 -0
- isa_model/deployment/models/org-org-acme-corp-tenant-a-service-llm-20250825-225822/tenant-a-service_modal_service.py +48 -0
- isa_model/deployment/models/org-test-org-123-prefix-test-service-llm-20250825-225822/prefix-test-service_modal_service.py +48 -0
- isa_model/deployment/models/test-llm-service-llm-20250825-204442/test-llm-service_modal_service.py +48 -0
- isa_model/deployment/models/test-monitoring-gpt2-llm-20250825-212906/test-monitoring-gpt2_modal_service.py +48 -0
- isa_model/deployment/models/test-monitoring-gpt2-llm-20250825-213009/test-monitoring-gpt2_modal_service.py +48 -0
- isa_model/deployment/storage/__init__.py +5 -0
- isa_model/deployment/storage/deployment_repository.py +824 -0
- isa_model/deployment/triton/__init__.py +10 -0
- isa_model/deployment/triton/config.py +196 -0
- isa_model/deployment/triton/configs/__init__.py +1 -0
- isa_model/deployment/triton/provider.py +512 -0
- isa_model/deployment/triton/scripts/__init__.py +1 -0
- isa_model/deployment/triton/templates/__init__.py +1 -0
- isa_model/inference/__init__.py +47 -1
- isa_model/inference/ai_factory.py +179 -16
- isa_model/inference/legacy_services/__init__.py +21 -0
- isa_model/inference/legacy_services/model_evaluation.py +637 -0
- isa_model/inference/legacy_services/model_service.py +573 -0
- isa_model/inference/legacy_services/model_serving.py +717 -0
- isa_model/inference/legacy_services/model_training.py +561 -0
- isa_model/inference/models/__init__.py +21 -0
- isa_model/inference/models/inference_config.py +551 -0
- isa_model/inference/models/inference_record.py +675 -0
- isa_model/inference/models/performance_models.py +714 -0
- isa_model/inference/repositories/__init__.py +9 -0
- isa_model/inference/repositories/inference_repository.py +828 -0
- isa_model/inference/services/audio/__init__.py +21 -0
- isa_model/inference/services/audio/base_realtime_service.py +225 -0
- isa_model/inference/services/audio/base_stt_service.py +184 -11
- isa_model/inference/services/audio/isa_tts_service.py +0 -0
- isa_model/inference/services/audio/openai_realtime_service.py +320 -124
- isa_model/inference/services/audio/openai_stt_service.py +53 -11
- isa_model/inference/services/base_service.py +17 -1
- isa_model/inference/services/custom_model_manager.py +277 -0
- isa_model/inference/services/embedding/__init__.py +13 -0
- isa_model/inference/services/embedding/base_embed_service.py +111 -8
- isa_model/inference/services/embedding/isa_embed_service.py +305 -0
- isa_model/inference/services/embedding/ollama_embed_service.py +15 -3
- isa_model/inference/services/embedding/openai_embed_service.py +2 -4
- isa_model/inference/services/embedding/resilient_embed_service.py +285 -0
- isa_model/inference/services/embedding/tests/test_embedding.py +222 -0
- isa_model/inference/services/img/__init__.py +2 -2
- isa_model/inference/services/img/base_image_gen_service.py +24 -7
- isa_model/inference/services/img/replicate_image_gen_service.py +84 -422
- isa_model/inference/services/img/services/replicate_face_swap.py +193 -0
- isa_model/inference/services/img/services/replicate_flux.py +226 -0
- isa_model/inference/services/img/services/replicate_flux_kontext.py +219 -0
- isa_model/inference/services/img/services/replicate_sticker_maker.py +249 -0
- isa_model/inference/services/img/tests/test_img_client.py +297 -0
- isa_model/inference/services/llm/__init__.py +10 -2
- isa_model/inference/services/llm/base_llm_service.py +361 -26
- isa_model/inference/services/llm/cerebras_llm_service.py +628 -0
- isa_model/inference/services/llm/helpers/llm_adapter.py +71 -12
- isa_model/inference/services/llm/helpers/llm_prompts.py +342 -0
- isa_model/inference/services/llm/helpers/llm_utils.py +321 -23
- isa_model/inference/services/llm/huggingface_llm_service.py +581 -0
- isa_model/inference/services/llm/local_llm_service.py +747 -0
- isa_model/inference/services/llm/ollama_llm_service.py +11 -3
- isa_model/inference/services/llm/openai_llm_service.py +670 -56
- isa_model/inference/services/llm/yyds_llm_service.py +10 -3
- isa_model/inference/services/vision/__init__.py +27 -6
- isa_model/inference/services/vision/base_vision_service.py +118 -185
- isa_model/inference/services/vision/blip_vision_service.py +359 -0
- isa_model/inference/services/vision/helpers/image_utils.py +19 -10
- isa_model/inference/services/vision/isa_vision_service.py +634 -0
- isa_model/inference/services/vision/openai_vision_service.py +19 -10
- isa_model/inference/services/vision/tests/test_ocr_client.py +284 -0
- isa_model/inference/services/vision/vgg16_vision_service.py +257 -0
- isa_model/serving/api/cache_manager.py +245 -0
- isa_model/serving/api/dependencies/__init__.py +1 -0
- isa_model/serving/api/dependencies/auth.py +194 -0
- isa_model/serving/api/dependencies/database.py +139 -0
- isa_model/serving/api/error_handlers.py +284 -0
- isa_model/serving/api/fastapi_server.py +240 -18
- isa_model/serving/api/middleware/auth.py +317 -0
- isa_model/serving/api/middleware/security.py +268 -0
- isa_model/serving/api/middleware/tenant_context.py +414 -0
- isa_model/serving/api/routes/analytics.py +489 -0
- isa_model/serving/api/routes/config.py +645 -0
- isa_model/serving/api/routes/deployment_billing.py +315 -0
- isa_model/serving/api/routes/deployments.py +475 -0
- isa_model/serving/api/routes/gpu_gateway.py +440 -0
- isa_model/serving/api/routes/health.py +32 -12
- isa_model/serving/api/routes/inference_monitoring.py +486 -0
- isa_model/serving/api/routes/local_deployments.py +448 -0
- isa_model/serving/api/routes/logs.py +430 -0
- isa_model/serving/api/routes/settings.py +582 -0
- isa_model/serving/api/routes/tenants.py +575 -0
- isa_model/serving/api/routes/unified.py +992 -171
- isa_model/serving/api/routes/webhooks.py +479 -0
- isa_model/serving/api/startup.py +318 -0
- isa_model/serving/modal_proxy_server.py +249 -0
- isa_model/utils/gpu_utils.py +311 -0
- {isa_model-0.3.91.dist-info → isa_model-0.4.3.dist-info}/METADATA +76 -22
- isa_model-0.4.3.dist-info/RECORD +193 -0
- isa_model/deployment/cloud/__init__.py +0 -9
- isa_model/deployment/cloud/modal/__init__.py +0 -10
- isa_model/deployment/cloud/modal/isa_vision_doc_service.py +0 -766
- isa_model/deployment/cloud/modal/isa_vision_table_service.py +0 -532
- isa_model/deployment/cloud/modal/isa_vision_ui_service.py +0 -406
- isa_model/deployment/cloud/modal/register_models.py +0 -321
- isa_model/deployment/core/deployment_config.py +0 -356
- isa_model/deployment/core/isa_deployment_service.py +0 -401
- isa_model/deployment/gpu_int8_ds8/app/server.py +0 -66
- isa_model/deployment/gpu_int8_ds8/scripts/test_client.py +0 -43
- isa_model/deployment/gpu_int8_ds8/scripts/test_client_os.py +0 -35
- isa_model/deployment/runtime/deployed_service.py +0 -338
- isa_model/deployment/services/__init__.py +0 -9
- isa_model/deployment/services/auto_deploy_vision_service.py +0 -538
- isa_model/deployment/services/model_service.py +0 -332
- isa_model/deployment/services/service_monitor.py +0 -356
- isa_model/deployment/services/service_registry.py +0 -527
- isa_model/eval/__init__.py +0 -92
- isa_model/eval/benchmarks.py +0 -469
- isa_model/eval/config/__init__.py +0 -10
- isa_model/eval/config/evaluation_config.py +0 -108
- isa_model/eval/evaluators/__init__.py +0 -18
- isa_model/eval/evaluators/base_evaluator.py +0 -503
- isa_model/eval/evaluators/llm_evaluator.py +0 -472
- isa_model/eval/factory.py +0 -531
- isa_model/eval/infrastructure/__init__.py +0 -24
- isa_model/eval/infrastructure/experiment_tracker.py +0 -466
- isa_model/eval/metrics.py +0 -798
- isa_model/inference/adapter/unified_api.py +0 -248
- isa_model/inference/services/helpers/stacked_config.py +0 -148
- isa_model/inference/services/img/flux_professional_service.py +0 -603
- isa_model/inference/services/img/helpers/base_stacked_service.py +0 -274
- isa_model/inference/services/others/table_transformer_service.py +0 -61
- isa_model/inference/services/vision/doc_analysis_service.py +0 -640
- isa_model/inference/services/vision/helpers/base_stacked_service.py +0 -274
- isa_model/inference/services/vision/ui_analysis_service.py +0 -823
- isa_model/scripts/inference_tracker.py +0 -283
- isa_model/scripts/mlflow_manager.py +0 -379
- isa_model/scripts/model_registry.py +0 -465
- isa_model/scripts/register_models.py +0 -370
- isa_model/scripts/register_models_with_embeddings.py +0 -510
- isa_model/scripts/start_mlflow.py +0 -95
- isa_model/scripts/training_tracker.py +0 -257
- isa_model/training/__init__.py +0 -74
- isa_model/training/annotation/annotation_schema.py +0 -47
- isa_model/training/annotation/processors/annotation_processor.py +0 -126
- isa_model/training/annotation/storage/dataset_manager.py +0 -131
- isa_model/training/annotation/storage/dataset_schema.py +0 -44
- isa_model/training/annotation/tests/test_annotation_flow.py +0 -109
- isa_model/training/annotation/tests/test_minio copy.py +0 -113
- isa_model/training/annotation/tests/test_minio_upload.py +0 -43
- isa_model/training/annotation/views/annotation_controller.py +0 -158
- isa_model/training/cloud/__init__.py +0 -22
- isa_model/training/cloud/job_orchestrator.py +0 -402
- isa_model/training/cloud/runpod_trainer.py +0 -454
- isa_model/training/cloud/storage_manager.py +0 -482
- isa_model/training/core/__init__.py +0 -23
- isa_model/training/core/config.py +0 -181
- isa_model/training/core/dataset.py +0 -222
- isa_model/training/core/trainer.py +0 -720
- isa_model/training/core/utils.py +0 -213
- isa_model/training/factory.py +0 -424
- isa_model-0.3.91.dist-info/RECORD +0 -138
- /isa_model/{core/storage/minio_storage.py → deployment/modal/services/audio/isa_audio_fish_service.py} +0 -0
- /isa_model/deployment/{services → modal/services/vision}/simple_auto_deploy_vision_service.py +0 -0
- {isa_model-0.3.91.dist-info → isa_model-0.4.3.dist-info}/WHEEL +0 -0
- {isa_model-0.3.91.dist-info → isa_model-0.4.3.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,222 @@
|
|
1
|
+
#!/usr/bin/env python3
|
2
|
+
"""
|
3
|
+
Complete embedding service test with all functionality
|
4
|
+
"""
|
5
|
+
|
6
|
+
import asyncio
|
7
|
+
import sys
|
8
|
+
import os
|
9
|
+
import json
|
10
|
+
|
11
|
+
# Add the isa_model to path
|
12
|
+
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
13
|
+
|
14
|
+
async def test_complete_embedding_service():
|
15
|
+
"""Test all embedding service functionality"""
|
16
|
+
print("🚀 Testing Complete ISA Model Embedding Service...")
|
17
|
+
print("=" * 60)
|
18
|
+
|
19
|
+
try:
|
20
|
+
from isa_model.client import ISAModelClient
|
21
|
+
client = ISAModelClient()
|
22
|
+
|
23
|
+
print("✅ ISA client imported successfully")
|
24
|
+
|
25
|
+
# Test 1: Basic embedding
|
26
|
+
print("\n📌 Test 1: Basic Embedding")
|
27
|
+
try:
|
28
|
+
result = await client.invoke(
|
29
|
+
input_data="Hello world",
|
30
|
+
task="embed",
|
31
|
+
service_type="embedding"
|
32
|
+
)
|
33
|
+
|
34
|
+
if result.get('success'):
|
35
|
+
embedding = result['result']
|
36
|
+
print(f"✅ Basic embedding: {len(embedding)} dimensions")
|
37
|
+
print(f" First 5 values: {embedding[:5]}")
|
38
|
+
print(f" Model used: {result.get('metadata', {}).get('model_used', 'unknown')}")
|
39
|
+
print(f" Cost: ${result.get('metadata', {}).get('billing', {}).get('cost_usd', 0)}")
|
40
|
+
else:
|
41
|
+
print(f"❌ Basic embedding failed: {result.get('error', 'Unknown error')}")
|
42
|
+
|
43
|
+
except Exception as e:
|
44
|
+
print(f"❌ Basic embedding exception: {e}")
|
45
|
+
|
46
|
+
# Test 2: Batch embedding
|
47
|
+
print("\n📌 Test 2: Batch Embedding")
|
48
|
+
try:
|
49
|
+
result = await client.invoke(
|
50
|
+
input_data=["Machine learning", "Deep learning", "Natural language processing"],
|
51
|
+
task="embed_batch",
|
52
|
+
service_type="embedding"
|
53
|
+
)
|
54
|
+
|
55
|
+
if result.get('success'):
|
56
|
+
embeddings = result['result']
|
57
|
+
print(f"✅ Batch embedding: {len(embeddings)} embeddings")
|
58
|
+
print(f" Each with {len(embeddings[0])} dimensions")
|
59
|
+
print(f" Total cost: ${result.get('metadata', {}).get('billing', {}).get('cost_usd', 0)}")
|
60
|
+
else:
|
61
|
+
print(f"❌ Batch embedding failed: {result.get('error', 'Unknown error')}")
|
62
|
+
|
63
|
+
except Exception as e:
|
64
|
+
print(f"❌ Batch embedding exception: {e}")
|
65
|
+
|
66
|
+
# Test 3: Text-based similarity search
|
67
|
+
print("\n📌 Test 3: Text-based Similarity Search")
|
68
|
+
try:
|
69
|
+
result = await client.invoke(
|
70
|
+
input_data="artificial intelligence",
|
71
|
+
task="similarity",
|
72
|
+
service_type="embedding",
|
73
|
+
candidates=["machine learning algorithms", "cooking recipes", "deep learning networks", "computer science"]
|
74
|
+
)
|
75
|
+
|
76
|
+
if result.get('success'):
|
77
|
+
similar_docs = result['result']['similar_documents']
|
78
|
+
print(f"✅ Similarity search: {len(similar_docs)} results")
|
79
|
+
for doc in similar_docs:
|
80
|
+
print(f" {doc['similarity']:.3f}: {doc['text']}")
|
81
|
+
else:
|
82
|
+
print(f"❌ Similarity search failed: {result.get('error', 'Unknown error')}")
|
83
|
+
|
84
|
+
except Exception as e:
|
85
|
+
print(f"❌ Similarity search exception: {e}")
|
86
|
+
|
87
|
+
# Test 4: Text chunking with embeddings
|
88
|
+
print("\n📌 Test 4: Text Chunking with Embeddings")
|
89
|
+
try:
|
90
|
+
long_text = """
|
91
|
+
Machine learning is a subset of artificial intelligence that focuses on algorithms and statistical models
|
92
|
+
that enable computers to learn and make decisions without being explicitly programmed. Deep learning,
|
93
|
+
a specialized branch of machine learning, uses artificial neural networks with multiple layers to model
|
94
|
+
and understand complex patterns in data. Natural language processing (NLP) is another important field
|
95
|
+
that enables computers to understand, interpret, and generate human language in a valuable way.
|
96
|
+
Computer vision allows machines to interpret and make decisions based on visual data from the world around them.
|
97
|
+
"""
|
98
|
+
|
99
|
+
result = await client.invoke(
|
100
|
+
input_data=long_text.strip(),
|
101
|
+
task="chunk",
|
102
|
+
service_type="embedding",
|
103
|
+
chunk_size=20,
|
104
|
+
overlap=5,
|
105
|
+
metadata={"source": "test_document", "type": "educational"}
|
106
|
+
)
|
107
|
+
|
108
|
+
if result.get('success'):
|
109
|
+
chunks = result['result']
|
110
|
+
print(f"✅ Text chunking: {len(chunks)} chunks created")
|
111
|
+
for i, chunk in enumerate(chunks):
|
112
|
+
words_in_chunk = len(chunk['text'].split())
|
113
|
+
print(f" Chunk {i+1}: {words_in_chunk} words, embedding dim: {len(chunk['embedding'])}")
|
114
|
+
print(f" Text: \"{chunk['text'][:60]}...\"")
|
115
|
+
print(f" Range: words {chunk['start_index']}-{chunk['end_index']}")
|
116
|
+
print(f" Metadata: {chunk['metadata']}")
|
117
|
+
else:
|
118
|
+
print(f"❌ Text chunking failed: {result.get('error', 'Unknown error')}")
|
119
|
+
|
120
|
+
except Exception as e:
|
121
|
+
print(f"❌ Text chunking exception: {e}")
|
122
|
+
|
123
|
+
# Test 5: Document reranking (ISA service)
|
124
|
+
print("\n📌 Test 5: Document Reranking (ISA Jina Reranker v2)")
|
125
|
+
try:
|
126
|
+
result = await client.invoke(
|
127
|
+
input_data="artificial intelligence and machine learning",
|
128
|
+
task="rerank",
|
129
|
+
service_type="embedding",
|
130
|
+
documents=[
|
131
|
+
"Machine learning is a subset of artificial intelligence that uses algorithms to learn from data",
|
132
|
+
"Cooking delicious pasta requires proper timing and quality ingredients",
|
133
|
+
"Deep learning neural networks can process complex patterns in large datasets",
|
134
|
+
"The weather forecast predicts rain for tomorrow afternoon",
|
135
|
+
"Natural language processing enables computers to understand human language"
|
136
|
+
],
|
137
|
+
top_k=3,
|
138
|
+
return_documents=True
|
139
|
+
)
|
140
|
+
|
141
|
+
if result.get('success'):
|
142
|
+
rerank_results = result['result']['results']
|
143
|
+
print(f"✅ Document reranking: {len(rerank_results)} results")
|
144
|
+
for i, item in enumerate(rerank_results):
|
145
|
+
score = item.get('relevance_score', item.get('score', 0))
|
146
|
+
doc = item.get('document', item.get('text', ''))
|
147
|
+
print(f" {i+1}. Score: {score:.3f} - {doc[:60]}...")
|
148
|
+
|
149
|
+
# Show performance metrics
|
150
|
+
if 'processing_time' in result['result']:
|
151
|
+
print(f" Processing time: {result['result']['processing_time']:.3f}s")
|
152
|
+
if 'billing' in result['result']:
|
153
|
+
print(f" Cost: ${result['result']['billing'].get('estimated_cost_usd', 0):.6f}")
|
154
|
+
else:
|
155
|
+
print(f"❌ Document reranking failed: {result.get('error', 'Unknown error')}")
|
156
|
+
|
157
|
+
except Exception as e:
|
158
|
+
print(f"❌ Document reranking exception: {e}")
|
159
|
+
|
160
|
+
# Test 6: Advanced similarity with threshold
|
161
|
+
print("\n📌 Test 6: Advanced Similarity with Threshold")
|
162
|
+
try:
|
163
|
+
result = await client.invoke(
|
164
|
+
input_data="machine learning algorithms",
|
165
|
+
task="similarity",
|
166
|
+
service_type="embedding",
|
167
|
+
candidates=[
|
168
|
+
"artificial neural networks and deep learning",
|
169
|
+
"baking chocolate chip cookies recipe",
|
170
|
+
"supervised learning classification models",
|
171
|
+
"gardening tips for spring season",
|
172
|
+
"unsupervised clustering techniques"
|
173
|
+
],
|
174
|
+
top_k=3,
|
175
|
+
threshold=0.3
|
176
|
+
)
|
177
|
+
|
178
|
+
if result.get('success'):
|
179
|
+
similar_docs = result['result']['similar_documents']
|
180
|
+
print(f"✅ Advanced similarity (threshold=0.3): {len(similar_docs)} results")
|
181
|
+
for doc in similar_docs:
|
182
|
+
print(f" {doc['similarity']:.3f}: {doc['text']}")
|
183
|
+
print(f" Total candidates: {result['result']['total_candidates']}")
|
184
|
+
print(f" Returned (above threshold): {result['result']['returned_count']}")
|
185
|
+
else:
|
186
|
+
print(f"❌ Advanced similarity failed: {result.get('error', 'Unknown error')}")
|
187
|
+
|
188
|
+
except Exception as e:
|
189
|
+
print(f"❌ Advanced similarity exception: {e}")
|
190
|
+
|
191
|
+
# Test 7: Model parameter testing
|
192
|
+
print("\n📌 Test 7: Custom Model Parameters")
|
193
|
+
try:
|
194
|
+
result = await client.invoke(
|
195
|
+
input_data="Testing with custom model parameters",
|
196
|
+
task="embed",
|
197
|
+
service_type="embedding",
|
198
|
+
model="text-embedding-3-small",
|
199
|
+
provider="openai"
|
200
|
+
)
|
201
|
+
|
202
|
+
if result.get('success'):
|
203
|
+
embedding = result['result']
|
204
|
+
print(f"✅ Custom model embedding: {len(embedding)} dimensions")
|
205
|
+
print(f" Model: {result.get('metadata', {}).get('model_used', 'unknown')}")
|
206
|
+
print(f" Provider: {result.get('metadata', {}).get('provider', 'unknown')}")
|
207
|
+
else:
|
208
|
+
print(f"❌ Custom model test failed: {result.get('error', 'Unknown error')}")
|
209
|
+
|
210
|
+
except Exception as e:
|
211
|
+
print(f"❌ Custom model test exception: {e}")
|
212
|
+
|
213
|
+
except ImportError as e:
|
214
|
+
print(f"❌ Failed to import ISA client: {e}")
|
215
|
+
except Exception as e:
|
216
|
+
print(f"❌ Unexpected error: {e}")
|
217
|
+
|
218
|
+
print("\n" + "=" * 60)
|
219
|
+
print("🏁 Embedding Service Test Complete!")
|
220
|
+
|
221
|
+
if __name__ == "__main__":
|
222
|
+
asyncio.run(test_complete_embedding_service())
|
@@ -9,10 +9,10 @@ from .base_image_gen_service import BaseImageGenService
|
|
9
9
|
from .replicate_image_gen_service import ReplicateImageGenService
|
10
10
|
|
11
11
|
# Stacked Image Generation Services
|
12
|
-
from .flux_professional_service import FluxProfessionalService
|
12
|
+
# from .flux_professional_service import FluxProfessionalService # File doesn't exist
|
13
13
|
|
14
14
|
__all__ = [
|
15
15
|
'BaseImageGenService',
|
16
16
|
'ReplicateImageGenService',
|
17
|
-
'FluxProfessionalService'
|
17
|
+
# 'FluxProfessionalService' # Disabled - file doesn't exist
|
18
18
|
]
|
@@ -33,7 +33,7 @@ class BaseImageGenService(BaseService):
|
|
33
33
|
kwargs.get("negative_prompt"),
|
34
34
|
kwargs.get("width", 512),
|
35
35
|
kwargs.get("height", 512),
|
36
|
-
kwargs.get("num_inference_steps",
|
36
|
+
kwargs.get("num_inference_steps", 4),
|
37
37
|
kwargs.get("guidance_scale", 7.5),
|
38
38
|
kwargs.get("seed")
|
39
39
|
)
|
@@ -44,7 +44,7 @@ class BaseImageGenService(BaseService):
|
|
44
44
|
kwargs.get("negative_prompt"),
|
45
45
|
kwargs.get("width", 512),
|
46
46
|
kwargs.get("height", 512),
|
47
|
-
kwargs.get("num_inference_steps",
|
47
|
+
kwargs.get("num_inference_steps", 4),
|
48
48
|
kwargs.get("guidance_scale", 7.5),
|
49
49
|
kwargs.get("seed")
|
50
50
|
)
|
@@ -55,7 +55,7 @@ class BaseImageGenService(BaseService):
|
|
55
55
|
kwargs.get("negative_prompt"),
|
56
56
|
kwargs.get("width", 512),
|
57
57
|
kwargs.get("height", 512),
|
58
|
-
kwargs.get("num_inference_steps",
|
58
|
+
kwargs.get("num_inference_steps", 4),
|
59
59
|
kwargs.get("guidance_scale", 7.5),
|
60
60
|
kwargs.get("seed")
|
61
61
|
)
|
@@ -68,10 +68,27 @@ class BaseImageGenService(BaseService):
|
|
68
68
|
init_image,
|
69
69
|
kwargs.get("strength", 0.8),
|
70
70
|
kwargs.get("negative_prompt"),
|
71
|
-
kwargs.get("num_inference_steps",
|
71
|
+
kwargs.get("num_inference_steps", 4),
|
72
72
|
kwargs.get("guidance_scale", 7.5),
|
73
73
|
kwargs.get("seed")
|
74
74
|
)
|
75
|
+
elif task == "face_swap":
|
76
|
+
target_image = kwargs.get("target_image")
|
77
|
+
if not target_image:
|
78
|
+
raise ValueError("face_swap task requires target_image parameter")
|
79
|
+
if hasattr(self, 'face_swap'):
|
80
|
+
return await self.face_swap(
|
81
|
+
swap_image=prompt, # prompt contains the swap_image URL
|
82
|
+
target_image=target_image,
|
83
|
+
**{k: v for k, v in kwargs.items() if k != 'target_image'}
|
84
|
+
)
|
85
|
+
else:
|
86
|
+
raise NotImplementedError(f"{self.__class__.__name__} does not support face_swap")
|
87
|
+
elif task == "generate_sticker":
|
88
|
+
if hasattr(self, 'generate_sticker'):
|
89
|
+
return await self.generate_sticker(prompt, **kwargs)
|
90
|
+
else:
|
91
|
+
raise NotImplementedError(f"{self.__class__.__name__} does not support generate_sticker")
|
75
92
|
else:
|
76
93
|
raise NotImplementedError(f"{self.__class__.__name__} does not support task: {task}")
|
77
94
|
|
@@ -91,7 +108,7 @@ class BaseImageGenService(BaseService):
|
|
91
108
|
negative_prompt: Optional[str] = None,
|
92
109
|
width: int = 512,
|
93
110
|
height: int = 512,
|
94
|
-
num_inference_steps: int =
|
111
|
+
num_inference_steps: int = 4,
|
95
112
|
guidance_scale: float = 7.5,
|
96
113
|
seed: Optional[int] = None
|
97
114
|
) -> Dict[str, Any]:
|
@@ -125,7 +142,7 @@ class BaseImageGenService(BaseService):
|
|
125
142
|
negative_prompt: Optional[str] = None,
|
126
143
|
width: int = 512,
|
127
144
|
height: int = 512,
|
128
|
-
num_inference_steps: int =
|
145
|
+
num_inference_steps: int = 4,
|
129
146
|
guidance_scale: float = 7.5,
|
130
147
|
seed: Optional[int] = None
|
131
148
|
) -> List[Dict[str, Any]]:
|
@@ -154,7 +171,7 @@ class BaseImageGenService(BaseService):
|
|
154
171
|
init_image: Union[str, BinaryIO],
|
155
172
|
strength: float = 0.8,
|
156
173
|
negative_prompt: Optional[str] = None,
|
157
|
-
num_inference_steps: int =
|
174
|
+
num_inference_steps: int = 4,
|
158
175
|
guidance_scale: float = 7.5,
|
159
176
|
seed: Optional[int] = None
|
160
177
|
) -> Dict[str, Any]:
|