samyakshrestha's picture
Changed LLMs due to hitting rate limit
27d2cd5
from crewai import Agent, Crew, Process, Task, LLM
from crewai.project import CrewBase, agent, crew, task
from .tools_loader import get_tools
@CrewBase
class RadiologyCrew:
"""Multi-agent radiology report generation crew"""
def __init__(self):
# Load tools once
self.tools = get_tools()
# Initialize LLMs with optimal settings
self.vision_llm = LLM(model="groq/meta-llama/llama-4-scout-17b-16e-instruct", temperature=0.2)
self.text_llm = LLM(model="groq/llama-3.3-70b-versatile", temperature=0.1)
self.text_llm2 = LLM(model="groq/llama3-70b-8192", temperature=0.1)
self.text_llm3 = LLM(model="groq/meta-llama/llama-4-maverick-17b-128e-instruct", temperature=0.1)
self.draft_llm = LLM(model="groq/deepseek-r1-distill-llama-70b", temperature=0.3)
self.critic_llm = LLM(model="groq/meta-llama/llama-4-scout-17b-16e-instruct", temperature=0.3)
@agent
def vision_agent(self) -> Agent:
return Agent(
config=self.agents_config['vision_agent'],
tools=[self.tools["vision_tool"]],
llm=self.vision_llm,
allow_delegation=False,
verbose=False
)
@agent
def pubmed_agent(self) -> Agent:
return Agent(
config=self.agents_config['pubmed_agent'],
tools=[self.tools["pubmed_tool"]],
llm=self.text_llm2,
verbose=False
)
@agent
def iu_agent(self) -> Agent:
return Agent(
config=self.agents_config['iu_agent'],
tools=[self.tools["iu_tool"]],
llm=self.text_llm3,
verbose=False
)
@agent
def draft_agent(self) -> Agent:
return Agent(
config=self.agents_config['draft_agent'],
llm=self.draft_llm,
verbose=False
)
@agent
def critic_agent(self) -> Agent:
return Agent(
config=self.agents_config['critic_agent'],
llm=self.critic_llm,
verbose=True
)
@task
def caption_task(self) -> Task:
return Task(config=self.tasks_config['caption_task'])
@task
def pubmed_task(self) -> Task:
return Task(
config=self.tasks_config['pubmed_task'],
context=[self.caption_task()]
)
@task
def iu_task(self) -> Task:
return Task(config=self.tasks_config['iu_task'])
@task
def draft_task(self) -> Task:
return Task(
config=self.tasks_config['draft_task'],
context=[self.caption_task(), self.iu_task(), self.pubmed_task()]
)
@task
def critic_task(self) -> Task:
return Task(
config=self.tasks_config['critic_task'],
context=[self.caption_task(), self.iu_task(), self.draft_task()]
)
@crew
def crew(self) -> Crew:
return Crew(
agents=self.agents,
tasks=self.tasks,
process=Process.sequential,
verbose=False
)