samyakshrestha's picture
Changed LLMs due to hitting rate limit
27d2cd5
raw
history blame
3.06 kB
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
)