Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 0 additions & 23 deletions .copilot/mcp-config.json

This file was deleted.

7 changes: 0 additions & 7 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,3 @@ SEARCH_INDEX_NAME_IQ=maf-lab-knowledge-iq-v1

# (선택) 질의 계획 추론 강도 (minimal/low/medium, 기본값: minimal)
# FOUNDRY_IQ_REASONING_EFFORT=minimal

# ===== Copilot CLI MCP 연동 — GitHub MCP 서버 인증 =====
# .copilot/mcp-config.json의 github 서버 블록에서 Bearer 토큰으로 사용됩니다.
# GitHub Personal Access Token (repo, issues, pull_requests 스코프)
# 발급: https://github.com/settings/tokens
# 필요 스코프: repo, read:org, read:discussion (최소)
# GITHUB_PERSONAL_ACCESS_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxx
4 changes: 2 additions & 2 deletions .github/agents/debugger.agent.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ tools: ["read", "search", "execute"]
문제가 보고되면 다음 순서로 점검한다:

### 1단계: 환경 기본 점검
- Python 버전 (`python --version` → 3.14.5 권장/검증)
- Python 버전 (`python --version` → 3.14.x 권장/검증, MAF 최소 3.10)
- 가상환경 활성화 여부 (`which python` → `.venv/` 경로인지)
- 의존성 설치 (`pip list` → `agent-framework`, `azure-identity`, `python-dotenv` 등 존재 여부)

Expand Down Expand Up @@ -48,7 +48,7 @@ tools: ["read", "search", "execute"]

| 항목 | 상태 | 설명 |
|------|------|------|
| Python 버전 | ✅ | 3.14.5 |
| Python 버전 | ✅ | 3.14.x |
| Azure 로그인 | ❌ | 만료됨 → `az login` 실행 필요 |
| ... | ... | ... |

Expand Down
3 changes: 2 additions & 1 deletion .github/agents/reviewer.agent.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@ tools: ["read", "search"]
- **패턴 준수**: `FoundryChatClient` + `Agent` + 빌더 패턴, 비동기 구조가 인스트럭션과 일치하는가
- **보안**: 환경변수 하드코딩, 입력값 미검증, 민감정보 노출이 없는가
- **에러 처리**: 필수 환경변수 검증, Azure API 호출 실패에 대한 처리가 있는가
- **워크플로우 정합성**: GroupChat `max_rounds` 설정 여부, Sequential/Concurrent 참여자 목록 완결성
- **워크플로우 정합성**: GroupChat `max_rounds` 설정 여부, 참여자 목록 완결성,
`intermediate_output_from`으로 실습에 필요한 중간 결과가 노출되는지
- **한국어 품질**: docstring, 주석, 사용자 메시지가 자연스러운가

## 출력 규칙
Expand Down
2 changes: 2 additions & 0 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@

- 클라이언트·에이전트는 키워드 인자로 생성: `FoundryChatClient(project_endpoint=..., model=..., credential=...)`, `Agent(client=..., name=..., instructions=...)` (역할은 `instructions`로 부여)
- 오케스트레이션: `SequentialBuilder(participants=[...])`, `GroupChatBuilder(participants=..., selection_func=..., max_rounds=...)`, `ConcurrentBuilder(participants=[...])` 뒤에 `.build()`
- 참여자별 진행 결과를 콘솔에 표시하는 예제는 빌더의 `intermediate_output_from`을 명시하고
`stream_workflow()`로 `output`·`intermediate` 이벤트를 함께 출력
- 진입점은 `if __name__ == "__main__": asyncio.run(main())`, 환경변수는 `load_dotenv`로 로드하고 `PROJECT_ENDPOINT` 누락 시 친절한 오류 후 종료
- 새 예제는 `src/`에 `NN_<name>.py` 규칙으로 추가

Expand Down
5 changes: 3 additions & 2 deletions .github/instructions/python.instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ applyTo: "**/*.py"

## 환경 / 실행

- **Python 3.14.5** 사용(실습 표준; MAF 공식 최소 요구는 3.13).
- **Python 3.14.x** 사용(실습 검증 버전; MAF 공식 최소 요구는 3.10).
- 프로젝트 루트에서 가상환경을 만들고 의존성을 설치한다:
```bash
python3 -m venv .venv
Expand All @@ -19,7 +19,8 @@ applyTo: "**/*.py"

- 의존성은 루트 `requirements.txt`에 명시하고, 패키지를 추가하면 갱신한다.
- 메타 패키지 `agent-framework`(foundry·orchestrations 포함)를 사용한다.
- SDK·핵심 패키지는 `>=x`로 최소 버전을 명시해 재현성을 유지한다(프리릴리스 허용).
- 검증된 SDK 조합은 `==x.y.z`로 고정한다. 프리릴리스 연동 패키지도 정확한 빌드를 고정하고,
관련 핵심 패키지는 호환 버전으로 함께 갱신한다.

## 코드 스타일

Expand Down
15 changes: 15 additions & 0 deletions .github/mcp.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"mcpServers": {
"azure-lab": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@azure/mcp@latest", "server", "start"],
"tools": ["*"]
},
"microsoft-learn-lab": {
"type": "http",
"url": "https://learn.microsoft.com/api/mcp",
"tools": ["*"]
}
}
}
9 changes: 5 additions & 4 deletions .github/prompts/add-agent.prompt.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ mode: "agent"
## 현재 시나리오 구조 (`src/`)

1. **단일 에이전트** (`01_single_agent.py`) — `Agent(client=client, name=..., instructions=...)` + `stream_agent(agent, prompt)`
2. **순차(Sequential)** (`02_sequential_workflow.py`) — `SequentialBuilder(participants=[...])` + `stream_workflow(workflow, topic)`
3. **GroupChat** (`03_group_chat.py`) — `GroupChatBuilder(participants=..., selection_func=..., max_rounds=...)` + `stream_workflow(workflow, topic)`
4. **동시(Concurrent)** (`04_concurrent_workflow.py`) — `ConcurrentBuilder(participants=[...])` + `stream_workflow(workflow, design)`
2. **순차(Sequential)** (`02_sequential_workflow.py`) — `SequentialBuilder(..., intermediate_output_from=[중간 참여자...])` + `stream_workflow(workflow, topic)`
3. **GroupChat** (`03_group_chat.py`) — `GroupChatBuilder(..., max_rounds=..., intermediate_output_from=participants)` + `stream_workflow(workflow, topic)`
4. **동시(Concurrent)** (`04_concurrent_workflow.py`) — `ConcurrentBuilder(..., intermediate_output_from=participants)` + `stream_workflow(workflow, design)`
5. **MCP 도구 연동** (`05_mcp_agent.py`) — `MCPStreamableHTTPTool(url=...)` + `Agent(tools=mcp_tool)` + `stream_agent(agent, prompt)`
6. **RAG** (`06_rag_agent.py`) — 검색(Search) → 증강(Augment) → 단일 에이전트 실행 + `stream_agent(agent, augmented_prompt)`
7. **RAG (Foundry IQ)** (`06_rag_agent_foundry_iq.py`) — Foundry IQ 검색 결과를 바탕으로 단일 에이전트를 실행 + `stream_agent(agent, question)`
Expand All @@ -31,4 +31,5 @@ mode: "agent"
- **스트리밍 출력**: 단일 에이전트는 `from _streaming import stream_agent`, 워크플로우는
`from _streaming import stream_workflow` (`agent.run()` 직접 print 금지)
- `instructions`와 콘솔 출력은 한국어로 작성
- 무한 루프 방지를 위해 워크플로우에는 `max_rounds`/수렴 조건을 둔다
- 반복형 워크플로우(GroupChat·Handoff)는 `max_rounds`·종료 조건·turn limit 중 적절한 제한을 둔다
- 실습에서 참여자별 결과를 보여줘야 하면 빌더의 `intermediate_output_from`을 명시한다
4 changes: 3 additions & 1 deletion .github/prompts/review-code.prompt.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@ mode: "agent"
2. **보안** — 환경변수 노출, 입력값 검증 누락, 민감정보 하드코딩은 없는가?
3. **패턴 준수** — `FoundryChatClient` + `Agent` + 빌더(`SequentialBuilder`/`GroupChatBuilder`/`ConcurrentBuilder`/`HandoffBuilder`) 패턴을 따르는가?
4. **비동기** — 모든 에이전트 호출이 `async/await`이고 진입점이 `asyncio.run(main())`인가?
5. **워크플로우 정합성** — Handoff의 `add_handoff` 대상이 명시되었는가? GroupChat에 `max_rounds`가 있는가?
5. **워크플로우 정합성** — Handoff 라우팅이 의도한 토폴로지인가? 제한된 경로가 필요하면
`add_handoff`를 사용했는가? GroupChat에 `max_rounds` 또는 종료 조건이 있는가?
참여자별 출력을 보여주는 예제에 `intermediate_output_from`이 있는가?
6. **한국어 품질** — docstring, 주석, 사용자 메시지, 에이전트 instructions가 자연스러운가?

## 출력 형식
Expand Down
Loading
Loading