Skip to content
This repository was archived by the owner on Jul 25, 2026. It is now read-only.
PommitPublic archive

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

포트폴리오 생성 에이전트

pommit은 기업 요구 역량 분석과 사용자 보유 역량 분석을 결합해 포트폴리오 생성을 지원하는 멀티 에이전트 프로젝트입니다. company_analyzer는 이 전체 프로젝트 안에서 기업 분석 파이프라인을 담당하는 오케스트레이터 영역입니다. 현재 레포는 서비스 전체 에이전트 구성을 포함하며, 각 에이전트는 입출력/연결 검증 중심의 최소 기능(MVP 초기 단계)으로 구현되어 있습니다.

프로젝트 개요

  • 기업 분석: JD, 기술 블로그, 제품/솔루션, 저장소 근거를 수집해 요구 역량을 구조화
  • 사용자 분석: 사용자 저장소를 기반으로 프로젝트 개요와 커밋 단위 역량 신호를 생성
  • 통합 목표: 기업 요구 역량과 사용자 보유 역량을 매핑해 포트폴리오 생성
  • 현재는 파이프라인별 최소 기능을 우선 구현하여 에이전트 간 I/O 계약과 오케스트레이션 동작을 검증

주요 기능

  • company/orchestrator_agent: 기업 분석 파이프라인 총괄 오케스트레이션
  • user/orchestrator_agent: 사용자 분석 파이프라인 총괄 오케스트레이션
  • repository_agent: Python 코드 수집/AST 분석/그래프 산출물 생성
  • service_agent: outputs/ 기반 제품/솔루션 근거 추출 및 정리
  • job_description_agent: 채용공고(JD)에서 필수/우대 요구 역량 추출
  • tech_blog_agent: 기술 블로그 기반 요구 역량 추출
  • collector_agent + requirement_agent: 근거 통합 및 JD-근거 매핑
  • raw_agent, outline_agent, commit_agent, episode_agent: 사용자 프로젝트/커밋 분석 파이프라인 구성
  • portfolio/portfolio_agent: company/user 분석 결과를 받아 포트폴리오 Markdown 생성 (HTTP API 포함)

프로젝트 구조

pommit/
└── app/agents/
    ├── company/                            # 기업 분석 계열 에이전트
    │   ├── orchestrator_agent/
    │   ├── repository_agent/
    │   ├── service_agent/
    │   ├── tech_blog_agent/
    │   ├── job_description_agent/
    │   ├── collector_agent/
    │   └── requirement_agent/
    ├── user/                               # 사용자 분석 계열 에이전트
    │   ├── orchestrator_agent/
    │   ├── raw_agent/
    │   ├── outline_agent/
    │   ├── commit_agent/
    │   └── episode_agent/
    ├── portfolio/                          # 포트폴리오 에이전트
    │   └── portfolio_agent/
    └── config/agents/                      # 에이전트 입력 샘플 설정

오케스트레이션/아키텍처 그래프

flowchart LR
    startNode([START])
    endNode([END])

    startNode --> portfolioAgent[portfolio_agent]
    portfolioAgent --> endNode
Loading

현재 구현된 오케스트레이터 그래프:

flowchart LR
    startNode([START]) --> repoAgent[repository_agent]
    startNode --> serviceAgent[service_agent]
    startNode --> blogAgent[tech_blog_agent]
    startNode --> jdAgent[job_description_agent]

    repoAgent --> collectorAgent[collector_agent]
    serviceAgent --> collectorAgent
    blogAgent --> collectorAgent

    collectorAgent --> requirementAgent[requirement_agent]
    jdAgent --> requirementAgent
    requirementAgent --> endNode([END])
Loading
  • 기업 오케스트레이터: app/agents/company/orchestrator_agent/graph.py
  • 사용자 오케스트레이터: app/agents/user/orchestrator_agent/graph.py

사용자 오케스트레이터(에이전트 단위 추상화) 그래프:

flowchart LR
    startNode([START]) --> rawAgent[raw_agent]
    rawAgent --> outlineAgent[outline_agent]
    rawAgent --> commitAgent[commit_agent]
    outlineAgent --> episodeAgent[episode_agent]
    commitAgent --> episodeAgent
    episodeAgent --> endNode([END])
Loading
  • 구현상 user_orchestrator_agent는 stage 노드(run_raw, run_outline, run_caiv, run_episode)로 구성되며, 각 stage에서 하위 에이전트를 호출하는 방식으로 동작합니다.

실행 방법

1) 기업 분석 오케스트레이터 실행

bash script/run_orchestrator_agent.sh

2) 기업 분석 개별 에이전트 실행

bash script/run_repository_agent.sh https://github.com/octocat/Hello-World.git
bash script/run_service_agent.sh Upstage
uv run python -m app.agents.job_description_agent.graph --url "https://example.com/jobs/12345"
uv run python -m app.agents.tech_blog_agent.graph --text /path/to/blog.txt

3) 사용자 분석 오케스트레이터 실행

uv run python -m app.agents.user_orchestrator_agent.graph --repository-url https://github.com/VectorSophie/Smartpick

4) 사용자 분석 개별 에이전트 실행

uv run python -m app.agents.raw_agent.graph --repository-url https://github.com/VectorSophie/Smartpick
bash script/run_outline_agent.sh app/agents/raw_agent/data/output/Smartpick/raw_output.json Smartpick
uv run python -m app.agents.commit_agent.graph --commit-low-data-path app/agents/commit_agent/data/input/sample_raw_output.json
bash script/run_episode_agent.sh app/agents/outline_agent/data/output/Smartpick/outline.json app/agents/commit_agent/data/output/Smartpick/commit_agent.json

5) 포트폴리오 에이전트 실행

HTTP API 서버 (권장):

uv run uvicorn app.agents.portfolio.portfolio_agent.mock_api:app --host 0.0.0.0 --port 8000
# POST /api/portfolio/mock-run  (company_id, repository_ref, 또는 dict 직접 주입)

그래프 직접 실행:

uv run python -m app.agents.portfolio.portfolio_agent.graph \
  --config app/agents/config/agents/portfolio/portfolio_agent/portfolio_agent_input.yaml

출력 위치

  • 기업 분석 산출물
    • app/agents/repository_agent/data/output/<repository_name>/
    • app/agents/service_agent/data/outputs/
    • app/agents/tech_blog_agent/data/output/<company_name>/
    • app/agents/job_description_agent/data/output/<company_name>/
  • 사용자 분석 산출물
    • app/agents/raw_agent/data/output/<repo>/
    • app/agents/outline_agent/data/output/<repository_name>/outline.json
    • app/agents/commit_agent/data/output/<repo>/
    • app/agents/episode_agent/data/output/<repository_name>/episodes.json
    • app/agents/user_orchestrator_agent/data/output/<repo>/
  • 포트폴리오 통합 산출물
    • outputs/portfolio/portfolio_agent/<run_id>/merged_orchestrator_output.yaml
    • outputs/portfolio/portfolio_agent/<run_id>/portfolio.md

개발 환경

  • Python 3.12+
  • uv

설치

uv sync

빠른 시작

# 1) 의존성 설치
uv sync

# 2) 기업 분석 오케스트레이터 실행
bash script/run_orchestrator_agent.sh

# 3) 사용자 분석 오케스트레이터 실행
uv run python -m app.agents.user_orchestrator_agent.graph --repository-url https://github.com/VectorSophie/Smartpick

환경 변수 예시

cp .env.example .env

.env.example 주요 항목:

UPSTAGE_API_KEY=
UPSTAGE_MODEL=solar-pro2
UPSTAGE_BASE_URL=https://api.upstage.ai/v1/solar
LANGCHAIN_TRACING_V2=true
LANGSMITH_TRACING=true
LANGSMITH_API_KEY=
LANGSMITH_PROJECT=pommit-dev
SUPABASE_URL=
SUPABASE_KEY=
SUPABASE_SERVICE_ROLE_KEY=
ENDPOINT=
S3_ACCESS_KEY=
S3_SECRET_KEY=

실행 확인

  • 기업 분석 실행 후 repository/service/tech_blog/job_description 산출 디렉터리 생성 확인
  • 사용자 분석 실행 후 raw/outline/commit/episode/user_orchestrator 산출 디렉터리 생성 확인
  • 주요 결과 파일(JSON/MD/YAML) 생성 여부 확인
  • 현재 단계에서는 에이전트 간 입력/출력 계약과 파이프라인 연결 검증을 우선 확인

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages