@modular-prompt/driver 0.8.2 → 0.9.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.
- package/dist/anthropic/anthropic-driver.d.ts +4 -0
- package/dist/anthropic/anthropic-driver.d.ts.map +1 -1
- package/dist/anthropic/anthropic-driver.js +12 -6
- package/dist/anthropic/anthropic-driver.js.map +1 -1
- package/dist/content-utils.d.ts +12 -0
- package/dist/content-utils.d.ts.map +1 -0
- package/dist/content-utils.js +24 -0
- package/dist/content-utils.js.map +1 -0
- package/dist/formatter/converter.d.ts.map +1 -1
- package/dist/formatter/converter.js +13 -15
- package/dist/formatter/converter.js.map +1 -1
- package/dist/google-genai/google-genai-driver.d.ts +0 -4
- package/dist/google-genai/google-genai-driver.d.ts.map +1 -1
- package/dist/google-genai/google-genai-driver.js +14 -27
- package/dist/google-genai/google-genai-driver.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mlx-ml/mlx-driver.d.ts +9 -1
- package/dist/mlx-ml/mlx-driver.d.ts.map +1 -1
- package/dist/mlx-ml/mlx-driver.js +48 -7
- package/dist/mlx-ml/mlx-driver.js.map +1 -1
- package/dist/mlx-ml/process/index.d.ts +1 -1
- package/dist/mlx-ml/process/index.d.ts.map +1 -1
- package/dist/mlx-ml/process/index.js +2 -2
- package/dist/mlx-ml/process/index.js.map +1 -1
- package/dist/mlx-ml/process/model-handlers.d.ts.map +1 -1
- package/dist/mlx-ml/process/model-handlers.js +11 -5
- package/dist/mlx-ml/process/model-handlers.js.map +1 -1
- package/dist/mlx-ml/process/model-specific.d.ts +22 -1
- package/dist/mlx-ml/process/model-specific.d.ts.map +1 -1
- package/dist/mlx-ml/process/model-specific.js +28 -2
- package/dist/mlx-ml/process/model-specific.js.map +1 -1
- package/dist/mlx-ml/process/queue.d.ts +1 -1
- package/dist/mlx-ml/process/queue.d.ts.map +1 -1
- package/dist/mlx-ml/process/queue.js +3 -2
- package/dist/mlx-ml/process/queue.js.map +1 -1
- package/dist/mlx-ml/process/types.d.ts +11 -1
- package/dist/mlx-ml/process/types.d.ts.map +1 -1
- package/dist/mlx-ml/types.d.ts +10 -1
- package/dist/mlx-ml/types.d.ts.map +1 -1
- package/dist/openai/openai-driver.d.ts +2 -0
- package/dist/openai/openai-driver.d.ts.map +1 -1
- package/dist/openai/openai-driver.js +9 -4
- package/dist/openai/openai-driver.js.map +1 -1
- package/dist/types.d.ts +13 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/vertexai/vertexai-driver.d.ts.map +1 -1
- package/dist/vertexai/vertexai-driver.js +5 -4
- package/dist/vertexai/vertexai-driver.js.map +1 -1
- package/package.json +1 -1
- package/src/mlx-ml/python/__main__.py +66 -6
- package/src/mlx-ml/python/pyproject.toml +5 -0
- package/src/mlx-ml/python/token_utils.py +17 -10
- package/src/mlx-ml/python/uv.lock +1332 -48
- package/src/mlx-ml/python/vlm_utils.py +69 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"""mlx-vlm モデル種別判定・画像処理ユーティリティ"""
|
|
2
|
+
|
|
3
|
+
import json
|
|
4
|
+
from pathlib import Path
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def detect_model_kind(model_name: str) -> str:
|
|
8
|
+
"""config.json の model_type から mlx_vlm の対応可否を判定する。
|
|
9
|
+
|
|
10
|
+
mlx_vlm.models.{model_type} が存在すれば "vlm"、なければ "lm" を返す。
|
|
11
|
+
mlx-vlm 自体がインストールされていない場合も "lm" を返す。
|
|
12
|
+
|
|
13
|
+
Args:
|
|
14
|
+
model_name: HuggingFaceモデル名(例: "mlx-community/Qwen2-VL-2B-Instruct-4bit")
|
|
15
|
+
|
|
16
|
+
Returns:
|
|
17
|
+
"vlm" or "lm"
|
|
18
|
+
"""
|
|
19
|
+
model_type = _get_model_type(model_name)
|
|
20
|
+
if not model_type:
|
|
21
|
+
return "lm"
|
|
22
|
+
|
|
23
|
+
try:
|
|
24
|
+
import importlib
|
|
25
|
+
importlib.import_module(f"mlx_vlm.models.{model_type}")
|
|
26
|
+
return "vlm"
|
|
27
|
+
except (ImportError, ModuleNotFoundError):
|
|
28
|
+
return "lm"
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def load_and_resize_images(paths: list[str], max_size: int = 768):
|
|
32
|
+
"""画像ファイルを読み込み、必要に応じてリサイズする。
|
|
33
|
+
|
|
34
|
+
最大辺が max_size を超える場合、アスペクト比を維持して縮小する。
|
|
35
|
+
|
|
36
|
+
Args:
|
|
37
|
+
paths: 画像ファイルパスのリスト
|
|
38
|
+
max_size: 最大辺ピクセル数(デフォルト: 768)
|
|
39
|
+
|
|
40
|
+
Returns:
|
|
41
|
+
PIL Image オブジェクトのリスト
|
|
42
|
+
"""
|
|
43
|
+
from PIL import Image
|
|
44
|
+
|
|
45
|
+
images = []
|
|
46
|
+
for path in paths:
|
|
47
|
+
img = Image.open(path)
|
|
48
|
+
w, h = img.size
|
|
49
|
+
if max(w, h) > max_size:
|
|
50
|
+
scale = max_size / max(w, h)
|
|
51
|
+
img = img.resize((int(w * scale), int(h * scale)), Image.LANCZOS)
|
|
52
|
+
images.append(img)
|
|
53
|
+
return images
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def _get_model_type(model_name: str) -> str | None:
|
|
57
|
+
"""モデルのconfig.jsonからmodel_typeを取得する。
|
|
58
|
+
|
|
59
|
+
huggingface_hubのキャッシュからローカルのconfig.jsonを探す。
|
|
60
|
+
見つからない場合はNoneを返す。
|
|
61
|
+
"""
|
|
62
|
+
try:
|
|
63
|
+
from huggingface_hub import hf_hub_download
|
|
64
|
+
config_path = hf_hub_download(model_name, "config.json")
|
|
65
|
+
with open(config_path) as f:
|
|
66
|
+
config = json.load(f)
|
|
67
|
+
return config.get("model_type", "").lower()
|
|
68
|
+
except Exception:
|
|
69
|
+
return None
|