import os
from loguru import logger
# from vllm import LLM, SamplingParams
from langchain_ollama import ChatOllama
from langchain_core.messages import HumanMessage

# 自动下载模型时，指定使用modelscope; 否则，会从HuggingFace下载
os.environ['VLLM_USE_MODELSCOPE']='True'

# def get_completion(prompts, model, tokenizer=None, max_tokens=512, temperature=0.8, top_p=0.95, max_model_len=2048):
#     stop_token_ids = [151329, 151336, 151338]
#     # 创建采样参数。temperature 控制生成文本的多样性，top_p 控制核心采样的概率
#     sampling_params = SamplingParams(temperature=temperature, top_p=top_p, max_tokens=max_tokens, stop_token_ids=stop_token_ids)
#     # 初始化 vLLM 推理引擎
#     llm = LLM(model=model, tokenizer=tokenizer, max_model_len=max_model_len,trust_remote_code=True)
#     outputs = llm.generate(prompts, sampling_params)
#     return outputs

def vl_test():
    logger.info("vl_test")
    
    # 使用LangChain 1.x的ChatOllama类创建客户端
    client = ChatOllama(
        base_url="http://192.168.10.11:11434",
        model="llava-phi3:latest", # "qwen3-vl:8b",
        temperature=0.7,
    )
    
    # 测试调用qwen3-vl:8b视觉大模型
    try:
        # 使用LangChain 1.x的方式构建消息
        message = HumanMessage(
            content=[
                {
                    "type": "text",
                    "text": "请描述这张图片的内容"
                },
                # 如果需要添加图像，可以使用以下格式：
                # {
                #     "type": "image_url",
                #     "image_url": {
                #         "url": "https://example.com/image.jpg"  # 或者base64编码的图片数据
                #     }
                # }
            ]
        )
        
        # 调用模型
        response = client.invoke([message])
        
        # 获取模型响应
        result = response.content
        logger.info(f"qwen3-vl:8b响应: {result}")
        return result
    except Exception as e:
        logger.error(f"调用qwen3-vl:8b失败: {e}")
        raise e


# 如果直接运行该文件，执行测试
if __name__ == "__main__":
    vl_test()