티스토리 뷰
Ollama + CrewAI + FastAPI를 활용한 한국 주식 분석 블로그 - CrewAI 분석 에이전트 구성 최적화
octo54 2025. 3. 8. 02:43Ollama + CrewAI + FastAPI를 활용한 한국 주식 분석 블로그 -
📌 1단계: CrewAI 분석 에이전트 구성 최적화
이 글에서는 CrewAI의 분석 에이전트를 최적화하여 다양한 관점에서 한국 주식 시장을 분석하는 방법을 다룹니다.
이를 위해 긍정(Positive), 부정(Negative), 중립(Neutrality) 3명 + 의견 종합 분석 1명, 총 4개의 투자 전문가 에이전트를 구성합니다.
✅ CrewAI의 멀티 에이전트 방식 이해
✅ 각 에이전트의 역할 정의 및 agents.yaml 설정
✅ CrewAI 작업(Task) 정의 및 tasks.yaml 설정
✅ crew.py에서 CrewAI 실행 방식 설정 (@agent, @task, @crew 적용, Process.sequential 사용)
✅ main.py에서 CrewAI 실행 및 최종 분석 결과 확인
1.1 CrewAI의 역할 및 분석 방식
1.1.1 CrewAI의 멀티 에이전트 협업 방식
CrewAI는 여러 개의 에이전트가 협업하여 특정 작업을 수행하는 구조입니다.
이 프로젝트에서는 긍정, 부정, 중립 분석을 수행한 후, 최종적으로 이를 종합하여 리포트를 작성하는 방식을 사용합니다.
1.1.2 기존 단일 분석 방식과 CrewAI 방식의 차이점
구분 기존 단일 AI 분석 CrewAI 멀티 에이전트 분석
분석 방식 | 단일 LLM이 전체 분석 수행 | 여러 LLM이 개별 분석 후 최종 종합 |
의견 수렴 | 하나의 관점에서 분석 | 다양한 관점을 반영 |
결과의 신뢰성 | 단일 관점으로 편향 가능 | 긍정, 부정, 중립적 분석을 종합하여 균형 잡힌 결과 제공 |
1.2 CrewAI 에이전트 구성 및 역할 정의
이제 CrewAI의 4개 에이전트를 구성하고, 각 역할을 정의합니다.
모든 에이전트는 **투자 전문가(Investment Expert)**로 설정됩니다.
에이전트 역할 분석 방식
긍정적(Positive) 분석 에이전트 | 시장의 긍정적 요소 분석 | 강세장, 긍정적 뉴스, 투자 기회 탐색 |
부정적(Negative) 분석 에이전트 | 시장의 부정적 요소 분석 | 약세장, 위험 요소, 하락 위험 평가 |
중립적(Neutrality) 분석 에이전트 | 전체적인 시장 상황 분석 | 긍정과 부정 요소를 균형 있게 평가 |
의견 종합(Summary) 분석 에이전트 | 3명의 분석 내용을 종합하여 최종 리포트 작성 | 긍정, 부정, 중립 의견을 반영한 균형 잡힌 분석 |
1.3 CrewAI 실행 코드 (crew.py)
CrewAI 실행을 위한 crew.py 파일을 작성합니다.
이 파일에서 @agent, @task, @crew를 정의하며 실행은 main.py에서 수행됩니다.
또한, 에이전트의 실행 순서를 유지하기 위해 Process.sequential을 사용합니다.
from crewai import Agent, Crew, Process, Task, LLM
from crewai.project import CrewBase, agent, crew, task
@CrewBase
class StockAnalysisCrew():
"""Stock Analysis Crew"""
def __init__(self):
self.llm = LLM(
model="ollama/deepseek-r1:8b",
base_url="http://localhost:11434"
)
@agent
def positive_analyst(self) -> Agent:
return Agent(config=self.agents_config['positive_analyst'], llm=self.llm)
@agent
def negative_analyst(self) -> Agent:
return Agent(config=self.agents_config['negative_analyst'], llm=self.llm)
@agent
def neutrality_analyst(self) -> Agent:
return Agent(config=self.agents_config['neutrality_analyst'], llm=self.llm)
@agent
def summary_analyst(self) -> Agent:
return Agent(config=self.agents_config['summary_analyst'], llm=self.llm)
@task
def positive_analysis(self) -> Task:
return Task(config=self.tasks_config['positive_analysis'])
@task
def negative_analysis(self) -> Task:
return Task(config=self.tasks_config['negative_analysis'])
@task
def neutrality_analysis(self) -> Task:
return Task(config=self.tasks_config['neutrality_analysis'])
@task
def summary_analysis(self) -> Task:
return Task(config=self.tasks_config['summary_analysis'], output_file="daily_korean_stock_report.md")
@crew
def crew(self) -> Crew:
return Crew(
agents=self.agents,
tasks=self.tasks,
process=Process.sequential, # 순차 실행 방식 적용
verbose=True,
)
1.4 CrewAI 실행 (main.py)
이제 main.py에서 CrewAI를 실행합니다.
from crew import StockAnalysisCrew
def run():
inputs = {
'topic': 'Korean Stock Market Analysis'
}
StockAnalysisCrew().crew().kickoff(inputs=inputs)
if __name__ == "__main__":
run()
📌 정리 및 다음 단계
이제 CrewAI 분석 에이전트 구성을 최적화하고 실행할 준비를 마쳤습니다.
✅ CrewAI 분석 방식 및 멀티 에이전트 구조 이해
✅ agents.yaml을 활용한 투자 전문가 에이전트 설정
✅ tasks.yaml을 활용한 CrewAI 작업 정의
✅ crew.py에서 @agent, @task, @crew 설정 (Process.sequential 적용)
✅ main.py에서 CrewAI 실행 테스트 완료
🔜 다음 글 예고: 2단계 - 주식 데이터 수집 및 CrewAI 활용
다음 글에서는 FinanceDataReader를 활용하여 CrewAI에서 사용할 한국 주식 데이터를 수집하는 방법을 다룹니다. 🚀
'project > Ollama + CrewAI + FastAPI를 활용한 한국 주식 분석' 카테고리의 다른 글
- Total
- Today
- Yesterday
- Webpack
- nodejs
- 백엔드개발
- REACT
- 백엔드
- 관리자
- AI챗봇
- til
- github
- 리액트
- LangChain
- kotlin
- Python
- 로컬LLM
- rag
- Ktor
- 웹개발
- 프론트엔드
- Docker
- llm
- 개발블로그
- babel
- Next.js
- nextJS
- PostgreSQL
- fastapi
- 챗봇개발
- 페이지
- Project
- Page
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |