Here you go
crew.py
from crewai import Agent, Crew, Process, Task
from crewai.knowledge.source.string_knowledge_source import StringKnowledgeSource
from crewai.project import CrewBase, agent, crew, task
from pydantic import BaseModel
class Response(BaseModel):
content: str
@CrewBase
class HrSlackBotCrew():
"""HrSlackBot crew"""
def __init__(self, knowledge: str = None):
if knowledge:
self.string_source = StringKnowledgeSource(
content=knowledge,
)
else:
self.string_source = None
@agent
def hr_agent(self) -> Agent:
return Agent(
config=self.agents_config['hr_agent'],
)
@task
def hr_task(self) -> Task:
return Task(
config=self.tasks_config['hr_task'],
output_json=Response,
)
@crew
def hr_crew(self) -> Crew:
"""Creates the HR Agent crew"""
return Crew(
agents=[self.hr_agent()], # Automatically created by the @agent decorator
tasks=[self.hr_task()], # Automatically created by the @task decorator
process=Process.sequential,
verbose=True,
knowledge_sources=[self.string_source] if self.string_source else None,
embedder={
"provider": "google",
"config": {
"model_name": "models/embedding-001"
}
}
)
1. Execution without Knowledge
def run():
"""
Run the crew.
"""
inputs = {
"user": "Subbu",
"query": "Who is John?",
'context': "Subbu: Hi, good morning."
}
HrSlackBotCrew().hr_crew().kickoff(inputs=inputs)
Output:
# Agent: HR Associate
## Final Answer:
```json
{
"content": "Hi Subbu! 👋 Good morning to you too!\n\nI'm afraid I don't have access to personal information about other employees. It's important to protect everyone's privacy. 😊\n\nIf you have any HR policy questions, I'd be happy to help! For this particular question, you might want to ask someone else. Let me know if there's anything else I can assist you with!"
}
2. Execution with Knowledge
def run():
"""
Run the crew.
"""
inputs = {
"user": "Subbu",
"query": "Who is John?",
'context': "Subbu: Hi, good morning."
}
HrSlackBotCrew("Employee name is John. He is 30 years old and lives in San Francisco.").hr_crew().kickoff(inputs=inputs)
Error:
File "/crewai/hr_slack_bot/.venv/lib/python3.12/site-packages/crewai/project/crew_base.py", line 26, in __init__
super().__init__(*args, **kwargs)
File "/crewai/hr_slack_bot/src/hr_slack_bot/crew.py", line 24, in __init__
self.string_source = StringKnowledgeSource(
^^^^^^^^^^^^^^^^^^^^^^
File "/crewai/hr_slack_bot/.venv/lib/python3.12/site-packages/pydantic/main.py", line 214, in __init__
validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/crewai/hr_slack_bot/.venv/lib/python3.12/site-packages/crewai/knowledge/storage/knowledge_storage.py", line 51, in __init__
self._set_embedder_config(embedder_config)
File "/crewai/hr_slack_bot/.venv/lib/python3.12/site-packages/crewai/knowledge/storage/knowledge_storage.py", line 174, in _set_embedder_config
else self._create_default_embedding_function()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/crewai/hr_slack_bot/.venv/lib/python3.12/site-packages/crewai/knowledge/storage/knowledge_storage.py", line 158, in _create_default_embedding_function
return OpenAIEmbeddingFunction(
^^^^^^^^^^^^^^^^^^^^^^^^
File "/crewai/hr_slack_bot/.venv/lib/python3.12/site-packages/chromadb/utils/embedding_functions/openai_embedding_function.py", line 56, in __init__
raise ValueError(
ValueError: Please provide an OpenAI API key. You can get one at https://platform.openai.com/account/api-keys
An error occurred while running the crew: Command '['uv', 'run', 'run_crew']' returned non-zero exit status 1.