Imported from Azure-Samples/foundry-agent-sdk-workshop-kr (
AGENTS.md). Install upstream withnpx skills add Azure-Samples/foundry-agent-sdk-workshop-kr. Copyright stays with the author.
AGENTS.md โ AI ์ฝ๋ฉ ์์ด์ ํธ ์์ ์ง์๋ฌธ
์ด ๋ฌธ์๋ GitHub Copilot(๋ฐ ๋ค๋ฅธ AI ์์ด์ ํธ)์ด ์ด ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ ๊ฒยท์ ์ง๋ณด์ํ ๋์ ๊ธฐ์ค ์ง์๋ฌธ์ด๋ค. ๋ชจ๋ ์์ ์ ์ ์ด ๋ฌธ์์ CHANGELOG.md๋ฅผ ๋จผ์ ์ฝ๋๋ค.
์๊ฐ์์ ์ด ๋ฌธ์๊ฐ ์๋๋ผ README.md๋ถํฐ ๋ณด๋ฉด ๋๋ค. ์ฌ๊ธฐ์๋ถํฐ๋ ์ ์ง๋ณด์์์ฉ ๋ด์ฉ์ด๋ค.
๋ฆฌํฌ์งํ ๋ฆฌ ์ฑ๊ฒฉ
- Microsoft Foundry ์ ๋ฌธ ํธ์ฆ์จ ์ํฌ์ต (ํ๊ตญ์ด, ๊ฑด๊ฐยทํผํธ๋์ค ์์ )
- Azure/ai-foundry-workshop ๊ธฐ๋ฐ ํ๊ตญ์ด ์ํฌ์ต์ ํฌํฌ๋ฅผ ํํํํ ๊ฒ
์ด ๋ฌธ์๋ ์๋ ๋ค ๊ฐ ์น์ ์ผ๋ก ๊ตฌ์ฑํ๋ค. โ ๋ฆฌํฌ ๊ท์น โ โก ์ฝํ ์ธ ยท๋ ธํธ๋ถ ์คํ์ผ ๊ฐ์ด๋ โ โข ๊ฒ์ฆ ํ๋ค์ค โ โฃ ๋ฐฑ๋ก๊ทธยทDO NOT
1. ๋ฆฌํฌ ๊ท์น
- ์ํฌ๋ฆฟ ์ปค๋ฐ ๊ธ์ง: API ํคยท์๋ํฌ์ธํธยทํ ํฐยท๊ตฌ๋
ID๋ฅผ ํ์ผ์ ๋จ๊ธฐ์ง ์๋๋ค. ์ค์ ๊ฐ์
.env(gitignore ๋์)์.env.example(ํ๋ ์ด์คํ๋๋ง)๋ก ๋ถ๋ฆฌํ๋ค. - ์์ ๊ธ์ง ํ์ผ:
LICENSE(MIT, ์ฝ๋)์LICENSE-DOCS(CC BY-SA 4.0, ๋ฌธ์)๋ ๋ณ๊ฒฝยท์ญ์ ํ์ง ์๋๋ค.CHANGELOG.md๋ ํญ๋ชฉ ์ถ๊ฐ๋ง ํ๊ณ ๊ธฐ์กด ์ด๋ ฅ์ ๊ณ ์ณ ์ฐ์ง ์๋๋ค. - ๋
ธํธ๋ถ ์ถ๋ ฅ ํด๋ฆฌ์ด ์ปค๋ฐ: ๋ชจ๋
.ipynb๋ outputs๊ฐ ๋น์ด ์๋ ์ํ๋ก ์ปค๋ฐํ๋ค. ์คํ ๊ฒ์ฆ์ด ํ์ํ๋ฉดnbconvert --execute์ ์ถ๋ ฅ์ ๋ฆฌํฌ ๋ฐ ์์ ํด๋๋ก ๋ณด๋ธ๋ค. - ๋์ฉ๋ ๋ฐ์ด๋๋ฆฌ ๊ธ์ง: ์ด๋ฏธ์งยท๋ฐ์ดํฐ์ ยท๋ชจ๋ธ ํ์ผ ๋ฑ ๋์ฉ๋ ๋ฐ์ด๋๋ฆฌ๋ฅผ ์ปค๋ฐํ์ง ์๋๋ค. ์คํฌ๋ฆฐ์ท์ ๊ผญ ํ์ํ ๋จ๊ณ๋ง ์ต์ ์ฉ๋์ผ๋ก ์ถ๊ฐํ๊ณ alt-text๋ฅผ ๋ถ์ธ๋ค.
- ๋ช
๋ช
๊ท์น: ์ ํ์ผยทํด๋๋ kebab-case ์๋ฌธ + ๋ฒํธ ์ ๋์ด(
01-setup~05-agent-service, ๋ ธํธ๋ถ์01-*.ipynb). ๊ณต๋ฐฑยทํ๊ธ ๊ฒฝ๋ก๋ฅผ ์ฐ์ง ์๋๋ค. - ๋ธ๋์นยท์ปค๋ฐ:
main์ ์ง์ ์ปค๋ฐํ์ง ์๋๋ค. ์์ ๋ธ๋์น์์ ์ปค๋ฐํ๊ณ PR๋ก ๊ฒํ ๋ฐ๋๋ค. - frontmatter: ๋ฃจํธ README์ ํ๋ ์
์ ์ ์งํ๋ค.
last_updated๋ ๋ด์ฉ ์์ ์ ๊ฐฑ์ ํ๊ณ ,validated_on์ ์ค์ E2E ์คํ ๊ฒ์ฆ์ ํ ์ฌ๋๋ง ๊ธฐ์ ํ๋ค. - SDK ์์น:
azure-ai-inferenceยทAPI Key ์ธ์ฆยทAssistants API(threads/runs) ํจํด์ ๋ชจ๋ retired ๋๋ sunset์ด๋ฏ๋ก ์ฌ๋์ ํ์ง ์๋๋ค. ๋ชจ๋ธ์ retirement ์ผ์ ์ ํ์ธํด GA ์ํ๋ง ์ฌ์ฉํ๋ค.
ํ์คํ ์ด๋ ฅ ์์ฝ (2026-08-12, modernize-standardize ๋ธ๋์น)
์์ธ ๋ด์ญ๊ณผ ๊ทผ๊ฑฐ ์ถ์ฒ๋ CHANGELOG.md ์ฐธ๊ณ . ์์ฝ:
- ์ฝํ
์ธ ์ต์ ํ:
azure-ai-inference(2026-05-30 retired) โopenaiSDK, API Key โ Entra ID(DefaultAzureCredential), azure-ai-projects 2.4.0, Agent Service๋ฅผ Assistants(threads/runs) โ Conversations + Responses API๋ก ๋ง์ด๊ทธ๋ ์ด์ , gpt-4o(Deprecated) โ gpt-5-mini, ์ ๊ท Microsoft Foundry ํฌํธ ๊ธฐ์ค์ผ๋ก ๋ฌธ์ ๊ฐฑ์ - ๊ตฌ์กฐ ํ์คํ: ๊ณต๋ฐฑยทํ๊ธ ํด๋๋ช
โ kebab-case + ๋ฒํธ ์ ๋์ด(
01-setup~05-agent-service), ๋ ธํธ๋ถ ํ์ผ๋ช01-*.ipynbํ์ - ๋ฉํ๋ฐ์ดํฐ: ๋ฃจํธ README์ frontmatter ์ ์ฒด ์คํค๋ง, ๊ฐ ์ฅ README์ ์ถ์ฝ frontmatter(title/duration_minutes/last_updated)
- ์คํ ํ๊ฒฝ:
.devcontainer+ "Open in Codespaces" ๋ฑ์ง,requirements.txt๋ฒ์ ๊ณ ์ - ๊ฑฐ๋ฒ๋์ค: LICENSE(MIT, ์ฝ๋) + LICENSE-DOCS(CC BY-SA 4.0, ๋ฌธ์), CHANGELOG
- ๋ฌธ์ ํ ํ๋ฆฟ: ๊ฐ ์ฅ = ๊ฐ์/ํ์ต ๋ชฉํ โ ์ฌ์ ์๊ตฌ์ฌํญ โ ๋จ๊ณ โ ๊ฒ์ฆ โ (์ ๋ฆฌ) โ ํธ๋ฌ๋ธ์ํ โ ๋ค์ ๋จ๊ณ
- ๊ตฌ(ํด๋์) ํฌํธ ์คํฌ๋ฆฐ์ท 9์ฅ ์ ๊ฑฐ (์ ๊ท ํฌํธ ๊ธฐ์ค ํ ์คํธ ์ ์ฐจ๋ก ๋์ฒด)
2. ์ฝํ ์ธ ยท๋ ธํธ๋ถ ์คํ์ผ ๊ฐ์ด๋
2.1 ๋ ธํธ๋ถ ์ ๊ตฌ์กฐ ํ ํ๋ฆฟ
๋ชจ๋ ์ค์ต ๋
ธํธ๋ถ(**/*.ipynb)์ ์๋ ๊ตฌ์กฐ๋ฅผ ๋ฐ๋ฅธ๋ค.
์ฒซ ์ (markdown) โ ์ ๋ชฉ + ์๋๋ฆฌ์ค ๋์ + ๋ฏธ์ ๋ชฉ๋ก
#ํ๋์ง๋ฆฌ ์ ๋ชฉ์ผ๋ก ์์ํ๋ค.- ์๋๋ฆฌ์ค ๋์ ๋ฌธ๋จ์ผ๋ก ์ ๋ฐฐ์ฐ๋์ง๋ฅผ ๋จผ์ ์ค๋ช ํ๋ค. ๊ธฐ๋ฅ ๋์ด์ด ์๋๋ผ ์๊ฐ์์ด ์ฒํ ์ํฉ์ ๊ทธ๋ฆฐ๋ค.
**๐ฏ ๋ฏธ์ **๋ชฉ๋ก์ 1~3๊ฐ ํญ๋ชฉ์ผ๋ก ์ ๋๋ค. ๊ฐ ํญ๋ชฉ์ ์ด ๋ ธํธ๋ถ์์ ์ค์ ๋ก ๋ง๋ค์ด ๋ด๋ ๊ฒฐ๊ณผ๋ฌผ๊ณผ ์ผ์นํด์ผ ํ๋ค.- ์ฌ์ ์ค๋น์ ์ฃผ์ ๋ฌธ๊ตฌ(๊ฑด๊ฐ ๊ด๋ จ ์๋ด ๋ฑ)๋ ๋ฏธ์
๋ชฉ๋ก ๋ค์ ์ธ์ฉ๋ฌธ(
>)์ผ๋ก ๋๋ค.
# ๋
ธํธ๋ถ ์ ๋ชฉ
์๋๋ฆฌ์ค ๋์
๋ฌธ๋จ. ์๊ฐ์์ด ์ด๋ค ์ํฉ์ ์๊ณ ์ด ๋
ธํธ๋ถ์ด ๋ฌด์์ ํด๊ฒฐํ๋์ง ์ค๋ช
ํ๋ค.
**๐ฏ ๋ฏธ์
**
1. ์ฒซ ๋ฒ์งธ๋ก ๋ง๋ค ๊ฒ
2. ๋ ๋ฒ์งธ๋ก ๋ง๋ค ๊ฒ
> **์ฌ์ ์ค๋น**: ...
๋ณธ๋ฌธ โ ## 1. ## 2. ํํ๋ก ๋ฒํธ๋ฅผ ๋งค๊ธด ๋จ๊ณ ํค๋ฉ์ ์ ์งํ๋ค. ํ์ ๋จ๊ณ๊ฐ ํ์ํ๋ฉด ### 5.1 ์ฒ๋ผ ๋ฒํธ๋ฅผ ์ด์ด ์ด๋ค.
๋ง์ง๋ง ์ (markdown) โ ๋ฏธ์ ์๋ฃ ์ ๋ฆฌ
## โ ๋ฏธ์ ์๋ฃํค๋ฉ์ผ๋ก ์์ํ๋ค.**๋ฌด์์ ๋ง๋ค์๋:**์๋์โ๋ชฉ๋ก์ ์ ๋๋ค. ํญ๋ชฉ์ ์ฒซ ์ ์ ๋ฏธ์ ๊ณผ ํ๋์ฉ ๋์์ํจ๋ค.- ๋ง์ง๋ง์ ๋ค์ ๋ ธํธ๋ถ ๋๋ ๋ค์ ์ฅ์ผ๋ก ๊ฐ๋ ๋งํฌ๋ฅผ ๋๋ค.
## โ
๋ฏธ์
์๋ฃ
**๋ฌด์์ ๋ง๋ค์๋:**
- โ ์ฒซ ๋ฒ์งธ ๋ฏธ์
์ ๊ฒฐ๊ณผ๋ฌผ
- โ ๋ ๋ฒ์งธ ๋ฏธ์
์ ๊ฒฐ๊ณผ๋ฌผ
๋ค์ ๋
ธํธ๋ถ์์๋ ... โ [02-embeddings.ipynb](02-embeddings.ipynb)
๋ฌธ์ฒด ๊ท์น
- ์ฐ๋ฌธ ์ค๋ช
์์ ์ธ๋ฏธ์ฝ๋ก (
;)๊ณผ ์ ๋์(โ)๋ฅผ ์ฐ์ง ์๋๋ค. ๋ฌธ์ฅ์ ๋๋๋ค. - ์ผ๋ฐ ๋์(
-)๋ ๋ชฉ๋ก ๊ธฐํธ๋ก๋ง ์ด๋ค. - ์ฒซ ์ฝ๋ ์
์
.env๋ก๋์ ํด๋ผ์ด์ธํธ ์ด๊ธฐํ๋ก ์์ํ๋ค.
2.2 ์ธ์ด ์ ์ฑ
- ์ค๋ช markdown ์ ๊ณผ ๋ฌธ์๋ ํ๊ตญ์ด๋ก ์ฐ๊ณ , ๊ธฐ์ ์ฉ์ด๋ ์๋ฌธ์ ๋ณ๊ธฐํ๋ค (์: ์๋ฏธ์ ์ ์ฌ๋(semantic similarity)).
- ์ฝ๋ยท์๋ณ์ยท๋ณ์๋ช ยทํ์ผ๋ช ์ ์์ด๋ก ์ด๋ค.
- ์ฝ๋ ์ฃผ์์ ํ๊ตญ์ด๋ฅผ ํ์ฉํ๋, ์ฝ๋๊ฐ ์ค์ค๋ก ๋๋ฌ๋ด์ง ๋ชปํ๋ ๋ด์ฉ๋ง ํ ์ค๋ก ์ ๋๋ค.
2.3 ๋ฉ README ํ์ด๋ง ๊ท์ฝ
๊ฐ ์ฅ ํด๋๋ README.md ํ๋๋ฅผ ๋๊ณ ๊ทธ ์ฅ์ ๋
ธํธ๋ถ๊ณผ ์ง์ ์ด๋ฃฌ๋ค. README ๊ตฌ์ฑ์ ๋ค์ ์์๋ฅผ ์งํจ๋ค.
- frontmatter โ
title,duration_minutes,last_updated(๋ฃจํธ README๋ ์ ์ฒด ์คํค๋ง ์ ์ง) - ๊ฐ์ ยท ํ์ต ๋ชฉํ
- ๋ ธํธ๋ถ ๋ชฉ์ฐจ ํ โ ๋ ธํธ๋ถ ํ์ผ ๋งํฌ / ๋ด์ฉ / ์์ ์๊ฐ ์ด
- ์ฌ์ ์๊ตฌ์ฌํญ (ํด๋น ์ฅ์ ํ์ํ ๊ฒฝ์ฐ)
- ๋จ๊ณ๋ณ ์ ์ฐจ (ํฌํธ ์์ ๋ฑ ๋ ธํธ๋ถ ๋ฐ ์์ ์ด ์๋ ๊ฒฝ์ฐ)
- ๊ฒ์ฆ โ ๋ฌด์์ด ๋๋ฉด ์ฑ๊ณต์ธ์ง
- ์ ๋ฆฌ (Clean-up) โ ๊ณผ๊ธ์ด ๋ฐ์ํ๋ ๋ฆฌ์์ค๊ฐ ์๋ ๊ฒฝ์ฐ ํ์
- ํธ๋ฌ๋ธ์ํ (ํ์ํ ๊ฒฝ์ฐ)
- ๋ค์ ๋จ๊ณ โ ๋ค์ ์ฅ README ๋งํฌ
3. ๊ฒ์ฆ ํ๋ค์ค
.github/scripts/verify.py ํ๋๋ก ๋ชจ๋ ๊ฒ์ฌ๋ฅผ ์คํํ๋ค. WindowsยทmacOSยทLinux์์ ๋์ผํ๊ฒ ๋์ํ๋ค. ๊ฒ์ฆ ์ ์ฐจ๋ฅผ ๋ค๋ฅธ ๋ฌธ์๋ ์ํฌํ๋ก์ ๋ค์ ์ ์ง ์๊ณ ์ด ์คํฌ๋ฆฝํธ๋ฅผ ์ฐธ์กฐํ๋ค.
pip install -r requirements.txt nbformat pyyaml
python .github/scripts/verify.py # ์ ์ฒด
python .github/scripts/verify.py --only docs # ์ผ๋ถ๋ง (notebooks | structure | docs | imports)
๊ฒ์ฌ ๋ด์ฉ:
- notebooks โ ๋ชจ๋
.ipynb์ nbformat ์คํค๋ง ์ ํจ์ฑ, ์ฝ๋ ์ ๋ฌธ๋ฒ(ast.parse), ์ถ๋ ฅ(outputs) ํด๋ฆฌ์ด ์ฌ๋ถ - structure โ ์ฒซ ์
์ด markdown์ด๋ฉด์
๐ฏ๋ฏธ์ ๋ชฉ๋ก์ ํฌํจํ๋์ง, ๋ง์ง๋ง ์ ์ด markdown์ด๋ฉด์โ ๋ฏธ์ ์๋ฃ๋ฅผ ํฌํจํ๋์ง (2.1 ์ ๊ตฌ์กฐ ํ ํ๋ฆฟ ์ค์ ์ฌ๋ถ) - docs โ ๋ชจ๋
.md์ frontmatter YAML ํ์ฑ, ์๋ ๋งํฌ ๋์ ํ์ผ ์กด์ฌ ์ฌ๋ถ - imports โ
azure-ai-projects/openai/azure-identity/azure-search-documents์ํฌํธ์PromptAgentDefinition,openaiํด๋ผ์ด์ธํธ์chatยทembeddingsยทresponsesยทconversations์์ฑ ์กด์ฌ ํ์ธ (์ค์ API ํธ์ถ ์์)
์คํจ๊ฐ ํ๋๋ผ๋ ์์ผ๋ฉด exit code 1์ ๋ฐํํ๋ค.
E2E ์คํ ๊ฒ์ฆ (2026-08-12 ์๋ฃ)
04ยท05์ฅ ๋ ธํธ๋ถ 4๊ฐ๋ฅผ ์ค์ Azure ๋ฆฌ์์ค๋ก ๋๊น์ง ์คํํด ํต๊ณผํ๋ค. ์ฌ์คํ ์ ์ฐจ:
az loginํ.env๊ตฌ์ฑ (.env.example์ฐธ๊ณ )pip install nbconvert ipykernel๋ฐ ์ปค๋ ๋ฑ๋กpython -m nbconvert --to notebook --execute --output-dir <์์ํด๋> <๋ ธํธ๋ถ>โ ์ถ๋ ฅ์ ์์ ํด๋๋ก ๋ณด๋ด ๋ฆฌํฌ์ ๋ ธํธ๋ถ์ ํด๋ฆฌ์ด ์ํ๋ก ์ ์งํ๋ค
๊ฒ์ฆ ์ค ํ์ธ๋ API ์ ์ฝ (์์ ์ ๋๋๋ฆฌ์ง ๋ง ๊ฒ):
- ์๋ฒ ๋ฉ์ ๋ฆฌ์์ค ๋ฒ์ ์๋ํฌ์ธํธ๋ฅผ ์จ์ผ ํ๋ค.
project.get_openai_client()์ ํ๋ก์ ํธ ๋ฒ์ base_url{PROJECT_ENDPOINT}/openai/v1์๋/embeddings๋ผ์ฐํธ๊ฐ ์์ด 404๊ฐ ๋๋ค. 04์ฅ 02ยท03 ๋ ธํธ๋ถ์base_url์https://<resource>.services.ai.azure.com/openai/v1๋ก ์ค๋ฒ๋ผ์ด๋ํembedding_client๋ฅผ ๋ณ๋๋ก ๋ง๋ค์ด ์ด๋ค. chatยทresponsesยทconversations๋ ํ๋ก์ ํธ ๋ฒ์ ๊ทธ๋๋ก ๋์ํ๋ค.
4. ๋ฐฑ๋ก๊ทธ ยท DO NOT
๋ฐฑ๋ก๊ทธ
- ์ ๊ท Foundry ํฌํธ ์คํฌ๋ฆฐ์ท ์ฌ์บก์ฒ (02ยท03์ฅ์ ํต์ฌ ๋จ๊ณ๋ง ์ต์ํ์ผ๋ก, alt-text ํ์)
- 04ยท05์ฅ ๋
ธํธ๋ถ E2E ์ฌ๊ฒ์ฆ ํ ๋ฃจํธ README์
validated_on๊ฐฑ์
DO NOT
- DO NOT: ํ๋ค์ค(
.github/scripts/verify.py) ์คํจ ์ํ๋ก ์ปค๋ฐ - DO NOT: retired SDK ํจํด(azure-ai-inference, API Key, threads/runs) ์ฌ๋์
- DO NOT: E2E ์คํ ์์ด
validated_on๊ธฐ์ - DO NOT: frontmatterยทLICENSEยทCHANGELOG ์ญ์ ๋๋ ์ฝํ
- DO NOT: main์ ์ง์ ์ปค๋ฐ (๋ธ๋์น โ PR ๊ฒํ ํ ๋จธ์ง)
- DO NOT: ์ํฌ๋ฆฟยท๋์ฉ๋ ๋ฐ์ด๋๋ฆฌ ์ปค๋ฐ