Local branch had diverged from origin/master (sibling commits on the same base). Rewrote local history linearly on top of origin/master, folding in all local content: exa/hot-platform discovery hunters, leaks ledger, nightly sweep orchestrator, updated .gitignore and skill docs, plus the latest hunt output and vault state. Remote-only files (vault keys, channel scripts) were restored rather than dropped, so the resulting tree is a full union of both sides.
1 line
5.8 KiB
JSON
1 line
5.8 KiB
JSON
{"repo": "adiwanwade/webhawkai", "files": {"tests/test_llm_api.py": {"adfba084c6d6bd7a2c5a59ad26aa28b8b11ee59a": {"t": 1786068464.1243398, "n": 5418, "h": "cf2a64600e3f323b", "c": "import os\nimport pdb\nfrom dataclasses import dataclass\n\nfrom dotenv import load_dotenv\nfrom langchain_core.messages import HumanMessage, SystemMessage\nfrom langchain_ollama import ChatOllama\n\nload_dotenv()\n\nimport sys\n\nsys.path.append(\".\")\n\n\n@dataclass\nclass LLMConfig:\n provider: str\n model_name: str\n temperature: float = 0.8\n base_url: str = None\n api_key: str = None\n\n\ndef create_message_content(text, image_path=None):\n content = [{\"type\": \"text\", \"text\": text}]\n image_format = \"png\" if image_path and image_path.endswith(\".png\") else \"jpeg\"\n if image_path:\n from src.utils import utils\n image_data = utils.encode_image(image_path)\n content.append({\n \"type\": \"image_url\",\n \"image_url\": {\"url\": f\"data:image/{image_format};base64,{image_data}\"}\n })\n return content\n\n\ndef get_env_value(key, provider):\n env_mappings = {\n \"openai\": {\"api_key\": \"OPENAI_API_KEY\", \"base_url\": \"OPENAI_ENDPOINT\"},\n \"azure_openai\": {\"api_key\": \"AZURE_OPENAI_API_KEY\", \"base_url\": \"AZURE_OPENAI_ENDPOINT\"},\n \"google\": {\"api_key\": \"GOOGLE_API_KEY\"},\n \"deepseek\": {\"api_key\": \"DEEPSEEK_API_KEY\", \"base_url\": \"DEEPSEEK_ENDPOINT\"},\n \"mistral\": {\"api_key\": \"MISTRAL_API_KEY\", \"base_url\": \"MISTRAL_ENDPOINT\"},\n \"alibaba\": {\"api_key\": \"ALIBABA_API_KEY\", \"base_url\": \"ALIBABA_ENDPOINT\"},\n \"moonshot\": {\"api_key\": \"MOONSHOT_API_KEY\", \"base_url\": \"MOONSHOT_ENDPOINT\"},\n \"ibm\": {\"api_key\": \"IBM_API_KEY\", \"base_url\": \"IBM_ENDPOINT\"}\n }\n\n if provider in env_mappings and key in env_mappings[provider]:\n return os.getenv(env_mappings[provider][key], \"\")\n return \"\"\n\n\ndef test_llm(config, query, image_path=None, system_message=None):\n from src.utils import utils, llm_provider\n\n # Special handling for Ollama-based models\n if config.provider == \"ollama\":\n if \"deepseek-r1\" in config.model_name:\n from src.utils.llm_provider import DeepSeekR1ChatOllama\n llm = DeepSeekR1ChatOllama(model=config.model_name)\n else:\n llm = ChatOllama(model=config.model_name)\n\n ai_msg = llm.invoke(query)\n print(ai_msg.content)\n if \"deepseek-r1\" in config.model_name:\n pdb.set_trace()\n return\n\n # For other providers, use the standard configuration\n llm = llm_provider.get_llm_model(\n provider=config.provider,\n model_name=config.model_name,\n temperature=config.temperature,\n base_url=config.base_url or get_env_value(\"base_url\", config.provider),\n api_key=config.api_key or get_env_value(\"api_key\", config.provider)\n )\n\n # Prepare messages for non-Ollama models\n messages = []\n if system_message:\n messages.append(SystemMessage(content=create_message_content(system_message)))\n messages.append(HumanMessage(content=create_message_content(query, image_path)))\n ai_msg = llm.invoke(messages)\n\n # Handle different response types\n if hasattr(ai_msg, \"reasoning_content\"):\n print(ai_msg.reasoning_content)\n print(ai_msg.content)\n\ndef test_openai_model():\n config = LLMConfig(provider=\"openai\", model_name=\"gpt-4o\")\n test_llm(config, \"Describe this image\", \"assets/examples/test.png\")\n\n\ndef test_google_model():\n # Enable your API key first if you haven't: https://ai.google.dev/palm_docs/oauth_quickstart\n config = LLMConfig(provider=\"google\", model_name=\"gemini-2.5-flash\")\n test_llm(config, \"Describe this image\", \"assets/examples/test.png\")\n\n\ndef test_azure_openai_model():\n config = LLMConfig(provider=\"azure_openai\", model_name=\"gpt-4o\")\n test_llm(config, \"Describe this image\", \"assets/examples/test.png\")\n\n\ndef test_deepseek_model():\n config = LLMConfig(provider=\"deepseek\", model_name=\"deepseek-chat\")\n test_llm(config, \"Who are you?\")\n\n\ndef test_deepseek_r1_model():\n config = LLMConfig(provider=\"deepseek\", model_name=\"deepseek-reasoner\")\n test_llm(config, \"Which is greater, 9.11 or 9.8?\", system_message=\"You are a helpful AI assistant.\")\n\n\ndef test_ollama_model():\n config = LLMConfig(provider=\"ollama\", model_name=\"qwen2.5:7b\")\n test_llm(config, \"Sing a ballad of LangChain.\")\n\n\ndef test_deepseek_r1_ollama_model():\n config = LLMConfig(provider=\"ollama\", model_name=\"deepseek-r1:14b\")\n test_llm(config, \"How many 'r's are in the word 'strawberry'?\")\n\n\ndef test_mistral_model():\n config = LLMConfig(provider=\"mistral\", model_name=\"pixtral-large-latest\")\n test_llm(config, \"Describe this image\", \"assets/examples/test.png\")\n\n\ndef test_moonshot_model():\n config = LLMConfig(provider=\"moonshot\", model_name=\"moonshot-v1-32k-vision-preview\")\n test_llm(config, \"Describe this image\", \"assets/examples/test.png\")\n\n\ndef test_ibm_model():\n config = LLMConfig(provider=\"ibm\", model_name=\"meta-llama/llama-4-maverick-17b-128e-instruct-fp8\")\n test_llm(config, \"Describe this image\", \"assets/examples/test.png\")\n\n\ndef test_qwen_model():\n config = LLMConfig(provider=\"alibaba\", model_name=\"qwen-vl-max\")\n test_llm(config, \"How many 'r's are in the word 'strawberry'?\")\n\n\nif __name__ == \"__main__\":\n # test_openai_model()\n # test_google_model()\n test_azure_openai_model()\n # test_deepseek_model()\n # test_ollama_model()\n # test_deepseek_r1_model()\n # test_deepseek_r1_ollama_model()\n # test_mistral_model()\n # test_ibm_model()\n # test_qwen_model()\n"}}}} |