lucadipalma
add max_new_tokens to huggingface models; modifed graph initiation;
7a75ca8
import support.settings as settings
from langchain_anthropic import ChatAnthropic
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain_huggingface import ChatHuggingFace, HuggingFaceEndpoint
from langchain_openai import ChatOpenAI
def create_model(model_name: str, api_keys: dict):
"""Factory function to create model instances based on model name."""
# OpenAI models
if model_name.startswith("gpt-"):
if model_name == "gpt-4.1-nano":
return ChatOpenAI(
model=model_name,
temperature=0,
timeout=None,
max_retries=1,
streaming=True,
api_key=api_keys['OPENAI_API_KEY']
)
else:
reasoning = {
"effort": "low", # 'low', 'medium', or 'high'
"summary": "auto", # 'detailed', 'auto', or None
}
return ChatOpenAI(
model=model_name,
temperature=0,
timeout=None,
max_retries=1,
streaming=True,
reasoning=reasoning,
api_key=api_keys['OPENAI_API_KEY']
)
# Google models
elif model_name.startswith("gemini-"):
return ChatGoogleGenerativeAI(
model=model_name,
temperature=0,
timeout=None,
max_retries=1,
streaming=True,
include_thoughts=True,
api_key=api_keys['GOOGLE_API_KEY']
)
# Anthropic models
elif model_name.startswith("claude-"):
if model_name in ["claude-sonnet-4-5-20250929", "claude-3-7-sonnet-20250219"]:
return ChatAnthropic(
model=model_name,
temperature=1,
timeout=None,
max_retries=1,
streaming=True,
api_key=api_keys['ANTHROPIC_API_KEY'],
thinking={"type": "enabled", "budget_tokens": 1024},
)
else:
return ChatAnthropic(
model=model_name,
temperature=0,
timeout=None,
max_retries=1,
streaming=True,
api_key=api_keys['ANTHROPIC_API_KEY']
)
elif model_name in ["openai/gpt-oss-120b", "deepseek-ai/DeepSeek-V3.1", "Qwen/Qwen3-235B-A22B-Instruct-2507", "openai/gpt-oss-20b", "moonshotai/Kimi-K2-Thinking", "deepseek-ai/DeepSeek-R1"]:
provider_dict = {
"openai/gpt-oss-120b": "novita",
"deepseek-ai/DeepSeek-V3.1": "novita",
"Qwen/Qwen3-235B-A22B-Instruct-2507": "novita",
"openai/gpt-oss-20b": "together",
"moonshotai/Kimi-K2-Thinking": "together",
"deepseek-ai/DeepSeek-R1": "novita"
}
llm = HuggingFaceEndpoint(
repo_id=model_name,
task="text-generation",
provider=provider_dict[model_name],
streaming=True,
temperature=0,
top_p=0,
huggingfacehub_api_token=api_keys['HUGGINGFACEHUB_API_TOKEN'],
max_new_tokens=1600
)
return ChatHuggingFace(llm=llm, verbose=True)
else:
raise ValueError(f"Unknown model: {model_name}")