CrewAI에서 에이전트, 태스크, 컴포넌트를 올바르게 구조화하기 위해 어노테이션을 사용하는 방법을 알아보세요.
이 가이드는 클래식 crew.py 파일에서 agent, task, 및 기타 구성 요소를 올바르게 참조하기 위해 어노테이션을 사용하는 방법을 설명합니다.
crewai create crew <name>으로 만든 새 프로젝트는 JSON-first이며 crew.jsonc와 agents/*.jsonc를 사용합니다. 이 가이드는 crewai create crew <name> --classic으로 만든 클래식 프로젝트, 기존 Python/YAML 프로젝트 마이그레이션, 또는 Python 데코레이터 제어가 필요한 경우에 사용하세요.
CrewAI 프레임워크에서 어노테이션은 클래스와 메소드를 데코레이트하는 데 사용되며, crew의 다양한 컴포넌트에 메타데이터와 기능을 제공합니다. 클래식 Python/YAML 프로젝트에서는 config/agents.yaml, config/tasks.yaml을 로드하고 Crew 객체를 반환하는 코드를 구조화합니다.
@CrewBase 어노테이션은 메인 crew 클래스를 데코레이트하는 데 사용됩니다. 이 클래스는 일반적으로 agent, task, 그리고 crew 자체를 생성하기 위한 구성과 메서드를 포함합니다.
@CrewBase는 단순히 클래스를 등록하는 것 이상을 처리합니다.
구성 부트스트래핑: 클래스 파일과 동일한 경로에서 agents_config와 tasks_config(기본값은 각각 config/agents.yaml, config/tasks.yaml)을 찾아 인스턴스화 시점에 불러오며, 파일이 없으면 빈 딕셔너리로 안전하게 대체합니다.
데코레이터 오케스트레이션:@agent, @task, @before_kickoff, @after_kickoff로 표시된 메서드를 메모이즈하여 crew마다 한 번만 인스턴스화하고 선언 순서를 보장합니다.
후크 연결: 보존된 킥오프 훅을 @crew 메서드가 반환하는 Crew 객체에 자동으로 연결하여 .kickoff() 호출 전후에 실행되도록 합니다.
MCP 연동: 클래스에 mcp_server_params가 정의되어 있으면 get_mcp_tools()가 MCP 서버 어댑터를 지연 생성해 도구를 로드하고, 내부 after-kickoff 훅이 킥오프 종료 후 어댑터를 정리합니다. 어댑터 구성 방법은 MCP 개요를 참고하세요.
클래식 프로젝트에서 에이전트 구성은 일반적으로 YAML 파일에 저장됩니다. 아래는 연구원 에이전트에 대한 agents.yaml 파일 예시입니다.
researcher: role: > LinkedIn Profile Senior Data Researcher goal: > Uncover detailed LinkedIn profiles based on provided name {name} and domain {domain} Generate a Dall-E image based on domain {domain} backstory: > You're a seasoned researcher with a knack for uncovering the most relevant LinkedIn profiles. Known for your ability to navigate LinkedIn efficiently, you excel at gathering and presenting professional information clearly and concisely. allow_delegation: False verbose: True llm: groq_llm tools: - myLinkedInProfileTool - mySerperDevTool - myDallETool
이 YAML 구성은 LinkedinProfileCrew 클래스에 정의된 연구원 에이전트에 해당합니다. 구성에는 에이전트의 역할, 목표, 배경 이야기와 사용하는 LLM 및 도구와 같은 기타 속성이 명시되어 있습니다.YAML 파일의 llm과 tools가 Python 클래스에서 @llm 및 @tool로 데코레이션된 메서드와 어떻게 대응되는지 주목하세요.
일관성 있는 명명: 메서드에 대해 명확하고 일관성 있는 명명 규칙을 사용하세요. 예를 들어, agent 메서드는 역할에 따라 이름을 지정할 수 있습니다(예: researcher, reporting_analyst).
환경 변수: API 키와 같은 민감한 정보를 위해 환경 변수를 사용하세요.
유연성: agent와 task를 쉽게 추가 및 제거할 수 있도록 crew를 유연하게 설계하세요.
YAML-코드 일치: 클래식 프로젝트에서는 YAML 파일의 이름과 구조가 Python 코드의 데코레이터가 적용된 메서드와 정확히 일치하는지 확인하세요.
이 지침을 따르고 어노테이션을 올바르게 사용하면 클래식 crew를 구조적이고 유지보수하기 쉽게 유지할 수 있습니다. 새 crew에는 Crews의 JSON-first 구조를 권장합니다.
이 페이지가 도움이 되었나요?
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"CrewAI","colors":{"primary":"#EB6658","light":"#F3A78B","dark":"#C94C3C"},"logo":{"light":"https://mintcdn.com/crewai/5SZbe87tsCWZY09V/images/crew_only_logo.png?fit=max\u0026auto=format\u0026n=5SZbe87tsCWZY09V\u0026q=85\u0026s=439ca5dc63a1768cad7196005ff5636f","dark":"https://mintcdn.com/crewai/5SZbe87tsCWZY09V/images/crew_only_logo.png?fit=max\u0026auto=format\u0026n=5SZbe87tsCWZY09V\u0026q=85\u0026s=439ca5dc63a1768cad7196005ff5636f"},"favicon":"https://mintcdn.com/crewai/sz5CkjPWxVjBAZE7/images/favicon.svg?fit=max\u0026auto=format\u0026n=sz5CkjPWxVjBAZE7\u0026q=85\u0026s=16c03dad58d05417a2e442ff942d2ce7","api":{"playground":{}},"appearance":{"default":"system","strict":false},"background":{"decoration":"grid"},"navbar":{"links":[{"icon":"arrow-up-right-from-square","href":"https://app.crewai.com","label":"Start Cloud Trial"}],"primary":{"type":"github","href":"https://github.com/crewAIInc/crewAI"}},"footer":{"socials":{"website":"https://crewai.com","x":"https://x.com/crewAIInc","github":"https://github.com/crewAIInc/crewAI","linkedin":"https://www.linkedin.com/company/crewai-inc","youtube":"https://youtube.com/@crewAIInc","reddit":"https://www.reddit.com/r/crewAIInc"}},"seo":{"metatags":{"og:type":"website","og:site_name":"CrewAI Documentation","og:image":"https://docs.crewai.com/images/crew_only_logo.png","twitter:card":"summary_large_image","twitter:site":"@crewAIInc","keywords":"AI agents, multi-agent systems, CrewAI, artificial intelligence, automation, Python framework, agent collaboration, AI workflows"}},"fonts":{"family":"Inter"},"errors":{"404":{"redirect":true}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode",{"title":"Request a feature","description":"Join the discussion on GitHub to request a new feature","icon":"plus","href":"https://github.com/crewAIInc/crewAI/issues/new/choose"}],"display":"header"},"styling":{"latex":false},"navigation":{"languages":[{"language":"en","href":""},{"language":"pt-BR","href":"edge/pt-BR"},{"language":"ko","href":"edge/ko"},{"language":"ar","href":"edge/ar"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"crewai","hasAudioNarration":false,"actualSubdomain":"crewai","customDomains":["docs.crewai.com"],"gitSource":{"type":"github","owner":"crewaiinc","repo":"crewai","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6adf01ab737ceb5e71081551","collectionId":"633b6451-fde0-41b1-97f0-7ab4ef6ab679","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6adf01ab737ceb5e71081551"},"feedback":{"thumbs":true,"edits":true,"issues":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6adf01ab737ceb5e71081551","clientVersion":"0.0.3971","searchFilterCounts":[{"language":"en","tag":"Documentation","count":8428},{"language":"ko","tag":"기술 문서","count":7754},{"language":"pt-BR","tag":"Documentação","count":7187},{"language":"ar","tag":"التقنية التوثيق","count":7154},{"language":"en","tag":"Tools","count":3870},{"language":"ko","tag":"도구 (Tools)","count":3579},{"language":"ar","tag":"الأدوات","count":3336},{"language":"pt-BR","tag":"Ferramentas","count":3057},{"language":"en","tag":"Learn","count":1345},{"language":"ko","tag":"학습","count":1199},{"language":"pt-BR","tag":"Aprenda","count":1199},{"language":"ar","tag":"التعلّم","count":1103},{"language":"en","tag":"Core Concepts","count":1019},{"language":"ko","tag":"핵심 개념","count":989},{"language":"pt-BR","tag":"Conceitos-Chave","count":989},{"language":"ar","tag":"المفاهيم الأساسية","count":917},{"language":"en","tag":"Observability","count":864},{"language":"en","tag":"Search \u0026 Research","count":840},{"language":"ko","tag":"Observability","count":816},{"language":"pt-BR","tag":"Observabilidade","count":816},{"language":"en","tag":"Guides","count":808},{"language":"ko","tag":"검색 및 연구","count":804},{"language":"ar","tag":"Observability","count":748},{"language":"ar","tag":"البحث والاستكشاف","count":740},{"language":"en","tag":"Web Scraping \u0026 Browsing","count":708},{"language":"en","tag":"File \u0026 Document","count":672},{"language":"ko","tag":"파일 \u0026 문서","count":672},{"language":"ko","tag":"웹 스크래핑 \u0026 브라우징","count":672},{"language":"pt-BR","tag":"Web Scraping \u0026 Navegação","count":624},{"language":"ar","tag":"الملفات والمستندات","count":616},{"language":"ar","tag":"استخراج بيانات الويب","count":616},{"language":"pt-BR","tag":"Arquivo \u0026 Documento","count":576},{"language":"ko","tag":"가이드","count":567},{"language":"pt-BR","tag":"Guias","count":567},{"language":"ar","tag":"الأدلّة","count":534},{"language":"pt-BR","tag":"Pesquisa","count":480},{"language":"ko","tag":"시작 안내","count":460},{"language":"pt-BR","tag":"Começando","count":460},{"language":"en","tag":"AI \u0026 Machine Learning","count":456},{"language":"ar","tag":"البدء","count":428}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"v1.15.13/ko/learn/using-annotations","slug":"/v1.15.13/ko/learn/using-annotations","pageMetadata":{"title":"crew.py에서 어노테이션 사용하기","description":"CrewAI에서 에이전트, 태스크, 컴포넌트를 올바르게 구조화하기 위해 어노테이션을 사용하는 방법을 알아보세요.","icon":"at","mode":"wide","href":"/v1.15.13/ko/learn/using-annotations"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"CrewAI에서 에이전트, 태스크, 컴포넌트를 올바르게 구조화하기 위해 어노테이션을 사용하는 방법을 알아보세요.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Note,Tip}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`이 가이드는 클래식 `,_jsx(_components.code,{children:`crew.py`}),` 파일에서 `,_jsx(_components.strong,{children:`agent`}),`, `,_jsx(_components.strong,{children:`task`}),`, 및 기타 구성 요소를 올바르게 참조하기 위해 어노테이션을 사용하는 방법을 설명합니다.`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`crewai create crew \u003cname>`}),`으로 만든 새 프로젝트는 JSON-first이며 `,_jsx(_components.code,{children:`crew.jsonc`}),`와 `,_jsx(_components.code,{children:`agents/*.jsonc`}),`를 사용합니다. 이 가이드는 `,_jsx(_components.code,{children:`crewai create crew \u003cname> --classic`}),`으로 만든 클래식 프로젝트, 기존 Python/YAML 프로젝트 마이그레이션, 또는 Python 데코레이터 제어가 필요한 경우에 사용하세요.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`소개`,children:`소개`}),`\n`,_jsxs(_components.p,{children:[`CrewAI 프레임워크에서 어노테이션은 클래스와 메소드를 데코레이트하는 데 사용되며, crew의 다양한 컴포넌트에 메타데이터와 기능을 제공합니다. 클래식 Python/YAML 프로젝트에서는 `,_jsx(_components.code,{children:`config/agents.yaml`}),`, `,_jsx(_components.code,{children:`config/tasks.yaml`}),`을 로드하고 `,_jsx(_components.code,{children:`Crew`}),` 객체를 반환하는 코드를 구조화합니다.`]}),`\n`,_jsx(Heading,{level:`2`,id:`사용-가능한-어노테이션`,children:`사용 가능한 어노테이션`}),`\n`,_jsx(_components.p,{children:`CrewAI 프레임워크는 다음과 같은 어노테이션을 제공합니다:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`@CrewBase`}),`: 메인 crew 클래스를 데코레이트할 때 사용합니다.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`@agent`}),`: Agent 객체를 정의하고 반환하는 메서드를 데코레이트합니다.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`@task`}),`: Task 객체를 정의하고 반환하는 메서드를 데코레이트합니다.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`@crew`}),`: Crew 객체를 생성하고 반환하는 메서드를 데코레이트합니다.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`@llm`}),`: Language Model 객체를 초기화하고 반환하는 메서드를 데코레이트합니다.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`@tool`}),`: Tool 객체를 초기화하고 반환하는 메서드를 데코레이트합니다.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`@callback`}),`: 콜백 메서드를 정의할 때 사용합니다.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`@output_json`}),`: JSON 데이터를 출력하는 메서드에 사용합니다.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`@output_pydantic`}),`: Pydantic 모델을 출력하는 메서드에 사용합니다.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`@cache_handler`}),`: 캐시 처리 메서드를 정의할 때 사용합니다.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`사용-예시`,children:`사용 예시`}),`\n`,_jsx(_components.p,{children:`이러한 주석을 어떻게 사용하는지 예제를 통해 살펴보겠습니다:`}),`\n`,_jsx(Heading,{level:`3`,id:`1-crew-base-클래스`,children:`1. Crew Base 클래스`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`5`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`@CrewBase`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`class`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` LinkedinProfileCrew`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`():`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"\"\"LinkedinProfile crew\"\"\"`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` agents_config `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'config/agents.yaml'`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` tasks_config `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'config/tasks.yaml'`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`@CrewBase`}),` 어노테이션은 메인 crew 클래스를 데코레이트하는 데 사용됩니다. 이 클래스는 일반적으로 agent, task, 그리고 crew 자체를 생성하기 위한 구성과 메서드를 포함합니다.`]}),`\n`,_jsxs(Tip,{children:[_jsxs(_components.p,{children:[_jsx(_components.code,{children:`@CrewBase`}),`는 단순히 클래스를 등록하는 것 이상을 처리합니다.`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`구성 부트스트래핑:`}),` 클래스 파일과 동일한 경로에서 `,_jsx(_components.code,{children:`agents_config`}),`와 `,_jsx(_components.code,{children:`tasks_config`}),`(기본값은 각각 `,_jsx(_components.code,{children:`config/agents.yaml`}),`, `,_jsx(_components.code,{children:`config/tasks.yaml`}),`)을 찾아 인스턴스화 시점에 불러오며, 파일이 없으면 빈 딕셔너리로 안전하게 대체합니다.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`데코레이터 오케스트레이션:`}),` `,_jsx(_components.code,{children:`@agent`}),`, `,_jsx(_components.code,{children:`@task`}),`, `,_jsx(_components.code,{children:`@before_kickoff`}),`, `,_jsx(_components.code,{children:`@after_kickoff`}),`로 표시된 메서드를 메모이즈하여 crew마다 한 번만 인스턴스화하고 선언 순서를 보장합니다.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`후크 연결:`}),` 보존된 킥오프 훅을 `,_jsx(_components.code,{children:`@crew`}),` 메서드가 반환하는 `,_jsx(_components.code,{children:`Crew`}),` 객체에 자동으로 연결하여 `,_jsx(_components.code,{children:`.kickoff()`}),` 호출 전후에 실행되도록 합니다.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`MCP 연동:`}),` 클래스에 `,_jsx(_components.code,{children:`mcp_server_params`}),`가 정의되어 있으면 `,_jsx(_components.code,{children:`get_mcp_tools()`}),`가 MCP 서버 어댑터를 지연 생성해 도구를 로드하고, 내부 after-kickoff 훅이 킥오프 종료 후 어댑터를 정리합니다. 어댑터 구성 방법은 `,_jsx(_components.a,{href:`/ko/mcp/overview`,children:`MCP 개요`}),`를 참고하세요.`]}),`\n`]})]}),`\n`,_jsx(Heading,{level:`3`,id:`2-도구-정의`,children:`2. 도구 정의`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`3`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`@tool`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`def`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` myLinkedInProfileTool`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`self`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`):`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` LinkedInProfileTool()`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`@tool`}),` 애너테이션은 도구 객체를 반환하는 메서드를 데코레이터할 때 사용됩니다. 이러한 도구들은 에이전트가 특정 작업을 수행할 때 사용할 수 있습니다.`]}),`\n`,_jsx(Heading,{level:`3`,id:`3-llm-정의`,children:`3. LLM 정의`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`4`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`@llm`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`def`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` groq_llm`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`self`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`):`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` api_key `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` os.getenv(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'api_key'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ChatGroq(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`api_key`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`api_key, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`temperature`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`0`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`model_name`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"mixtral-8x7b-32768\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`@llm`}),` 애노테이션은 Language Model 객체를 초기화하고 반환하는 메서드를 데코레이팅하는 데 사용됩니다. 이러한 LLM은 에이전트가 자연어 처리 작업을 수행할 때 사용됩니다.`]}),`\n`,_jsx(Heading,{level:`3`,id:`4-에이전트-정의`,children:`4. 에이전트 정의`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`5`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`@agent`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`def`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` researcher`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`self`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) -> Agent:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Agent(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` config`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`self`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.agents_config[`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'researcher'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` )`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`@agent`}),` 어노테이션은 에이전트 객체를 정의하고 반환하는 메서드를 데코레이트할 때 사용됩니다.`]}),`\n`,_jsx(Heading,{level:`3`,id:`5-task-정의`,children:`5. Task 정의`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`6`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`@task`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`def`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` research_task`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`self`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) -> Task:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Task(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` config`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`self`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.tasks_config[`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'research_linkedin_task'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`],`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` agent`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`self`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.researcher()`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` )`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`@task`}),` 어노테이션은 Task 객체를 정의하고 반환하는 메서드를 데코레이트하는 데 사용됩니다. 이러한 메서드는 task 구성과 해당 task를 담당하는 agent를 지정합니다.`]}),`\n`,_jsx(Heading,{level:`3`,id:`6-crew-생성`,children:`6. Crew 생성`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`9`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`9`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`@crew`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`def`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` crew`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`self`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) -> Crew:`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"\"\"Creates the LinkedinProfile crew\"\"\"`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Crew(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` agents`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`self`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.agents,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` tasks`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`self`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.tasks,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` process`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`Process.sequential,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` verbose`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`True`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` )`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`@crew`}),` 어노테이션은 `,_jsx(_components.code,{children:`Crew`}),` 객체를 생성하고 반환하는 메서드를 데코레이션하는 데 사용됩니다. 이 메서드는 모든 구성 요소(agents와 tasks)를 기능적인 crew로 조합합니다.`]}),`\n`,_jsx(Heading,{level:`2`,id:`클래식-yaml-구성`,children:`클래식 YAML 구성`}),`\n`,_jsxs(_components.p,{children:[`클래식 프로젝트에서 에이전트 구성은 일반적으로 YAML 파일에 저장됩니다. 아래는 연구원 에이전트에 대한 `,_jsx(_components.code,{children:`agents.yaml`}),` 파일 예시입니다.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`17`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`17`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`researcher`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` role`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`>`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` LinkedIn Profile Senior Data Researcher`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` goal`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`>`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` Uncover detailed LinkedIn profiles based on provided name {name} and domain {domain}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` Generate a Dall-E image based on domain {domain}`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` backstory`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`>`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` You're a seasoned researcher with a knack for uncovering the most relevant LinkedIn profiles.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` Known for your ability to navigate LinkedIn efficiently, you excel at gathering and presenting`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` professional information clearly and concisely.`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` allow_delegation`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`False`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` verbose`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`True`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` llm`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`groq_llm`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` tools`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`myLinkedInProfileTool`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`mySerperDevTool`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`myDallETool`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`이 YAML 구성은 `,_jsx(_components.code,{children:`LinkedinProfileCrew`}),` 클래스에 정의된 연구원 에이전트에 해당합니다. 구성에는 에이전트의 역할, 목표, 배경 이야기와 사용하는 LLM 및 도구와 같은 기타 속성이 명시되어 있습니다.`]}),`\n`,_jsxs(_components.p,{children:[`YAML 파일의 `,_jsx(_components.code,{children:`llm`}),`과 `,_jsx(_components.code,{children:`tools`}),`가 Python 클래스에서 `,_jsx(_components.code,{children:`@llm`}),` 및 `,_jsx(_components.code,{children:`@tool`}),`로 데코레이션된 메서드와 어떻게 대응되는지 주목하세요.`]}),`\n`,_jsx(Heading,{level:`2`,id:`모범-사례`,children:`모범 사례`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`일관성 있는 명명`}),`: 메서드에 대해 명확하고 일관성 있는 명명 규칙을 사용하세요. 예를 들어, agent 메서드는 역할에 따라 이름을 지정할 수 있습니다(예: researcher, reporting_analyst).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`환경 변수`}),`: API 키와 같은 민감한 정보를 위해 환경 변수를 사용하세요.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`유연성`}),`: agent와 task를 쉽게 추가 및 제거할 수 있도록 crew를 유연하게 설계하세요.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`YAML-코드 일치`}),`: 클래식 프로젝트에서는 YAML 파일의 이름과 구조가 Python 코드의 데코레이터가 적용된 메서드와 정확히 일치하는지 확인하세요.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`이 지침을 따르고 어노테이션을 올바르게 사용하면 클래식 crew를 구조적이고 유지보수하기 쉽게 유지할 수 있습니다. 새 crew에는 `,_jsx(_components.a,{href:`/ko/concepts/crews`,children:`Crews`}),`의 JSON-first 구조를 권장합니다.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"crew.py에서 어노테이션 사용하기","description":"CrewAI에서 에이전트, 태스크, 컴포넌트를 올바르게 구조화하기 위해 어노테이션을 사용하는 방법을 알아보세요.","icon":"at","mode":"wide","href":"/v1.15.13/ko/learn/using-annotations"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"소개","slug":"소개","depth":2,"children":[]},{"title":"사용 가능한 어노테이션","slug":"사용-가능한-어노테이션","depth":2,"children":[]},{"title":"사용 예시","slug":"사용-예시","depth":2,"children":[{"title":"1. Crew Base 클래스","slug":"1-crew-base-클래스","depth":3,"children":[]},{"title":"2. 도구 정의","slug":"2-도구-정의","depth":3,"children":[]},{"title":"3. LLM 정의","slug":"3-llm-정의","depth":3,"children":[]},{"title":"4. 에이전트 정의","slug":"4-에이전트-정의","depth":3,"children":[]},{"title":"5. Task 정의","slug":"5-task-정의","depth":3,"children":[]},{"title":"6. Crew 생성","slug":"6-crew-생성","depth":3,"children":[]}]},{"title":"클래식 YAML 구성","slug":"클래식-yaml-구성","depth":2,"children":[]},{"title":"모범 사례","slug":"모범-사례","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/crewai/cc0a0a5c2c93f4d8/common-room-tracking.js","/_mintlify/custom/crewai/36c44d75a9111b06/reo-tracking.js"],"subdomain":"crewai","siteName":"CrewAI","title":"crew.py에서 어노테이션 사용하기 - CrewAI","navMaps":{"firstHrefInVersion":{"Edge":{"href":"/edge/ko/learn/using-annotations","matchLevel":1},"v1.15.30":{"href":"/v1.15.30/ko/learn/using-annotations","matchLevel":1},"v1.15.29":{"href":"/v1.15.29/ko/learn/using-annotations","matchLevel":1},"v1.15.28":{"href":"/v1.15.28/ko/learn/using-annotations","matchLevel":1},"v1.15.27":{"href":"/v1.15.27/ko/learn/using-annotations","matchLevel":1},"v1.15.26":{"href":"/v1.15.26/ko/learn/using-annotations","matchLevel":1},"v1.15.25":{"href":"/v1.15.25/ko/learn/using-annotations","matchLevel":1},"v1.15.24":{"href":"/v1.15.24/ko/learn/using-annotations","matchLevel":1},"v1.15.23":{"href":"/v1.15.23/ko/learn/using-annotations","matchLevel":1},"v1.15.22":{"href":"/v1.15.22/ko/learn/using-annotations","matchLevel":1},"v1.15.21":{"href":"/v1.15.21/ko/learn/using-annotations","matchLevel":1},"v1.15.20":{"href":"/v1.15.20/ko/learn/using-annotations","matchLevel":1},"v1.15.19":{"href":"/v1.15.19/ko/learn/using-annotations","matchLevel":1},"v1.15.18":{"href":"/v1.15.18/ko/learn/using-annotations","matchLevel":1},"v1.15.17":{"href":"/v1.15.17/ko/learn/using-annotations","matchLevel":1},"v1.15.16":{"href":"/v1.15.16/ko/learn/using-annotations","matchLevel":1},"v1.15.15":{"href":"/v1.15.15/ko/learn/using-annotations","matchLevel":1},"v1.15.14":{"href":"/v1.15.14/ko/learn/using-annotations","matchLevel":1},"v1.15.13":{"href":"/v1.15.13/ko/learn/using-annotations","matchLevel":0},"v1.15.12":{"href":"/v1.15.12/ko/learn/using-annotations","matchLevel":1},"v1.15.11":{"href":"/v1.15.11/ko/learn/using-annotations","matchLevel":1},"v1.15.10":{"href":"/v1.15.10/ko/learn/using-annotations","matchLevel":1},"v1.15.9":{"href":"/v1.15.9/ko/learn/using-annotations","matchLevel":1},"v1.15.8":{"href":"/v1.15.8/ko/learn/using-annotations","matchLevel":1},"v1.15.7":{"href":"/v1.15.7/ko/learn/using-annotations","matchLevel":1},"v1.15.6":{"href":"/v1.15.6/ko/learn/using-annotations","matchLevel":1},"v1.15.5":{"href":"/v1.15.5/ko/learn/using-annotations","matchLevel":1},"v1.15.4":{"href":"/v1.15.4/ko/learn/using-annotations","matchLevel":1},"v1.15.3":{"href":"/v1.15.3/ko/learn/using-annotations","matchLevel":1},"v1.15.2":{"href":"/v1.15.2/ko/learn/using-annotations","matchLevel":1},"v1.15.1":{"href":"/v1.15.1/ko/learn/using-annotations","matchLevel":1},"v1.15.0":{"href":"/v1.15.0/ko/learn/using-annotations","matchLevel":1},"v1.14.7":{"href":"/v1.14.7/ko/learn/using-annotations","matchLevel":1},"v1.14.6":{"href":"/v1.14.6/ko/learn/using-annotations","matchLevel":1},"v1.14.5":{"href":"/v1.14.5/ko/learn/using-annotations","matchLevel":1},"v1.14.4":{"href":"/v1.14.4/ko/learn/using-annotations","matchLevel":1},"v1.14.3":{"href":"/v1.14.3/ko/learn/using-annotations","matchLevel":1},"v1.14.2":{"href":"/v1.14.2/ko/learn/using-annotations","matchLevel":1},"v1.14.1":{"href":"/v1.14.1/ko/learn/using-annotations","matchLevel":1},"v1.14.0":{"href":"/v1.14.0/ko/learn/using-annotations","matchLevel":1},"v1.13.0":{"href":"/v1.13.0/ko/learn/using-annotations","matchLevel":1},"v1.12.2":{"href":"/v1.12.2/ko/learn/using-annotations","matchLevel":1},"v1.12.1":{"href":"/v1.12.1/ko/learn/using-annotations","matchLevel":1},"v1.12.0":{"href":"/v1.12.0/ko/learn/using-annotations","matchLevel":1},"v1.11.1":{"href":"/v1.11.1/ko/learn/using-annotations","matchLevel":1},"v1.11.0":{"href":"/v1.11.0/ko/learn/using-annotations","matchLevel":1},"v1.10.1":{"href":"/v1.10.1/ko/learn/using-annotations","matchLevel":1},"v1.10.0":{"href":"/v1.10.0/ko/learn/using-annotations","matchLevel":1}},"firstHrefInLanguage":{"en":{"href":"/v1.15.13/en/learn/using-annotations","matchLevel":1},"pt-BR":{"href":"/v1.15.13/pt-BR/learn/using-annotations","matchLevel":1},"ko":{"href":"/v1.15.13/ko/learn/using-annotations","matchLevel":0},"ar":{"href":"/v1.15.13/ar/learn/using-annotations","matchLevel":1}}},"lastModified":"2026-08-07T21:26:36.756Z","originalFileLocation":"v1.15.13/ko/learn/using-annotations.mdx","locale":"ko"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"CrewAI에서 에이전트, 태스크, 컴포넌트를 올바르게 구조화하기 위해 어노테이션을 사용하는 방법을 알아보세요.\">\u003cmeta data-mint-head name=\"keywords\" content=\"AI agents, multi-agent systems, CrewAI, artificial intelligence, automation, Python framework, agent collaboration, AI workflows\">\u003cmeta data-mint-head name=\"application-name\" content=\"CrewAI\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/crewai/4u_yrBmnBvL-de5g/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/crewai/4u_yrBmnBvL-de5g/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/crewai/4u_yrBmnBvL-de5g/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/crewai/4u_yrBmnBvL-de5g/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/crewai/4u_yrBmnBvL-de5g/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/crewai/4u_yrBmnBvL-de5g/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/crewai/4u_yrBmnBvL-de5g/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/crewai/4u_yrBmnBvL-de5g/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/crewai/4u_yrBmnBvL-de5g/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"crew.py에서 어노테이션 사용하기 - CrewAI\">\u003cmeta data-mint-head property=\"og:description\" content=\"CrewAI에서 에이전트, 태스크, 컴포넌트를 올바르게 구조화하기 위해 어노테이션을 사용하는 방법을 알아보세요.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"CrewAI Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.crewai.com/v1.15.13/ko/learn/using-annotations\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://docs.crewai.com/images/crew_only_logo.png\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"crew.py에서 어노테이션 사용하기 - CrewAI\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"CrewAI에서 에이전트, 태스크, 컴포넌트를 올바르게 구조화하기 위해 어노테이션을 사용하는 방법을 알아보세요.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://docs.crewai.com/images/crew_only_logo.png\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/crewai/4u_yrBmnBvL-de5g/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"CrewAI\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#EB6658\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.crewai.com/v1.15.13/ko/learn/using-annotations\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/v1.15.13/ko/learn/using-annotations.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ko\" href=\"https://docs.crewai.com/v1.15.13/ko/learn/using-annotations\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://docs.crewai.com/v1.15.13/en/learn/using-annotations\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"pt-BR\" href=\"https://docs.crewai.com/v1.15.13/pt-BR/learn/using-annotations\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ar\" href=\"https://docs.crewai.com/v1.15.13/ar/learn/using-annotations\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://docs.crewai.com/v1.15.13/en/learn/using-annotations\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.crewai.com/#organization\",\"name\":\"CrewAI\",\"url\":\"https://docs.crewai.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/crewai/5SZbe87tsCWZY09V/images/crew_only_logo.png?fit=max\u0026auto=format\u0026n=5SZbe87tsCWZY09V\u0026q=85\u0026s=439ca5dc63a1768cad7196005ff5636f\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.crewai.com#website\",\"name\":\"CrewAI\",\"url\":\"https://docs.crewai.com\",\"publisher\":{\"@id\":\"https://docs.crewai.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.crewai.com/v1.15.13/ko/learn/using-annotations#webpage\",\"url\":\"https://docs.crewai.com/v1.15.13/ko/learn/using-annotations\",\"name\":\"crew.py에서 어노테이션 사용하기\",\"description\":\"CrewAI에서 에이전트, 태스크, 컴포넌트를 올바르게 구조화하기 위해 어노테이션을 사용하는 방법을 알아보세요.\",\"dateModified\":\"2026-08-07T21:26:36.756Z\",\"isPartOf\":{\"@id\":\"https://docs.crewai.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.crewai.com/v1.15.13/ko/learn/using-annotations#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.crewai.com/v1.15.13/ko/learn/using-annotations#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"학습\",\"item\":\"https://docs.crewai.com/v1.15.13/ko/learn/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"crew.py에서 어노테이션 사용하기\",\"item\":\"https://docs.crewai.com/v1.15.13/ko/learn/using-annotations\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.crewai.com/v1.15.13/ko/learn/using-annotations#article\",\"headline\":\"crew.py에서 어노테이션 사용하기\",\"name\":\"crew.py에서 어노테이션 사용하기\",\"description\":\"CrewAI에서 에이전트, 태스크, 컴포넌트를 올바르게 구조화하기 위해 어노테이션을 사용하는 방법을 알아보세요.\",\"url\":\"https://docs.crewai.com/v1.15.13/ko/learn/using-annotations\",\"mainEntityOfPage\":{\"@id\":\"https://docs.crewai.com/v1.15.13/ko/learn/using-annotations#webpage\"},\"image\":\"https://docs.crewai.com/images/crew_only_logo.png\",\"dateModified\":\"2026-08-07T21:26:36.756Z\",\"publisher\":{\"@id\":\"https://docs.crewai.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.crewai.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"CrewAI\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"CrewAI","nav":{"global":null,"languages":[{"language":"en","pages":[{"title":"en","href":"/v1.15.13/en/learn/using-annotations"}]},{"language":"pt-BR","pages":[{"title":"pt-BR","href":"/v1.15.13/pt-BR/learn/using-annotations"}]},{"language":"ko","versions":[{"version":"Edge","tag":"Edge","pages":[{"title":"Edge","href":"/edge/ko/learn/using-annotations"}]},{"version":"v1.15.30","default":true,"tag":"Latest","pages":[{"title":"v1.15.30","href":"/v1.15.30/ko/learn/using-annotations"}]},{"version":"v1.15.29","pages":[{"title":"v1.15.29","href":"/v1.15.29/ko/learn/using-annotations"}]},{"version":"v1.15.28","pages":[{"title":"v1.15.28","href":"/v1.15.28/ko/learn/using-annotations"}]},{"version":"v1.15.27","pages":[{"title":"v1.15.27","href":"/v1.15.27/ko/learn/using-annotations"}]},{"version":"v1.15.26","pages":[{"title":"v1.15.26","href":"/v1.15.26/ko/learn/using-annotations"}]},{"version":"v1.15.25","pages":[{"title":"v1.15.25","href":"/v1.15.25/ko/learn/using-annotations"}]},{"version":"v1.15.24","pages":[{"title":"v1.15.24","href":"/v1.15.24/ko/learn/using-annotations"}]},{"version":"v1.15.23","pages":[{"title":"v1.15.23","href":"/v1.15.23/ko/learn/using-annotations"}]},{"version":"v1.15.22","pages":[{"title":"v1.15.22","href":"/v1.15.22/ko/learn/using-annotations"}]},{"version":"v1.15.21","pages":[{"title":"v1.15.21","href":"/v1.15.21/ko/learn/using-annotations"}]},{"version":"v1.15.20","pages":[{"title":"v1.15.20","href":"/v1.15.20/ko/learn/using-annotations"}]},{"version":"v1.15.19","pages":[{"title":"v1.15.19","href":"/v1.15.19/ko/learn/using-annotations"}]},{"version":"v1.15.18","pages":[{"title":"v1.15.18","href":"/v1.15.18/ko/learn/using-annotations"}]},{"version":"v1.15.17","pages":[{"title":"v1.15.17","href":"/v1.15.17/ko/learn/using-annotations"}]},{"version":"v1.15.16","pages":[{"title":"v1.15.16","href":"/v1.15.16/ko/learn/using-annotations"}]},{"version":"v1.15.15","pages":[{"title":"v1.15.15","href":"/v1.15.15/ko/learn/using-annotations"}]},{"version":"v1.15.14","pages":[{"title":"v1.15.14","href":"/v1.15.14/ko/learn/using-annotations"}]},{"version":"v1.15.13","tabs":[{"tab":"홈","icon":"house","pages":[{"title":"홈","href":"/v1.15.13/ko"}]},{"tab":"기술 문서","icon":"book-open","groups":[{"group":"시작 안내","pages":[{"title":"소개","icon":"handshake","mode":"wide","href":"/v1.15.13/ko/introduction"},{"title":"AI와 함께 빌드하기","icon":"robot","mode":"wide","href":"/v1.15.13/ko/guides/coding-tools/build-with-ai"},{"title":"Skills","icon":"wand-magic-sparkles","mode":"wide","href":"/v1.15.13/ko/skills"},{"title":"설치","icon":"wrench","mode":"wide","href":"/v1.15.13/ko/installation"},{"title":"퀵스타트","icon":"rocket","mode":"wide","href":"/v1.15.13/ko/quickstart"}]},{"group":"가이드","pages":[{"group":"전략","icon":"compass","pages":[{"title":"CrewAI 사용 사례 평가","icon":"scale-balanced","mode":"wide","href":"/v1.15.13/ko/guides/concepts/evaluating-use-cases"}]},{"group":"에이전트 (Agents)","icon":"user","pages":[{"title":"효과적인 에이전트 제작","icon":"robot","mode":"wide","href":"/v1.15.13/ko/guides/agents/crafting-effective-agents"}]},{"group":"크루 (Crews)","icon":"users","pages":[{"title":"첫 번째 Crew 만들기","icon":"users-gear","mode":"wide","href":"/v1.15.13/ko/guides/crews/first-crew"}]},{"group":"플로우 (Flows)","icon":"code-branch","pages":[{"title":"첫 Flow 빌드하기","icon":"diagram-project","mode":"wide","href":"/v1.15.13/ko/guides/flows/first-flow"},{"title":"플로우 상태 관리 마스터하기","icon":"diagram-project","mode":"wide","href":"/v1.15.13/ko/guides/flows/mastering-flow-state"},{"title":"대화형 Flow","icon":"comments","mode":"wide","href":"/v1.15.13/ko/guides/flows/conversational-flows"},{"title":"inputs.id에서 restore_from_state_id로 마이그레이션","icon":"arrow-right-arrow-left","href":"/v1.15.13/ko/guides/flows/inputs-id-deprecation"}]},{"group":"도구","icon":"wrench","pages":[{"title":"커스텀 도구 배포하기","icon":"box-open","mode":"wide","href":"/v1.15.13/ko/guides/tools/publish-custom-tools"}]},{"group":"코딩 도구","icon":"terminal","pages":[{"title":"코딩 도구","icon":"terminal","mode":"wide","href":"/v1.15.13/ko/guides/coding-tools/agents-md"}]},{"group":"고급","icon":"gear","pages":[{"title":"프롬프트 커스터마이징","icon":"message-pen","mode":"wide","href":"/v1.15.13/ko/guides/advanced/customizing-prompts"},{"title":"지문 인식","icon":"fingerprint","mode":"wide","href":"/v1.15.13/ko/guides/advanced/fingerprinting"}]},{"group":"마이그레이션","icon":"shuffle","pages":[{"title":"LangGraph에서 CrewAI로 옮기기: 엔지니어를 위한 실전 가이드","icon":"switch","mode":"wide","href":"/v1.15.13/ko/guides/migration/migrating-from-langgraph"}]}]},{"group":"핵심 개념","pages":[{"title":"에이전트","icon":"robot","mode":"wide","href":"/v1.15.13/ko/concepts/agents"},{"title":"작업","icon":"list-check","mode":"wide","href":"/v1.15.13/ko/concepts/tasks"},{"title":"에이전트 기능","icon":"puzzle-piece","mode":"wide","href":"/v1.15.13/ko/concepts/agent-capabilities"},{"title":"크루","icon":"people-group","mode":"wide","href":"/v1.15.13/ko/concepts/crews"},{"title":"Flows","icon":"arrow-progress","mode":"wide","href":"/v1.15.13/ko/concepts/flows"},{"title":"프로덕션 아키텍처","icon":"server","mode":"wide","href":"/v1.15.13/ko/concepts/production-architecture"},{"title":"Knowledge","icon":"book","mode":"wide","href":"/v1.15.13/ko/concepts/knowledge"},{"title":"스킬","icon":"bolt","mode":"wide","href":"/v1.15.13/ko/concepts/skills"},{"title":"LLMs","icon":"microchip-ai","mode":"wide","href":"/v1.15.13/ko/concepts/llms"},{"title":"파일","icon":"file-image","href":"/v1.15.13/ko/concepts/files"},{"title":"프로세스","icon":"bars-staggered","mode":"wide","href":"/v1.15.13/ko/concepts/processes"},{"title":"협업","icon":"screen-users","mode":"wide","href":"/v1.15.13/ko/concepts/collaboration"},{"title":"교육","icon":"dumbbell","mode":"wide","href":"/v1.15.13/ko/concepts/training"},{"title":"메모리","icon":"database","mode":"wide","href":"/v1.15.13/ko/concepts/memory"},{"title":"Reasoning","icon":"brain","mode":"wide","href":"/v1.15.13/ko/concepts/reasoning"},{"title":"계획","icon":"ruler-combined","mode":"wide","href":"/v1.15.13/ko/concepts/planning"},{"title":"테스트","icon":"vial","mode":"wide","href":"/v1.15.13/ko/concepts/testing"},{"title":"CLI","icon":"terminal","mode":"wide","href":"/v1.15.13/ko/concepts/cli"},{"title":"도구","icon":"screwdriver-wrench","mode":"wide","href":"/v1.15.13/ko/concepts/tools"},{"title":"이벤트 리스너","icon":"spinner","mode":"wide","href":"/v1.15.13/ko/concepts/event-listener"},{"title":"Checkpointing","icon":"floppy-disk","mode":"wide","href":"/v1.15.13/ko/concepts/checkpointing"}]},{"group":"MCP 통합","pages":[{"title":"CrewAI에서 MCP 서버를 도구로 활용하기","icon":"plug","mode":"wide","href":"/v1.15.13/ko/mcp/overview"},{"title":"MCP DSL 통합","icon":"code","mode":"wide","href":"/v1.15.13/ko/mcp/dsl-integration"},{"title":"Stdio 전송","icon":"server","mode":"wide","href":"/v1.15.13/ko/mcp/stdio"},{"title":"SSE 트랜스포트","icon":"wifi","mode":"wide","href":"/v1.15.13/ko/mcp/sse"},{"title":"스트리머블 HTTP 전송","icon":"globe","mode":"wide","href":"/v1.15.13/ko/mcp/streamable-http"},{"title":"여러 MCP 서버에 연결하기","icon":"layer-group","mode":"wide","href":"/v1.15.13/ko/mcp/multiple-servers"},{"title":"MCP 보안 고려사항","icon":"lock","mode":"wide","href":"/v1.15.13/ko/mcp/security"}]},{"group":"도구 (Tools)","pages":[{"title":"도구 개요","icon":"toolbox","mode":"wide","href":"/v1.15.13/ko/tools/overview"},{"group":"파일 \u0026 문서","icon":"folder-open","pages":[{"title":"개요","icon":"face-smile","mode":"wide","href":"/v1.15.13/ko/tools/file-document/overview"},{"title":"파일 읽기","icon":"folders","mode":"wide","href":"/v1.15.13/ko/tools/file-document/filereadtool"},{"title":"파일 쓰기","icon":"file-pen","mode":"wide","href":"/v1.15.13/ko/tools/file-document/filewritetool"},{"title":"PDF RAG 검색","icon":"file-pdf","mode":"wide","href":"/v1.15.13/ko/tools/file-document/pdfsearchtool"},{"title":"DOCX RAG 검색","icon":"file-word","mode":"wide","href":"/v1.15.13/ko/tools/file-document/docxsearchtool"},{"title":"MDX RAG 검색","icon":"markdown","mode":"wide","href":"/v1.15.13/ko/tools/file-document/mdxsearchtool"},{"title":"XML RAG 검색","icon":"file-xml","mode":"wide","href":"/v1.15.13/ko/tools/file-document/xmlsearchtool"},{"title":"TXT RAG 검색","icon":"file-lines","mode":"wide","href":"/v1.15.13/ko/tools/file-document/txtsearchtool"},{"title":"JSON RAG 검색","icon":"file-code","mode":"wide","href":"/v1.15.13/ko/tools/file-document/jsonsearchtool"},{"title":"CSV RAG 검색","icon":"file-csv","mode":"wide","href":"/v1.15.13/ko/tools/file-document/csvsearchtool"},{"title":"디렉터리 RAG 검색","icon":"address-book","mode":"wide","href":"/v1.15.13/ko/tools/file-document/directorysearchtool"},{"title":"디렉터리 읽기","icon":"folder-tree","mode":"wide","href":"/v1.15.13/ko/tools/file-document/directoryreadtool"},{"title":"OCR 도구","icon":"image","mode":"wide","href":"/v1.15.13/ko/tools/file-document/ocrtool"},{"title":"PDF 텍스트 작성 도구","icon":"file-pdf","mode":"wide","href":"/v1.15.13/ko/tools/file-document/pdf-text-writing-tool"}]},{"group":"웹 스크래핑 \u0026 브라우징","icon":"globe","pages":[{"title":"개요","icon":"face-smile","mode":"wide","href":"/v1.15.13/ko/tools/web-scraping/overview"},{"title":"웹사이트 스크랩","icon":"magnifying-glass-location","mode":"wide","href":"/v1.15.13/ko/tools/web-scraping/scrapewebsitetool"},{"title":"웹사이트 요소 스크랩 도구","icon":"code","mode":"wide","href":"/v1.15.13/ko/tools/web-scraping/scrapeelementfromwebsitetool"},{"title":"Scrapfly 웹사이트 스크레이핑 도구","icon":"spider","mode":"wide","href":"/v1.15.13/ko/tools/web-scraping/scrapflyscrapetool"},{"title":"Selenium 스크래퍼","icon":"clipboard-user","mode":"wide","href":"/v1.15.13/ko/tools/web-scraping/seleniumscrapingtool"},{"title":"Scrapegraph 스크레이프 도구","icon":"chart-area","mode":"wide","href":"/v1.15.13/ko/tools/web-scraping/scrapegraphscrapetool"},{"title":"Spider 스크레이퍼","icon":"spider-web","mode":"wide","href":"/v1.15.13/ko/tools/web-scraping/spidertool"},{"title":"Browserbase 웹 로더","icon":"browser","mode":"wide","href":"/v1.15.13/ko/tools/web-scraping/browserbaseloadtool"},{"title":"Hyperbrowser 로드 도구","icon":"globe","mode":"wide","href":"/v1.15.13/ko/tools/web-scraping/hyperbrowserloadtool"},{"title":"Stagehand 도구","icon":"hand","mode":"wide","href":"/v1.15.13/ko/tools/web-scraping/stagehandtool"},{"title":"Firecrawl 웹사이트 크롤링","icon":"fire-flame","mode":"wide","href":"/v1.15.13/ko/tools/web-scraping/firecrawlcrawlwebsitetool"},{"title":"Firecrawl 웹사이트 스크랩","icon":"fire-flame","mode":"wide","href":"/v1.15.13/ko/tools/web-scraping/firecrawlscrapewebsitetool"},{"title":"Oxylabs 스크래퍼","icon":"globe","mode":"wide","href":"/v1.15.13/ko/tools/web-scraping/oxylabsscraperstool"},{"title":"Bright Data 도구","icon":"spider","mode":"wide","href":"/v1.15.13/ko/tools/web-scraping/brightdata-tools"}]},{"group":"검색 및 연구","icon":"magnifying-glass","pages":[{"title":"개요","icon":"face-smile","mode":"wide","href":"/v1.15.13/ko/tools/search-research/overview"},{"title":"Google Serper 검색","icon":"google","mode":"wide","href":"/v1.15.13/ko/tools/search-research/serperdevtool"},{"title":"Brave Search","icon":"searchengin","mode":"wide","href":"/v1.15.13/ko/tools/search-research/bravesearchtool"},{"title":"EXA 검색 웹 로더","icon":"globe-pointer","mode":"wide","href":"/v1.15.13/ko/tools/search-research/exasearchtool"},{"title":"Linkup 검색 도구","icon":"link","mode":"wide","href":"/v1.15.13/ko/tools/search-research/linkupsearchtool"},{"title":"Github 검색","icon":"github","mode":"wide","href":"/v1.15.13/ko/tools/search-research/githubsearchtool"},{"title":"웹사이트 RAG 검색","icon":"globe-stand","mode":"wide","href":"/v1.15.13/ko/tools/search-research/websitesearchtool"},{"title":"코드 문서 RAG 검색","icon":"code","mode":"wide","href":"/v1.15.13/ko/tools/search-research/codedocssearchtool"},{"title":"YouTube 채널 RAG 검색","icon":"youtube","mode":"wide","href":"/v1.15.13/ko/tools/search-research/youtubechannelsearchtool"},{"title":"YouTube 동영상 RAG 검색","icon":"youtube","mode":"wide","href":"/v1.15.13/ko/tools/search-research/youtubevideosearchtool"},{"title":"Tavily 검색 도구","icon":"magnifying-glass","mode":"wide","href":"/v1.15.13/ko/tools/search-research/tavilysearchtool"},{"title":"Tavily 추출기 도구","icon":"square-poll-horizontal","mode":"wide","href":"/v1.15.13/ko/tools/search-research/tavilyextractortool"},{"title":"Tavily Research Tool","icon":"flask","mode":"wide","href":"/v1.15.13/ko/tools/search-research/tavilyresearchtool"},{"title":"Arxiv 논문 도구","icon":"box-archive","mode":"wide","href":"/v1.15.13/ko/tools/search-research/arxivpapertool"},{"title":"SerpApi 구글 검색 도구","icon":"google","mode":"wide","href":"/v1.15.13/ko/tools/search-research/serpapi-googlesearchtool"},{"title":"SerpApi 구글 쇼핑 도구","icon":"cart-shopping","mode":"wide","href":"/v1.15.13/ko/tools/search-research/serpapi-googleshoppingtool"},{"title":"Databricks SQL 쿼리 도구","icon":"trowel-bricks","mode":"wide","href":"/v1.15.13/ko/tools/search-research/databricks-query-tool"}]},{"group":"데이터베이스 \u0026 데이터","icon":"database","pages":[{"title":"개요","icon":"face-smile","mode":"wide","href":"/v1.15.13/ko/tools/database-data/overview"},{"title":"MySQL RAG 검색","icon":"database","mode":"wide","href":"/v1.15.13/ko/tools/database-data/mysqltool"},{"title":"PG RAG 검색","icon":"elephant","mode":"wide","href":"/v1.15.13/ko/tools/database-data/pgsearchtool"},{"title":"Snowflake 검색 도구","icon":"snowflake","mode":"wide","href":"/v1.15.13/ko/tools/database-data/snowflakesearchtool"},{"title":"NL2SQL 도구","icon":"language","mode":"wide","href":"/v1.15.13/ko/tools/database-data/nl2sqltool"},{"title":"Qdrant 벡터 검색 도구","icon":"vector-square","mode":"wide","href":"/v1.15.13/ko/tools/database-data/qdrantvectorsearchtool"},{"title":"Weaviate 벡터 검색","icon":"network-wired","mode":"wide","href":"/v1.15.13/ko/tools/database-data/weaviatevectorsearchtool"},{"title":"MongoDB 벡터 검색 도구","icon":"leaf","mode":"wide","href":"/v1.15.13/ko/tools/database-data/mongodbvectorsearchtool"},{"title":"SingleStore 검색 도구","icon":"circle","mode":"wide","href":"/v1.15.13/ko/tools/database-data/singlestoresearchtool"}]},{"group":"인공지능 \u0026 머신러닝","icon":"brain","pages":[{"title":"개요","icon":"face-smile","mode":"wide","href":"/v1.15.13/ko/tools/ai-ml/overview"},{"title":"DALL-E 도구","icon":"image","mode":"wide","href":"/v1.15.13/ko/tools/ai-ml/dalletool"},{"title":"비전 도구","icon":"eye","mode":"wide","href":"/v1.15.13/ko/tools/ai-ml/visiontool"},{"title":"AI 마인드 툴","icon":"brain","mode":"wide","href":"/v1.15.13/ko/tools/ai-ml/aimindtool"},{"title":"LlamaIndex 도구","icon":"address-book","mode":"wide","href":"/v1.15.13/ko/tools/ai-ml/llamaindextool"},{"title":"LangChain 도구","icon":"link","mode":"wide","href":"/v1.15.13/ko/tools/ai-ml/langchaintool"},{"title":"RAG 도구","icon":"vector-square","mode":"wide","href":"/v1.15.13/ko/tools/ai-ml/ragtool"},{"title":"코드 인터프리터","icon":"code-simple","mode":"wide","href":"/v1.15.13/ko/tools/ai-ml/codeinterpretertool"}]},{"group":"클라우드 \u0026 스토리지","icon":"cloud","pages":[{"title":"개요","icon":"face-smile","mode":"wide","href":"/v1.15.13/ko/tools/cloud-storage/overview"},{"title":"S3 리더 도구","icon":"aws","mode":"wide","href":"/v1.15.13/ko/tools/cloud-storage/s3readertool"},{"title":"S3 Writer Tool","icon":"aws","mode":"wide","href":"/v1.15.13/ko/tools/cloud-storage/s3writertool"},{"title":"Bedrock 지식 베이스 검색기","icon":"aws","mode":"wide","href":"/v1.15.13/ko/tools/cloud-storage/bedrockkbretriever"}]},{"group":"Integrations","icon":"plug","pages":[{"title":"개요","icon":"plug","mode":"wide","href":"/v1.15.13/ko/tools/integration/overview"},{"title":"Bedrock Invoke Agent Tool","icon":"aws","mode":"wide","href":"/v1.15.13/ko/tools/integration/bedrockinvokeagenttool"},{"title":"CrewAI Run Automation Tool","icon":"robot","href":"/v1.15.13/ko/tools/integration/crewaiautomationtool"}]},{"group":"자동화","icon":"bolt","pages":[{"title":"개요","icon":"face-smile","mode":"wide","href":"/v1.15.13/ko/tools/automation/overview"},{"title":"Apify 액터","icon":"); -webkit-mask-image: url('https://upload.wikimedia.org/wikipedia/commons/a/ae/Apify.svg');/*","mode":"wide","href":"/v1.15.13/ko/tools/automation/apifyactorstool"},{"title":"Composio 도구","icon":"gear-code","mode":"wide","href":"/v1.15.13/ko/tools/automation/composiotool"},{"title":"MultiOn Tool","icon":"globe","mode":"wide","href":"/v1.15.13/ko/tools/automation/multiontool"},{"title":"Zapier 액션 도구","icon":"bolt","mode":"wide","href":"/v1.15.13/ko/tools/automation/zapieractionstool"}]}]},{"group":"Observability","pages":[{"title":"CrewAI Tracing","icon":"magnifying-glass-chart","mode":"wide","href":"/v1.15.13/ko/observability/tracing"},{"title":"개요","icon":"face-smile","mode":"wide","href":"/v1.15.13/ko/observability/overview"},{"title":"Arize Phoenix","icon":"magnifying-glass-chart","mode":"wide","href":"/v1.15.13/ko/observability/arize-phoenix"},{"title":"Braintrust","icon":"magnifying-glass-chart","mode":"wide","href":"/v1.15.13/ko/observability/braintrust"},{"title":"Datadog 통합","icon":"dog","mode":"wide","href":"/v1.15.13/ko/observability/datadog"},{"title":"Galileo 갈릴레오","icon":"telescope","mode":"wide","href":"/v1.15.13/ko/observability/galileo"},{"title":"LangDB 통합","icon":"database","mode":"wide","href":"/v1.15.13/ko/observability/langdb"},{"title":"Langfuse 통합","icon":"vials","mode":"wide","href":"/v1.15.13/ko/observability/langfuse"},{"title":"Langtrace 연동","icon":"chart-line","mode":"wide","href":"/v1.15.13/ko/observability/langtrace"},{"title":"Maxim Integration","icon":"infinity","mode":"wide","href":"/v1.15.13/ko/observability/maxim"},{"title":"MLflow 통합","icon":"bars-staggered","mode":"wide","href":"/v1.15.13/ko/observability/mlflow"},{"title":"Neatlogs 통합","icon":"magnifying-glass-chart","mode":"wide","href":"/v1.15.13/ko/observability/neatlogs"},{"title":"OpenLIT 통합","icon":"magnifying-glass-chart","mode":"wide","href":"/v1.15.13/ko/observability/openlit"},{"title":"Opik 통합","icon":"meteor","mode":"wide","href":"/v1.15.13/ko/observability/opik"},{"title":"Patronus AI 평가","icon":"shield-check","mode":"wide","href":"/v1.15.13/ko/observability/patronus-evaluation"},{"title":"Portkey 통합","icon":"key","mode":"wide","href":"/v1.15.13/ko/observability/portkey"},{"title":"Weave 통합","icon":"radar","mode":"wide","href":"/v1.15.13/ko/observability/weave"}]},{"group":"학습","pages":[{"title":"개요","icon":"face-smile","mode":"wide","href":"/v1.15.13/ko/learn/overview"},{"title":"전략적 LLM 선택 가이드","icon":"brain-circuit","mode":"wide","href":"/v1.15.13/ko/learn/llm-selection-guide"},{"title":"조건부 태스크","icon":"diagram-subtask","mode":"wide","href":"/v1.15.13/ko/learn/conditional-tasks"},{"title":"코딩 에이전트","icon":"rectangle-code","mode":"wide","href":"/v1.15.13/ko/learn/coding-agents"},{"title":"커스텀 도구 생성","icon":"hammer","mode":"wide","href":"/v1.15.13/ko/learn/create-custom-tools"},{"title":"커스텀 LLM 구현","icon":"code","mode":"wide","href":"/v1.15.13/ko/learn/custom-llm"},{"title":"커스텀 매니저 에이전트","icon":"user-shield","mode":"wide","href":"/v1.15.13/ko/learn/custom-manager-agent"},{"title":"에이전트 맞춤화","icon":"user-pen","mode":"wide","href":"/v1.15.13/ko/learn/customizing-agents"},{"title":"DALL-E를 활용한 이미지 생성","icon":"image","mode":"wide","href":"/v1.15.13/ko/learn/dalle-image-generation"},{"title":"도구 출력 결과로 강제 지정하기","icon":"wrench-simple","mode":"wide","href":"/v1.15.13/ko/learn/force-tool-output-as-result"},{"title":"계층적 프로세스","icon":"sitemap","mode":"wide","href":"/v1.15.13/ko/learn/hierarchical-process"},{"title":"실행 중 인간 입력","icon":"user-plus","mode":"wide","href":"/v1.15.13/ko/learn/human-input-on-execution"},{"title":"Human-in-the-Loop (HITL) 워크플로우","icon":"user-check","mode":"wide","href":"/v1.15.13/ko/learn/human-in-the-loop"},{"title":"Flow에서 인간 피드백","icon":"user-check","mode":"wide","href":"/v1.15.13/ko/learn/human-feedback-in-flows"},{"title":"Crew 비동기 시작","icon":"rocket-launch","mode":"wide","href":"/v1.15.13/ko/learn/kickoff-async"},{"title":"각 항목에 대한 Kickoff Crew","icon":"at","mode":"wide","href":"/v1.15.13/ko/learn/kickoff-for-each"},{"title":"스트리밍 런타임 계약","icon":"tower-broadcast","mode":"wide","href":"/v1.15.13/ko/learn/streaming-runtime-contract"},{"title":"모든 LLM에 연결하기","icon":"brain-circuit","mode":"wide","href":"/v1.15.13/ko/learn/llm-connections"},{"title":"멀티모달 에이전트 사용하기","icon":"video","mode":"wide","href":"/v1.15.13/ko/learn/multimodal-agents"},{"title":"최신 Crew Kickoff에서 작업 다시 실행하기","icon":"arrow-right","mode":"wide","href":"/v1.15.13/ko/learn/replay-tasks-from-latest-crew-kickoff"},{"title":"순차 프로세스","description":"CrewAI 프로젝트에서 작업 실행을 위한 순차 프로세스를 활용하는 방법에 대한 종합 가이드입니다.","icon":"forward","mode":"wide","href":"/v1.15.13/ko/learn/sequential-process"},{"title":"crew.py에서 어노테이션 사용하기","icon":"at","mode":"wide","href":"/v1.15.13/ko/learn/using-annotations"},{"title":"실행 훅 개요","description":"에이전트 작업에 대한 세밀한 제어를 위한 CrewAI 실행 훅 이해 및 사용","mode":"wide","href":"/v1.15.13/ko/learn/execution-hooks"},{"title":"LLM 호출 훅","mode":"wide","href":"/v1.15.13/ko/learn/llm-hooks"},{"title":"도구 호출 훅","mode":"wide","href":"/v1.15.13/ko/learn/tool-hooks"}]},{"group":"Telemetry","pages":[{"title":"텔레메트리","icon":"signal-stream","mode":"wide","href":"/v1.15.13/ko/telemetry"}]}]},{"tab":"엔터프라이즈","icon":"briefcase","href":"https://docs-platform.crewai.com/platform/ko/introduction"},{"tab":"API 레퍼런스","icon":"magnifying-glass","pages":[{"title":"API 레퍼런스","href":"/v1.15.13/ko/api-reference/introduction"}]},{"tab":"예시","icon":"code","pages":[{"title":"예시","href":"/v1.15.13/ko/examples/example"}]},{"tab":"변경 로그","icon":"clock","pages":[{"title":"변경 로그","href":"/v1.15.13/ko/changelog"}]}]},{"version":"v1.15.12","pages":[{"title":"v1.15.12","href":"/v1.15.12/ko/learn/using-annotations"}]},{"version":"v1.15.11","pages":[{"title":"v1.15.11","href":"/v1.15.11/ko/learn/using-annotations"}]},{"version":"v1.15.10","pages":[{"title":"v1.15.10","href":"/v1.15.10/ko/learn/using-annotations"}]},{"version":"v1.15.9","pages":[{"title":"v1.15.9","href":"/v1.15.9/ko/learn/using-annotations"}]},{"version":"v1.15.8","pages":[{"title":"v1.15.8","href":"/v1.15.8/ko/learn/using-annotations"}]},{"version":"v1.15.7","pages":[{"title":"v1.15.7","href":"/v1.15.7/ko/learn/using-annotations"}]},{"version":"v1.15.6","pages":[{"title":"v1.15.6","href":"/v1.15.6/ko/learn/using-annotations"}]},{"version":"v1.15.5","pages":[{"title":"v1.15.5","href":"/v1.15.5/ko/learn/using-annotations"}]},{"version":"v1.15.4","pages":[{"title":"v1.15.4","href":"/v1.15.4/ko/learn/using-annotations"}]},{"version":"v1.15.3","pages":[{"title":"v1.15.3","href":"/v1.15.3/ko/learn/using-annotations"}]},{"version":"v1.15.2","pages":[{"title":"v1.15.2","href":"/v1.15.2/ko/learn/using-annotations"}]},{"version":"v1.15.1","pages":[{"title":"v1.15.1","href":"/v1.15.1/ko/learn/using-annotations"}]},{"version":"v1.15.0","pages":[{"title":"v1.15.0","href":"/v1.15.0/ko/learn/using-annotations"}]},{"version":"v1.14.7","pages":[{"title":"v1.14.7","href":"/v1.14.7/ko/learn/using-annotations"}]},{"version":"v1.14.6","pages":[{"title":"v1.14.6","href":"/v1.14.6/ko/learn/using-annotations"}]},{"version":"v1.14.5","pages":[{"title":"v1.14.5","href":"/v1.14.5/ko/learn/using-annotations"}]},{"version":"v1.14.4","pages":[{"title":"v1.14.4","href":"/v1.14.4/ko/learn/using-annotations"}]},{"version":"v1.14.3","pages":[{"title":"v1.14.3","href":"/v1.14.3/ko/learn/using-annotations"}]},{"version":"v1.14.2","pages":[{"title":"v1.14.2","href":"/v1.14.2/ko/learn/using-annotations"}]},{"version":"v1.14.1","pages":[{"title":"v1.14.1","href":"/v1.14.1/ko/learn/using-annotations"}]},{"version":"v1.14.0","pages":[{"title":"v1.14.0","href":"/v1.14.0/ko/learn/using-annotations"}]},{"version":"v1.13.0","pages":[{"title":"v1.13.0","href":"/v1.13.0/ko/learn/using-annotations"}]},{"version":"v1.12.2","pages":[{"title":"v1.12.2","href":"/v1.12.2/ko/learn/using-annotations"}]},{"version":"v1.12.1","pages":[{"title":"v1.12.1","href":"/v1.12.1/ko/learn/using-annotations"}]},{"version":"v1.12.0","pages":[{"title":"v1.12.0","href":"/v1.12.0/ko/learn/using-annotations"}]},{"version":"v1.11.1","pages":[{"title":"v1.11.1","href":"/v1.11.1/ko/learn/using-annotations"}]},{"version":"v1.11.0","pages":[{"title":"v1.11.0","href":"/v1.11.0/ko/learn/using-annotations"}]},{"version":"v1.10.1","pages":[{"title":"v1.10.1","href":"/v1.10.1/ko/learn/using-annotations"}]},{"version":"v1.10.0","pages":[{"title":"v1.10.0","href":"/v1.10.0/ko/learn/using-annotations"}]}],"global":{"anchors":[{"anchor":"웹사이트","icon":"globe","href":"https://crewai.com"},{"anchor":"포럼","icon":"discourse","href":"https://community.crewai.com"},{"anchor":"블로그","icon":"newspaper","href":"https://blog.crewai.com"},{"anchor":"CrewGPT","icon":"robot","href":"https://chatgpt.com/g/g-qqTuUWsBY-crewai-assistant"}]}},{"language":"ar","pages":[{"title":"ar","href":"/v1.15.13/ar/learn/using-annotations"}]}]},"title":"crew.py에서 어노테이션 사용하기 - CrewAI","buildId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","deploymentId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","dynamics":[],"chunks":[]}