{
  "markdown": "# OpenAI API Agent School - Project\n\n본 자료는 [(주)에이아이캐슬](https://aicastle.com)에서 만든 [**OpenAI API로 배우는 Agent 개발 첫걸음** ](https://openai-api-agent.aicastle.school/)(OpenAI API Agent School) 강의 프로젝트 자료입니다.\n\n\n## [0] Install & Build (uv)\n\n```sh\n# uv Install\ncurl -LsSf https://astral.sh/uv/install.sh | sh\n\n# uv Build\nuv sync --frozen && uv cache prune --ci\n```\n\n\n## [1] 프로젝트 세팅\n\n### 1.1. 환경 변수 (.env)\n\n- **.env 파일**로 설정하거나 **배포 환경에서 지정**\n- `OPENAI_API_KEY`: Agent 앱 또는 파인튜닝할 데이터를 업로드할 때 사용할 OpenAI API 키\n- `PROMPT_ID` Agent 앱에서 사용할 OpenAI 프롬프트 ID \n- `TITLE`: Agent앱의 상단 제목  \n- `PASSWORD`: 비밀번호 설정 (비워둘 경우 누구나 접근 가능)\n    - Agent 앱에서는 로그인해야 접근 가능해짐\n    - MCP 서버에서는 `?password=<your-password>`와 같이 쿼리스트링으로 전달해야 접근 가능\n\n### 1.2. config.overrides.jsonc\n\n- Agent 앱에서 openai api 요청시 responses create 에서 덮어 쓸 구성 값\n- **config.overrides.jsonc 파일**로 설정하거나 **배포 환경에서 지정**\n- 파일 위치\n    - 프로젝트 폴더 (우선 순위)\n    - /etc/secrets/\n\n\n### 1.3. tools.py\n\n- Agent 앱에서 Function Calling으로 사용할 함수.\n- 또는 MCP 서버에서 tool로 사용할 함수.\n- 파일 위치: [tools.py](tools.py)\n\n## [2] 앱 실행\n\n### 실행\n\n```sh\nuv run main.py\n```\n\n- 포트: 환경변수 `PORT`값이 지정된 경우 이 값을 사용하며, 그렇지 않을 경우 `8000`을 사용함.\n\n- agent 앱 주소: <https://localhost:8000/agent>\n\n- mcp 서버 주소: <https://localhost:8000/mcp>\n\n### KEEPALIVE_URL\n- 실행 중인 앱이 일정시간 동안 접속이 없으면 유휴상태가 될 경우 `KEEPALIVE_URL`를 github actions의 환경변수(secrets)에 지정하여 주기적으로 접속하는 cron 작업을 수행할 수 있음.\n- Fork한 경우 Fork한 레포지토리 접속하여 상단의 Actions 탭에서 Actions를 활성화 하고 .github/workflows/keepalive-url.yml 을 활성화 하세요.\n- 레포지토리 > settings > Secrets and Variables > Actions > New repository secret 에 접속하여 아래와 같이 입력 (Secret에는 본인이 배포한 URL로 입력)\n- 예시\n    - Name: `KEEPALIVE_URL`\n    - Secret: `https://<your-project-name>.onrender.com`\n\n\n## [3] 파인 튜닝 데이터\n\n`.env`파일에 `OPENAI_API_KEY`를 등록해야 정상적으로 업로드 가능\n\n### 3.1. SFT (Supervised Fine-tuning)\n\n- 폴더 위치: `fine_tuning_data/supervised/`\n- 데이터 생성 및 업로드 \n    ```sh\n    uv run fine_tuning_data/supervised/convert_and_upload.py\n    ```\n\n### 3.2. DPO (Direct Preference Optimization)\n\n- 폴더 위치: `fine_tuning_data/preference/`\n- 데이터 생성 및 업로드 \n    ```sh\n    uv run fine_tuning_data/preference/convert_and_upload.py\n    ```\n\n### 3.3. RFT (Reinforcement Fine-tuning)\n\n- 폴더 위치: `fine_tuning_data/reinforcement/`\n- 데이터 생성 및 업로드 \n    ```sh\n    uv run fine_tuning_data/reinforcement/convert_and_upload.py\n    ```",
  "bytes": 2284,
  "sha": "8f4e33ff71c51469b571823d7cff29a119b31de9fde04ab5ef420bea19b7941c",
  "repo_slug": "cc25a/openai-api-agent-project",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_ai_smithery_cc25a_openai_api_agent_proje_422a215b/readme"
}