File size: 1,508 Bytes
02d44c3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import os
from langchain_openai import ChatOpenAI
from langchain_google_genai import ChatGoogleGenerativeAI
from dotenv import load_dotenv

load_dotenv()

def get_llm(model_type="text", temperature=0.1):
    """
    Factory to get the appropriate LLM based on task type.
    
    Args:
        model_type: "text" (DeepSeek) or "vision" (Gemini)
        temperature: Creativity level
    """
    
    # Prioritize Gemini as requested for the demo
    google_key = os.getenv("GOOGLE_API_KEY")
    if google_key:
        return ChatGoogleGenerativeAI(
            model="gemini-2.5-flash", 
            temperature=temperature,
            google_api_key=google_key
        )
    
    if model_type == "text":
        api_key = os.getenv("DEEPSEEK_API_KEY")
        if not api_key:
            raise ValueError("No API keys found (DeepSeek or Google)")
            
        return ChatOpenAI(
            model="deepseek-chat",
            api_key=api_key,
            base_url="https://api.deepseek.com",
            temperature=temperature
        )
        
    elif model_type == "vision":
        # Vision specific logic if needed, but Gemini handles both
        if google_key:
            return ChatGoogleGenerativeAI(
                model="gemini-2.5-flash", 
                temperature=temperature,
                google_api_key=google_key
            )
        raise ValueError("Google API Key required for vision")
        
    else:
        raise ValueError(f"Unknown model_type: {model_type}")