""" 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""