Phidata / config.py
tamirgz's picture
first add
1be3350
raw
history blame
4.11 kB
"""Configuration settings for the web search and report generation system."""
from phi.model.groq import Groq
from phi.model.together import Together
from phi.model.huggingface import HuggingFaceChat
# DEFAULT_TOPIC = "Is there a process of establishment of Israeli Military or Offensive Cyber Industry in Australia?"
# # Initial websites for crawling
# INITIAL_WEBSITES = [
# "https://www.bellingcat.com/",
# "https://worldview.stratfor.com/",
# "https://thesoufancenter.org/",
# "https://www.globalsecurity.org/",
# "https://www.defenseone.com/"
# ]
# Model configuration
SEARCHER_MODEL_CONFIG = {
"id": "Trelis/Meta-Llama-3-70B-Instruct-function-calling",
"temperature": 0.4,
"top_p": 0.3,
"repetition_penalty": 1
}
# Model configuration
WRITER_MODEL_CONFIG = {
"id": "Trelis/Meta-Llama-3-70B-Instruct-function-calling",
"temperature": 0.2,
"top_p": 0.2,
"repetition_penalty": 1
}
# Review criteria thresholds
REVIEW_THRESHOLDS = {
"min_word_count": 2000,
"min_score": 7,
"min_avg_score": 8,
"max_iterations": 5
}
# Crawler settings
CRAWLER_CONFIG = {
"max_pages_per_site": 10,
"min_relevance_score": 0.5
}
def get_hf_model(purpose: str) -> HuggingFaceChat:
"""
Factory function to create HuggingFaceChat models with specific configurations.
Args:
purpose: Either 'searcher' or 'writer' to determine which configuration to use
Returns:
Configured HuggingFaceChat model instance
"""
if purpose == 'searcher':
return HuggingFaceChat(
id=SEARCHER_MODEL_CONFIG["id"],
api_key=os.getenv("HF_API_KEY"),
temperature=SEARCHER_MODEL_CONFIG["temperature"],
top_p=SEARCHER_MODEL_CONFIG["top_p"],
)
elif purpose == 'writer':
return HuggingFaceChat(
id=WRITER_MODEL_CONFIG["id"],
api_key=os.getenv("HF_API_KEY"),
temperature=WRITER_MODEL_CONFIG["temperature"],
top_p=WRITER_MODEL_CONFIG["top_p"]
)
else:
raise ValueError(f"Unknown purpose: {purpose}. Must be 'searcher' or 'writer'")
def get_together_model(purpose: str) -> Together:
"""
Factory function to create Together models with specific configurations.
Args:
purpose: Either 'searcher' or 'writer' to determine which configuration to use
Returns:
Configured Together model instance
"""
if purpose == 'searcher':
return Together(
id=SEARCHER_MODEL_CONFIG["id"],
api_key=TOGETHER_API_KEY,
temperature=SEARCHER_MODEL_CONFIG["temperature"],
top_p=SEARCHER_MODEL_CONFIG["top_p"],
repetition_penalty=SEARCHER_MODEL_CONFIG["repetition_penalty"]
)
elif purpose == 'writer':
return Together(
id=WRITER_MODEL_CONFIG["id"],
api_key=TOGETHER_API_KEY,
temperature=WRITER_MODEL_CONFIG["temperature"],
top_p=WRITER_MODEL_CONFIG["top_p"],
repetition_penalty=WRITER_MODEL_CONFIG["repetition_penalty"]
)
else:
raise ValueError(f"Unknown purpose: {purpose}. Must be 'searcher' or 'writer'")
def get_groq_model(purpose: str) -> Groq:
"""
Factory function to create Groq models with specific configurations.
Args:
purpose: Either 'searcher' or 'writer' to determine which configuration to use
Returns:
Configured Groq model instance
"""
if purpose == 'searcher':
return Groq(
id=SEARCHER_MODEL_CONFIG["id"],
api_key=GROQ_API_KEY,
temperature=SEARCHER_MODEL_CONFIG["temperature"],
top_p=SEARCHER_MODEL_CONFIG["top_p"]
)
elif purpose == 'writer':
return Groq(
id=WRITER_MODEL_CONFIG["id"],
api_key=GROQ_API_KEY,
temperature=WRITER_MODEL_CONFIG["temperature"],
top_p=WRITER_MODEL_CONFIG["top_p"]
)
else:
raise ValueError(f"Unknown purpose: {purpose}. Must be 'searcher' or 'writer'")