增加Kimi多模态Api,这样可以灵活选择!
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
"""
|
||||
Ollama VLM Provider
|
||||
支持本地/自建 Ollama 服务
|
||||
"""
|
||||
|
||||
import os
|
||||
from typing import List
|
||||
|
||||
from .base import VLMProvider
|
||||
|
||||
|
||||
class OllamaProvider(VLMProvider):
|
||||
"""
|
||||
Ollama 本地/自建服务提供商
|
||||
使用 OpenAI-compatible API (/v1/chat/completions)
|
||||
"""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
ollama_url: str = None,
|
||||
model: str = None,
|
||||
):
|
||||
"""
|
||||
Args:
|
||||
ollama_url: Ollama 服务地址,默认从环境变量 OLLAMA_URL 读取
|
||||
model: 模型名称,默认从环境变量 VLM_MODEL 读取
|
||||
"""
|
||||
self.ollama_url = ollama_url or os.getenv("OLLAMA_URL", "http://192.168.1.250:11434")
|
||||
self.model = model or os.getenv("VLM_MODEL", "qwen2.5vl:32b")
|
||||
|
||||
def chat_vision(
|
||||
self,
|
||||
prompt: str,
|
||||
image_paths: List[str],
|
||||
temperature: float = 0.1,
|
||||
timeout_sec: int = 120,
|
||||
) -> str:
|
||||
"""调用 Ollama 服务进行视觉推理"""
|
||||
# 导入原有的 ollama_client 逻辑(复用代码)
|
||||
from .. import ollama_client
|
||||
|
||||
# 临时覆盖模块常量(确保使用实例配置)
|
||||
original_url = ollama_client.OLLAMA_URL
|
||||
original_model = ollama_client.DEFAULT_MODEL
|
||||
try:
|
||||
ollama_client.OLLAMA_URL = self.ollama_url
|
||||
ollama_client.DEFAULT_MODEL = self.model
|
||||
return ollama_client.chat_vision(
|
||||
prompt=prompt,
|
||||
image_paths=image_paths,
|
||||
temperature=temperature,
|
||||
model=self.model,
|
||||
timeout_sec=timeout_sec,
|
||||
)
|
||||
finally:
|
||||
# 恢复原始值
|
||||
ollama_client.OLLAMA_URL = original_url
|
||||
ollama_client.DEFAULT_MODEL = original_model
|
||||
|
||||
def __repr__(self):
|
||||
return f"<OllamaProvider url={self.ollama_url} model={self.model}>"
|
||||
Reference in New Issue
Block a user