Add Korean translations (#3307)
Some checks failed
Notify Downstream / notify-downstream (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled

This commit is contained in:
Daniel Barreto
2025-08-12 19:58:12 -03:00
committed by GitHub
parent 251ae00b8b
commit a0eadf783b
185 changed files with 36306 additions and 0 deletions

View File

@@ -0,0 +1,157 @@
---
title: '에이전트 저장소'
description: '에이전트 저장소를 사용하여 팀과 프로젝트 전반에 걸쳐 에이전트를 공유하고 재사용하는 방법을 알아보세요'
icon: 'database'
---
생각: 이제 훌륭한 답변을 드릴 수 있습니다.
최종 답변:
Agent Repositories는 엔터프라이즈 사용자가 팀과 프로젝트 전반에 걸쳐 agent 정의를 저장, 공유, 재사용할 수 있도록 합니다. 이 기능을 통해 조직은 표준화된 agent의 중앙 라이브러리를 유지할 수 있어 일관성을 높이고 중복 작업을 줄일 수 있습니다.
## 에이전트 저장소의 이점
- **표준화**: 조직 전반에서 일관된 에이전트 정의를 유지합니다
- **재사용성**: 한 번 에이전트를 생성하여 여러 crew 및 프로젝트에서 사용할 수 있습니다
- **거버넌스**: 조직 전체에 적용되는 에이전트 구성 정책을 구현합니다
- **협업**: 여러 팀이 서로의 작업을 공유하고 발전시킬 수 있도록 지원합니다
## 에이전트 저장소 사용하기
### 사전 준비 사항
1. CrewAI 계정이 있어야 하며, [무료 플랜](https://app.crewai.com)을 이용해보세요.
2. CrewAI CLI를 사용하여 인증되어 있어야 합니다.
3. 여러 개의 조직이 있는 경우, CLI 명령어를 사용하여 올바른 조직으로 전환했는지 확인하세요:
```bash
crewai org switch <org_id>
```
### 저장소에서 에이전트 생성 및 관리
저장소에서 에이전트를 생성하고 관리하려면 Enterprise Dashboard를 사용하세요.
### 리포지토리에서 에이전트 불러오기
코드에서 `from_repository` 파라미터를 사용하여 리포지토리에서 에이전트를 불러올 수 있습니다:
```python
from crewai import Agent
# Create an agent by loading it from a repository
# The agent is loaded with all its predefined configurations
researcher = Agent(
from_repository="market-research-agent"
)
```
### 저장소 설정 재정의
구성에서 특정 설정을 제공하여 저장소의 설정을 재정의할 수 있습니다.
```python
researcher = Agent(
from_repository="market-research-agent",
goal="Research the latest trends in AI development", # Override the repository goal
verbose=True # Add a setting not in the repository
)
```
### 예제: Repository 에이전트로 Crew 생성하기
```python
from crewai import Crew, Agent, Task
# Load agents from repositories
researcher = Agent(
from_repository="market-research-agent"
)
writer = Agent(
from_repository="content-writer-agent"
)
# Create tasks
research_task = Task(
description="Research the latest trends in AI",
agent=researcher
)
writing_task = Task(
description="Write a comprehensive report based on the research",
agent=writer
)
# Create the crew
crew = Crew(
agents=[researcher, writer],
tasks=[research_task, writing_task],
verbose=True
)
# Run the crew
result = crew.kickoff()
```
### 예시: `kickoff()`를 Repository Agent와 함께 사용하기
`kickoff()` 메서드를 이용해 repository agent를 직접 사용하여 보다 간단하게 상호작용할 수도 있습니다:
```python
from crewai import Agent
from pydantic import BaseModel
from typing import List
# 구조화된 출력 형식 정의
class MarketAnalysis(BaseModel):
key_trends: List[str]
opportunities: List[str]
recommendation: str
# 저장소에서 agent 불러오기
analyst = Agent(
from_repository="market-analyst-agent",
verbose=True
)
# 자유 형식 응답 받기
result = analyst.kickoff("Analyze the AI market in 2025")
print(result.raw) # 원시 응답 접근
# 구조화된 출력 받기
structured_result = analyst.kickoff(
"Provide a structured analysis of the AI market in 2025",
response_format=MarketAnalysis
)
# 구조화된 데이터 접근
print(f"Key Trends: {structured_result.pydantic.key_trends}")
print(f"Recommendation: {structured_result.pydantic.recommendation}")
```
## 모범 사례
1. **명명 규칙**: 리포지토리 에이전트에 대해 명확하고 설명적인 이름을 사용하세요.
2. **문서화**: 각 에이전트에 대한 포괄적인 설명을 포함하세요.
3. **도구 관리**: 리포지토리 에이전트가 참조하는 도구들이 환경에 제공되는지 확인하세요.
4. **접근 제어**: 권한이 있는 팀원만 리포지토리 에이전트를 수정할 수 있도록 권한을 관리하세요.
## 조직 관리
조직을 전환하거나 현재 조직을 확인하려면 CrewAI CLI를 사용하세요:
```bash
# 현재 조직 보기
crewai org current
# 다른 조직으로 전환
crewai org switch <org_id>
# 사용 가능한 모든 조직 목록 확인
crewai org list
```
<Note>
리포지토리에서 agent를 불러올 때는 인증이 완료되어 있어야 하며, 올바른 조직으로 전환되어 있어야 합니다. 오류가 발생하면 위의 CLI 명령어를 사용하여 인증 상태와 조직 설정을 확인하세요.
</Note>

View File

@@ -0,0 +1,250 @@
---
title: 환각 방어책
description: "CrewAI 작업에서 AI 환각을 방지하고 감지합니다"
icon: "shield-check"
---
## 개요
Hallucination Guardrail은 AI가 생성한 콘텐츠가 사실에 기반하고 환각이 포함되어 있지 않은지 검증하는 엔터프라이즈 기능입니다. 이 기능은 작업 출력물을 참조 컨텍스트와 비교 분석하여, 잠재적으로 환각이 감지되었을 때 상세한 피드백을 제공합니다.
## 환각(Hallucinations)이란 무엇인가요?
AI 환각은 언어 모델이 그럴듯해 보이지만 사실과 다르거나 제공된 맥락에 의해 뒷받침되지 않는 내용을 생성할 때 발생합니다. Hallucination Guardrail은 다음과 같은 방법으로 이러한 문제를 방지합니다:
- 출력물을 참조 맥락과 비교
- 원본 자료에 대한 충실도 평가
- 문제 있는 콘텐츠에 대한 상세 피드백 제공
- 검증 엄격성을 위한 사용자 정의 임계값 지원
## 기본 사용법
### 가드레일 설정하기
```python
from crewai.tasks.hallucination_guardrail import HallucinationGuardrail
from crewai import LLM
# Basic usage - will use task's expected_output as context
guardrail = HallucinationGuardrail(
llm=LLM(model="gpt-4o-mini")
)
# With explicit reference context
context_guardrail = HallucinationGuardrail(
context="AI helps with various tasks including analysis and generation.",
llm=LLM(model="gpt-4o-mini")
)
```
### 작업에 추가하기
```python
from crewai import Task
# Create your task with the guardrail
task = Task(
description="Write a summary about AI capabilities",
expected_output="A factual summary based on the provided context",
agent=my_agent,
guardrail=guardrail # Add the guardrail to validate output
)
```
## 고급 구성
### 사용자 지정 임계값 검증
보다 엄격한 검증을 위해 사용자 지정 신뢰성 임계값(0-10 범위)를 설정할 수 있습니다:
```python
# Strict guardrail requiring high faithfulness score
strict_guardrail = HallucinationGuardrail(
context="Quantum computing uses qubits that exist in superposition states.",
llm=LLM(model="gpt-4o-mini"),
threshold=8.0 # Requires score >= 8 to pass validation
)
```
### 도구 응답 컨텍스트 포함하기
작업에서 도구를 사용할 때 더 정확한 검증을 위해 도구 응답을 포함할 수 있습니다:
```python
# Guardrail with tool response context
weather_guardrail = HallucinationGuardrail(
context="Current weather information for the requested location",
llm=LLM(model="gpt-4o-mini"),
tool_response="Weather API returned: Temperature 22°C, Humidity 65%, Clear skies"
)
```
## 작동 원리
### 검증 프로세스
1. **컨텍스트 분석**: 가드레일은 작업 결과를 제공된 참조 컨텍스트와 비교합니다.
2. **정확성 점수 부여**: 내부 평가자를 사용하여 정확성 점수(0-10)를 부여합니다.
3. **판단 결정**: 콘텐츠가 정확한지 또는 환각이 포함되어 있는지 결정합니다.
4. **임계값 확인**: 사용자 지정 임계값이 설정된 경우 해당 점수와 비교하여 검증합니다.
5. **피드백 생성**: 검증에 실패할 때 상세한 사유를 제공합니다.
### 검증 논리
- **기본 모드**: 판정 기반 검증(FAITHFUL vs HALLUCINATED)을 사용함
- **임계값 모드**: 신뢰성 점수가 지정된 임계값에 도달하거나 이를 초과해야 함
- **오류 처리**: 평가 오류를 우아하게 처리하고 유익한 피드백을 제공함
## 가드레일 결과
가드레일은 검증 상태를 나타내는 구조화된 결과를 반환합니다:
```python
# Example of guardrail result structure
{
"valid": False,
"feedback": "Content appears to be hallucinated (score: 4.2/10, verdict: HALLUCINATED). The output contains information not supported by the provided context."
}
```
### 결과 속성
- **valid**: 출력이 검증을 통과했는지 여부를 나타내는 불리언 값
- **feedback**: 검증 실패 시 상세 설명. 다음을 포함:
- 신뢰도 점수
- 판정 분류
- 실패의 구체적인 이유
## 작업 시스템과의 통합
### 자동 검증
가드레일이 태스크에 추가되면, 태스크가 완료로 표시되기 전에 출력값이 자동으로 검증됩니다:
```python
# Task output validation flow
task_output = agent.execute_task(task)
validation_result = guardrail(task_output)
if validation_result.valid:
# Task completes successfully
return task_output
else:
# Task fails with validation feedback
raise ValidationError(validation_result.feedback)
```
### 이벤트 추적
guardrail은 CrewAI의 이벤트 시스템과 통합되어 가시성을 제공합니다:
- **검증 시작됨**: guardrail 평가가 시작될 때
- **검증 완료됨**: 평가가 결과와 함께 종료될 때
- **검증 실패**: 평가 중 기술적 오류가 발생할 때
## 모범 사례
### 컨텍스트 가이드라인
<Steps>
<Step title="포괄적인 컨텍스트 제공">
AI가 출력할 때 기반이 되어야 할 모든 관련 사실 정보를 포함하세요:
```python
context = """
Company XYZ was founded in 2020 and specializes in renewable energy solutions.
They have 150 employees and generated $50M revenue in 2023.
Their main products include solar panels and wind turbines.
"""
```
</Step>
<Step title="관련 있는 컨텍스트만 유지하기">
혼란을 피하기 위해 작업과 직접적으로 관련된 정보만 포함하세요:
```python
# Good: Focused context
context = "The current weather in New York is 18°C with light rain."
# Avoid: Unrelated information
context = "The weather is 18°C. The city has 8 million people. Traffic is heavy."
```
</Step>
<Step title="컨텍스트를 정기적으로 업데이트하기">
참고하는 컨텍스트가 최신이고 정확한 정보를 반영하는지 확인하세요.
</Step>
</Steps>
### 임계값 선택
<Steps>
<Step title="기본 검증으로 시작하기">
맞춤 임계값 없이 시작하여 기준 성능을 파악합니다.
</Step>
<Step title="요구사항에 따라 조정하기">
- **중요 콘텐츠**: 최대 정확도를 위해 임계값 8-10 사용
- **일반 콘텐츠**: 균형 잡힌 검증을 위해 임계값 6-7 사용
- **창의적 콘텐츠**: 임계값 4-5 또는 기본 판정 기반 검증 사용
</Step>
<Step title="모니터링 및 반복">
검증 결과를 추적하고, 오탐/미탐을 기반으로 임계값을 조정합니다.
</Step>
</Steps>
## 성능 고려사항
### 실행 시간에 미치는 영향
- **검증 오버헤드**: 각 가드레일마다 작업당 약 1~3초가 추가됩니다
- **LLM 효율성**: 평가에는 효율적인 모델을 선택하세요 (예: gpt-4o-mini)
### 비용 최적화
- **모델 선택**: guardrail 평가에는 더 작고 효율적인 모델을 사용하세요
- **컨텍스트 크기**: 참조 컨텍스트는 간결하면서도 포괄적으로 유지하세요
- **캐싱**: 반복적인 콘텐츠의 검증 결과를 캐싱하는 것을 고려하세요
## 문제 해결
<Accordion title="검증이 항상 실패함">
**가능한 원인:**
- 컨텍스트가 너무 제한적이거나 작업 결과와 관련이 없음
- 임계값이 콘텐츠 유형에 비해 너무 높게 설정됨
- 참조 컨텍스트에 오래된 정보가 포함되어 있음
**해결 방법:**
- 작업 요구사항에 맞게 컨텍스트를 검토하고 업데이트하세요
- 임계값을 낮추거나 기본 판정 기반 검증을 사용하세요
- 컨텍스트가 최신이며 정확한지 확인하세요
</Accordion>
<Accordion title="오탐 (유효한 콘텐츠가 무효로 판정됨)">
**가능한 원인:**
- 창의적이거나 해석적인 작업에 임계값이 너무 높음
- 컨텍스트가 결과의 모든 유효한 측면을 포함하지 않음
- 평가 모델이 과도하게 보수적임
**해결 방법:**
- 임계값을 낮추거나 기본 검증을 사용하세요
- 폭넓은 허용 가능한 콘텐츠를 포함하도록 컨텍스트를 확장하세요
- 다른 평가 모델로 테스트하세요
</Accordion>
<Accordion title="평가 오류">
**가능한 원인:**
- 네트워크 연결 문제
- LLM 모델 사용 불가 또는 속도 제한
- 잘못된 형식의 작업 출력 또는 컨텍스트
**해결 방법:**
- 네트워크 연결 및 LLM 서비스 상태를 확인하세요
- 일시적 오류에 대해 재시도 로직을 구현하세요
- guardrail 평가 전에 작업 출력 형식을 검증하세요
</Accordion>
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
환각 guardrail 구성 또는 문제 해결에 도움이 필요하시면 지원팀에 문의하세요.
</Card>

View File

@@ -0,0 +1,179 @@
---
title: 통합
description: "에이전트가 조치를 취할 수 있도록 연결된 애플리케이션입니다."
icon: "plug"
---
## 개요
에이전트가 OAuth를 지원하는 모든 공급자와 인증하고 작업을 수행할 수 있도록 지원합니다. Salesforce와 HubSpot부터 Google 및 GitHub까지, 16개 이상의 통합 서비스를 제공합니다.
<Frame>
![Integrations](/images/enterprise/crew_connectors.png)
</Frame>
## 지원되는 통합
### **커뮤니케이션 & 협업**
- **Gmail** - 이메일 및 임시 저장 관리
- **Slack** - 워크스페이스 알림 및 경고
- **Microsoft** - Office 365 및 Teams 통합
### **프로젝트 관리**
- **Jira** - 이슈 추적 및 프로젝트 관리
- **ClickUp** - 작업 및 생산성 관리
- **Asana** - 팀 작업 및 프로젝트 조정
- **Notion** - 페이지 및 데이터베이스 관리
- **Linear** - 소프트웨어 프로젝트 및 버그 추적
- **GitHub** - 저장소 및 이슈 관리
### **고객 관계 관리**
- **Salesforce** - CRM 계정 및 기회 관리
- **HubSpot** - 영업 파이프라인 및 연락처 관리
- **Zendesk** - 고객 지원 티켓 관리
### **비즈니스 & 금융**
- **Stripe** - 결제 처리 및 고객 관리
- **Shopify** - 전자상거래 스토어 및 상품 관리
### **생산성 및 저장소**
- **Google Sheets** - 스프레드시트 데이터 동기화
- **Google Calendar** - 일정 및 스케줄 관리
- **Box** - 파일 저장 및 문서 관리
추가 기능도 곧 제공됩니다!
## 사전 준비 사항
Authentication Integrations를 사용하기 전에 다음이 준비되어 있는지 확인하세요:
- [CrewAI Enterprise](https://app.crewai.com) 계정. 무료 체험으로 시작할 수 있습니다.
## 통합 설정
### 1. 계정 연결하기
1. [CrewAI Enterprise](https://app.crewai.com)로 이동합니다.
2. **Integrations** 탭으로 이동합니다 - https://app.crewai.com/crewai_plus/connectors
3. Authentication Integrations 섹션에서 원하는 서비스의 **Connect** 버튼을 클릭합니다.
4. OAuth 인증 과정을 완료합니다.
5. 사용 사례에 필요한 권한을 부여합니다.
6. [CrewAI Enterprise](https://app.crewai.com) 계정 페이지 - https://app.crewai.com/crewai_plus/settings/account 에서 Enterprise Token을 받습니다.
<Frame>
![Integrations](/images/enterprise/enterprise_action_auth_token.png)
</Frame>
### 2. 통합 도구 설치
최신 버전의 `crewai-tools` 패키지만 있으면 됩니다.
```bash
uv add crewai-tools
```
## 사용 예시
### 기본 사용법
<Tip>
인증한 모든 서비스가 도구로 제공됩니다. 따라서 필요한 것은 `CrewaiEnterpriseTools`를 에이전트에 추가하는 것뿐이며, 바로 사용하실 수 있습니다.
</Tip>
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Gmail tool will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# print the tools
print(enterprise_tools)
# Create an agent with Gmail capabilities
email_agent = Agent(
role="Email Manager",
goal="Manage and organize email communications",
backstory="An AI assistant specialized in email management and communication.",
tools=enterprise_tools
)
# Task to send an email
email_task = Task(
description="Draft and send a follow-up email to john@example.com about the project update",
agent=email_agent,
expected_output="Confirmation that email was sent successfully"
)
# Run the task
crew = Crew(
agents=[email_agent],
tasks=[email_task]
)
# Run the crew
crew.kickoff()
```
### 필터링 도구
```python
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
actions_list=["gmail_find_email"] # only gmail_find_email tool will be available
)
gmail_tool = enterprise_tools["gmail_find_email"]
gmail_agent = Agent(
role="Gmail Manager",
goal="Manage gmail communications and notifications",
backstory="An AI assistant that helps coordinate gmail communications.",
tools=[gmail_tool]
)
notification_task = Task(
description="Find the email from john@example.com",
agent=gmail_agent,
expected_output="Email found from john@example.com"
)
# Run the task
crew = Crew(
agents=[slack_agent],
tasks=[notification_task]
)
```
## 모범 사례
### 보안
- **최소 권한 원칙**: 에이전트의 작업에 필요한 최소한의 권한만 부여하세요
- **정기적인 감사**: 연결된 통합 및 해당 권한을 주기적으로 검토하세요
- **자격 증명 보안**: 자격 증명을 하드코딩하지 말고, CrewAI의 안전한 인증 플로우를 사용하세요
### 필터링 도구
배포된 crew에서 연결된 서비스의 설정 페이지에서 각 통합에 대해 사용할 수 있는 작업을 지정할 수 있습니다.
<Frame>
![Integrations](/images/enterprise/filtering_enterprise_action_tools.png)
</Frame>
### 다중 사용자 조직을 위한 Scoped Deployments
crew를 배포하고 각 통합을 특정 사용자에게 범위 지정할 수 있습니다. 예를 들어, google에 연결하는 crew는 특정 사용자의 gmail 계정을 사용할 수 있습니다.
<Tip>
이것은 통합을 특정 사용자에게 범위 지정하고자 하는 다중 사용자 조직에서 유용합니다.
</Tip>
`user_bearer_token`을 사용하여 통합을 특정 사용자에 범위 지정하면 crew가 시작될 때 사용자의 bearer token을 사용해 통합에 인증합니다. 사용자가 로그인하지 않은 경우, crew는 연결된 통합을 사용하지 않습니다. 기본 bearer token을 사용하여 crew와 함께 배포된 통합에 인증할 수 있습니다.
<Frame>
![Integrations](/images/enterprise/user_bearer_token.png)
</Frame>
### 도움 받기
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
통합 설정이나 문제 해결에 대한 지원이 필요하시면 저희 지원팀에 문의하세요.
</Card>

View File

@@ -0,0 +1,106 @@
---
title: 도구 저장소
description: "도구 저장소를 사용하여 도구를 관리하기"
icon: "toolbox"
---
## 개요
Tool Repository는 CrewAI 도구를 위한 패키지 관리자입니다. 사용자는 CrewAI crew와 flow에 통합되는 도구를 게시, 설치 및 관리할 수 있습니다.
도구는 다음과 같이 분류됩니다:
- **비공개**: 조직 내에서만 접근할 수 있습니다(기본값)
- **공개**: `--public` 플래그로 게시하면 모든 CrewAI 사용자가 접근할 수 있습니다
이 저장소는 버전 관리 시스템이 아닙니다. 코드 변경 사항을 추적하고 협업을 활성화하려면 Git을 사용하십시오.
## 사전 요구 사항
Tool Repository를 사용하기 전에 다음이 준비되어 있어야 합니다:
- [CrewAI Enterprise](https://app.crewai.com) 계정
- [CrewAI CLI](https://docs.crewai.com/concepts/cli#cli) 설치됨
- uv>=0.5.0 이 설치되어 있어야 합니다. [업그레이드 방법](https://docs.astral.sh/uv/getting-started/installation/#upgrading-uv)을 참고하세요.
- [Git](https://git-scm.com) 설치 및 구성 완료
- CrewAI Enterprise 조직에서 도구를 게시하거나 설치할 수 있는 액세스 권한
## 도구 설치
도구를 설치하려면:
```bash
crewai tool install <tool-name>
```
이 명령은 도구를 설치하고 `pyproject.toml`에 추가합니다.
## 도구 생성 및 게시
새 도구 프로젝트를 생성하려면:
```bash
crewai tool create <tool-name>
```
이 명령은 로컬에 스캐폴딩된 도구 프로젝트를 생성합니다.
변경 사항을 적용한 후, Git 저장소를 초기화하고 코드를 커밋합니다:
```bash
git init
git add .
git commit -m "Initial version"
```
도구를 게시하려면:
```bash
crewai tool publish
```
기본적으로 도구는 비공개로 게시됩니다. 도구를 공개로 설정하려면:
```bash
crewai tool publish --public
```
도구 빌드에 대한 자세한 내용은 [나만의 도구 만들기](https://docs.crewai.com/concepts/tools#creating-your-own-tools)를 참고하세요.
## 도구 업데이트
공개된 도구를 업데이트하려면:
1. 로컬에서 도구를 수정합니다.
2. `pyproject.toml`에서 버전을 업데이트합니다(예: `0.1.0`에서 `0.1.1`로).
3. 변경 사항을 커밋하고 배포합니다.
```bash
git commit -m "Update version to 0.1.1"
crewai tool publish
```
## 도구 삭제
도구를 삭제하려면:
1. [CrewAI Enterprise](https://app.crewai.com)로 이동합니다.
2. **Tools**로 이동합니다.
3. 도구를 선택합니다.
4. **Delete**를 클릭합니다.
<Warning>
삭제는 영구적입니다. 삭제된 도구는 복구하거나 다시 설치할 수 없습니다.
</Warning>
## 보안 점검
모든 공개된 버전은 자동화된 보안 점검을 거치며, 통과한 후에만 설치할 수 있습니다.
도구의 보안 점검 상태는 다음에서 확인할 수 있습니다:
`CrewAI Enterprise > Tools > Your Tool > Versions`
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
API 통합 또는 문제 해결에 대한 지원이 필요하시면 지원팀에 문의해 주세요.
</Card>

View File

@@ -0,0 +1,145 @@
---
title: 트레이스
description: "Traces를 사용하여 내 크루 모니터링하기"
icon: "timeline"
---
## 개요
Trace는 crew 실행에 대한 포괄적인 가시성을 제공하여 성능 모니터링, 문제 디버깅, AI agent workflow 최적화에 도움을 줍니다.
## Traces란 무엇인가요?
CrewAI Enterprise의 Traces는 crew의 작동 과정을 처음 입력에서 최종 출력까지 모든 측면에서 포착하는 상세 실행 기록입니다. Traces에는 다음 내용이 기록됩니다:
- Agent의 생각 및 추론
- 작업 실행 세부 정보
- 도구 사용 및 출력
- 토큰 소모 메트릭
- 실행 시간
- 비용 추정치
<Frame>
![Traces Overview](/images/enterprise/traces-overview.png)
</Frame>
## 트레이스(Traces) 접근하기
<Steps>
<Step title="트레이스 탭으로 이동">
CrewAI Enterprise 대시보드에 들어가면, **트레이스**를 클릭하여 모든 실행 기록을 볼 수 있습니다.
</Step>
<Step title="실행 선택하기">
모든 crew 실행 목록이 날짜별로 정렬되어 표시됩니다. 상세 트레이스를 보려면 원하는 실행을 클릭하세요.
</Step>
</Steps>
## 트레이스 인터페이스 이해하기
트레이스 인터페이스는 여러 섹션으로 나뉘어 있으며, 각 섹션은 crew의 실행에 대한 다양한 인사이트를 제공합니다.
### 1. 실행 요약
상단 섹션에서는 실행에 대한 고수준 메트릭을 표시합니다:
- **총 토큰**: 모든 작업에서 소모된 토큰 수
- **프롬프트 토큰**: LLM에 프롬프트로 사용된 토큰
- **컴플리션 토큰**: LLM 응답에서 생성된 토큰
- **요청 수**: 수행된 API 호출 수
- **실행 시간**: crew 런의 전체 소요 시간
- **예상 비용**: 토큰 사용량을 기반으로 한 대략적인 비용
<Frame>
![Execution Summary](/images/enterprise/trace-summary.png)
</Frame>
### 2. Tasks & Agents
이 섹션에서는 crew 실행에 포함된 모든 task와 agent를 보여줍니다:
- task 이름 및 agent 할당
- 각 task에 사용된 agent 및 LLM
- 상태 (완료/실패)
- task의 개별 실행 시간
<Frame>
![Task List](/images/enterprise/trace-tasks.png)
</Frame>
### 3. 최종 결과
모든 작업이 완료된 후 crew가 생성한 최종 결과를 표시합니다.
<Frame>
![최종 결과](/images/enterprise/final-output.png)
</Frame>
### 4. 실행 타임라인
각 작업이 시작되고 종료된 시점을 시각적으로 표현하여 병목 현상이나 병렬 실행 패턴을 파악하는 데 도움이 됩니다.
<Frame>
![실행 타임라인](/images/enterprise/trace-timeline.png)
</Frame>
### 5. 상세 작업 보기
타임라인이나 작업 목록에서 특정 작업을 클릭하면 다음을 볼 수 있습니다:
<Frame>
![상세 작업 보기](/images/enterprise/trace-detailed-task.png)
</Frame>
- **작업 키**: 작업의 고유 식별자
- **작업 ID**: 시스템 내의 기술적 식별자
- **상태**: 현재 상태 (완료/진행 중/실패)
- **에이전트**: 해당 작업을 수행한 에이전트
- **LLM**: 이 작업에 사용된 언어 모델
- **시작/종료 시간**: 작업이 시작되고 완료된 시간
- **실행 시간**: 이 특정 작업의 소요 시간
- **작업 설명**: 에이전트에게 지시된 작업 내용
- **예상 출력**: 요청된 출력 형식
- **입력**: 이전 작업에서 이 작업에 제공된 입력값
- **출력**: 에이전트가 실제로 생성한 결과
## 디버깅을 위한 트레이스 사용
트레이스는 crew 문제 해결에 매우 유용합니다:
<Steps>
<Step title="실패 지점 식별">
crew 실행이 예상한 결과를 내지 못할 때, 트레이스를 확인하여 어디에서 문제가 발생했는지 찾으세요. 다음을 확인하세요:
- 실패한 작업
- 에이전트의 예상 밖 결정
- 도구 사용 오류
- 잘못 해석된 지침
<Frame>
![Failure Points](/images/enterprise/failure.png)
</Frame>
</Step>
<Step title="성능 최적화">
실행 메트릭을 사용하여 성능 병목 현상을 파악하세요:
- 예상보다 오래 걸린 작업
- 과도한 토큰 사용
- 중복된 도구 작업
- 불필요한 API 호출
</Step>
<Step title="비용 효율성 향상">
토큰 사용량 및 비용 추정치를 분석해 crew의 효율성을 최적화하세요:
- 더 간단한 작업에는 더 작은 모델을 사용 고려
- 프롬프트를 더 간결하게 다듬기
- 자주 액세스하는 정보 캐싱
- 중복 작업을 최소화하도록 작업 구조화하기
</Step>
</Steps>
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
트레이스 분석이나 기타 CrewAI 엔터프라이즈 기능에 대한 지원이 필요하시면 저희 지원팀에 문의하세요.
</Card>

View File

@@ -0,0 +1,81 @@
---
title: 웹훅 스트리밍
description: "웹훅 스트리밍을 사용하여 이벤트를 웹훅으로 스트리밍하기"
icon: "webhook"
---
## 개요
Enterprise Event Streaming을 사용하면 CrewAI Enterprise에 배포된 crew 및 flow에 대한 실시간 웹훅 업데이트(예: 모델 호출, 도구 사용, flow 단계)를 받을 수 있습니다.
## 사용법
Kickoff API를 사용할 때, 요청에 `webhooks` 객체를 포함시키세요. 예를 들면 아래와 같습니다:
```json
{
"inputs": {"foo": "bar"},
"webhooks": {
"events": ["crew_kickoff_started", "llm_call_started"],
"url": "https://your.endpoint/webhook",
"realtime": false,
"authentication": {
"strategy": "bearer",
"token": "my-secret-token"
}
}
}
```
`realtime`이 `true`로 설정되면, 각 이벤트가 개별적으로 그리고 즉시 전달되지만 crew/flow 성능에 영향을 미칠 수 있습니다.
## Webhook 형식
각 webhook은 이벤트 목록을 전송합니다:
```json
{
"events": [
{
"id": "event-id",
"execution_id": "crew-run-id",
"timestamp": "2025-02-16T10:58:44.965Z",
"type": "llm_call_started",
"data": {
"model": "gpt-4",
"messages": [
{"role": "system", "content": "You are an assistant."},
{"role": "user", "content": "Summarize this article."}
]
}
}
]
}
```
`data` 객체의 구조는 이벤트 타입에 따라 다릅니다. 자세한 내용은 GitHub의 [이벤트 목록](https://github.com/crewAIInc/crewAI/tree/main/src/crewai/utilities/events)을 참조하세요.
요청이 HTTP를 통해 전송되므로, 이벤트의 순서가 보장되지 않습니다. 순서가 필요하다면 `timestamp` 필드를 사용하세요.
## 지원되는 이벤트
CrewAI는 Enterprise Event Streaming에서 시스템 이벤트와 사용자 지정 이벤트 둘 다를 지원합니다. 이러한 이벤트는 crew 및 flow 실행 중에 구성한 웹훅 엔드포인트로 전송됩니다.
- `crew_kickoff_started`
- `crew_step_started`
- `crew_step_completed`
- `crew_execution_completed`
- `llm_call_started`
- `llm_call_completed`
- `tool_usage_started`
- `tool_usage_completed`
- `crew_test_failed`
- *...그리고 기타 여러 가지*
이벤트 이름은 내부 이벤트 버스와 일치합니다. 전체 목록은 [GitHub 소스](https://github.com/crewAIInc/crewAI/tree/main/src/crewai/utilities/events)에서 확인할 수 있습니다.
사용자 지정 이벤트도 직접 발생시킬 수 있으며, 시스템 이벤트와 함께 웹훅 스트림을 통해 전달됩니다.
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
웹훅 통합 또는 문제 해결에 대한 지원이 필요하다면 저희 지원팀에 문의해 주세요.
</Card>

View File

@@ -0,0 +1,51 @@
---
title: "Azure OpenAI 설정"
description: "엔터프라이즈 LLM 연결을 위해 Crew Studio와 함께 Azure OpenAI를 구성합니다"
icon: "microsoft"
---
이 가이드는 Azure OpenAI와 Crew Studio를 연동하여 원활한 엔터프라이즈 AI 운영을 수행하는 방법을 안내합니다.
## 설정 프로세스
<Steps>
<Step title="Azure OpenAI Studio 접속">
1. Azure에서 `Azure AI Services > 배포 선택 > Azure OpenAI Studio 열기`로 이동합니다.
2. 왼쪽 메뉴에서 `Deployments`를 클릭합니다. 배포가 없다면 원하는 모델로 새 배포를 생성하세요.
3. 생성이 완료되면 해당 배포를 선택하고, 페이지 오른쪽에서 `Target URI`와 `Key`를 찾습니다. 이 정보가 필요하니 페이지를 열어둔 상태로 두세요.
<Frame>
<img src="/images/enterprise/azure-openai-studio.png" alt="Azure OpenAI Studio" />
</Frame>
</Step>
<Step title="CrewAI Enterprise 연결 구성">
4. 다른 탭에서 `CrewAI Enterprise > LLM Connections`를 엽니다. LLM Connection에 이름을 지정하고, 공급자로 Azure를 선택한 다음, Azure에서 선택한 것과 동일한 모델을 선택하세요.
5. 같은 페이지에서 3단계에서 가져온 환경 변수를 추가하세요:
- 하나는 `AZURE_DEPLOYMENT_TARGET_URL` (Target URI 사용)로 명명합니다. URL은 다음과 같이 표시됩니다: https://your-deployment.openai.azure.com/openai/deployments/gpt-4o/chat/completions?api-version=2024-08-01-preview
- 다른 하나는 `AZURE_API_KEY` (Key 사용)로 명명합니다.
6. `Add Connection`을 클릭하여 LLM Connection을 저장합니다.
</Step>
<Step title="기본 구성 설정">
7. `CrewAI Enterprise > Settings > Defaults > Crew Studio LLM Settings`에서 새 LLM Connection과 모델을 기본값으로 설정합니다.
</Step>
<Step title="네트워크 액세스 구성">
8. 네트워크 액세스 설정을 확인하세요:
- Azure에서 `Azure OpenAI > 배포 선택`으로 이동합니다.
- `Resource Management > Networking`으로 이동합니다.
- `Allow access from all networks`가 활성화되어 있는지 확인하세요. 이 설정이 제한되어 있으면 CrewAI가 Azure OpenAI 엔드포인트에 접근하지 못할 수 있습니다.
</Step>
</Steps>
## 확인
모두 준비되었습니다! 이제 Crew Studio는 Azure OpenAI 연결을 사용합니다. 모든 기능이 제대로 작동하는지 확인하려면 간단한 crew 또는 task를 만들어 연결을 테스트해 보세요.
## 문제 해결
문제가 발생한 경우:
- Target URI 형식이 예상 패턴과 일치하는지 확인하세요
- API 키가 올바르고 적절한 권한을 가지고 있는지 확인하세요
- 네트워크 액세스가 CrewAI 연결을 허용하도록 구성되어 있는지 확인하세요
- 배포 모델이 CrewAI에서 구성한 것과 일치하는지 확인하세요

View File

@@ -0,0 +1,43 @@
---
title: "Crew 빌드"
description: "Crew는 함께 작업을 완수하기 위해 협력하는 에이전트 그룹입니다."
icon: "people-arrows"
---
## 개요
[CrewAI Enterprise](https://app.crewai.com)는 프로덕션 환경에서 AI 에이전트를 **생성**, **배포** 및 **관리**하는 과정을 간소화합니다.
## 시작하기
<iframe
width="100%"
height="400"
src="https://www.youtube.com/embed/-kSOTtYzgEw"
title="Building Crews with CrewAI CLI"
frameborder="0"
style={{ borderRadius: '10px' }}
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen
></iframe>
### 설치 및 설정
<Card title="표준 설치 따라하기" icon="wrench" href="/ko/installation">
CrewAI CLI를 설정하고 첫 번째 프로젝트를 생성하기 위해 표준 설치 가이드를 따라주세요.
</Card>
### 크루 구성하기
<Card title="빠른 시작 튜토리얼" icon="rocket" href="/ko/quickstart">
YAML 구성을 사용하여 첫 번째 에이전트 크루를 만드는 방법은 빠른 시작 가이드를 따라주세요.
</Card>
## 지원 및 리소스
Enterprise 전용 지원 또는 문의가 필요하신 경우, [support@crewai.com](mailto:support@crewai.com)으로 저희 전담 지원팀에 연락해 주시기 바랍니다.
<Card title="데모 예약" icon="calendar" href="mailto:support@crewai.com">
Enterprise 기능과 해당 기능이 귀사의 조직에 어떻게 도움이 될 수 있는지 알아보시려면 저희 팀과 상담 일정을 예약하세요.
</Card>

View File

@@ -0,0 +1,290 @@
---
title: "Crew 배포"
description: "CrewAI 엔터프라이즈에서 Crew 배포하기"
icon: "rocket"
---
<Note>
로컬에서 또는 Crew Studio를 통해 crew를 생성한 후, 다음 단계는 이를 CrewAI Enterprise 플랫폼에 배포하는 것입니다. 본 가이드에서는 다양한 배포 방법을 다루며, 여러분의 워크플로우에 가장 적합한 방식을 선택할 수 있도록 안내합니다.
</Note>
## 사전 준비 사항
<CardGroup cols={2}>
<Card title="배포 준비가 된 Crew" icon="users">
작동 중인 crew가 로컬에서 빌드되었거나 Crew Studio를 통해 생성되어 있어야 합니다.
</Card>
<Card title="GitHub 저장소" icon="github">
crew 코드가 GitHub 저장소에 있어야 합니다(GitHub 연동 방식의 경우).
</Card>
</CardGroup>
## 옵션 1: CrewAI CLI를 사용한 배포
CLI는 로컬에서 개발된 crew를 Enterprise 플랫폼에 가장 빠르게 배포할 수 있는 방법을 제공합니다.
<Steps>
<Step title="CrewAI CLI 설치">
아직 설치하지 않았다면 CrewAI CLI를 설치하세요:
```bash
pip install crewai[tools]
```
<Tip>
CLI는 기본 CrewAI 패키지에 포함되어 있지만, `[tools]` 추가 옵션을 사용하면 모든 배포 종속성을 함께 설치할 수 있습니다.
</Tip>
</Step>
<Step title="Enterprise 플랫폼에 인증">
먼저, CrewAI Enterprise 플랫폼에 CLI를 인증해야 합니다:
```bash
# 이미 CrewAI Enterprise 계정이 있거나 새로 생성하고 싶을 때:
crewai login
```
위 명령어를 실행하면 CLI가 다음을 진행합니다:
1. URL과 고유 기기 코드를 표시합니다
2. 브라우저를 열어 인증 페이지로 이동합니다
3. 기기 확인을 요청합니다
4. 인증 과정을 완료합니다
인증이 성공적으로 완료되면 터미널에 확인 메시지가 표시됩니다!
</Step>
<Step title="배포 생성">
프로젝트 디렉터리에서 다음 명령어를 실행하세요:
```bash
crewai deploy create
```
이 명령어는 다음을 수행합니다:
1. GitHub 저장소 정보를 감지합니다
2. 로컬 `.env` 파일의 환경 변수를 식별합니다
3. 이러한 변수를 Enterprise 플랫폼으로 안전하게 전송합니다
4. 고유 식별자가 부여된 새 배포를 만듭니다
성공적으로 생성되면 다음과 같은 메시지가 표시됩니다:
```shell
Deployment created successfully!
Name: your_project_name
Deployment ID: 01234567-89ab-cdef-0123-456789abcdef
Current Status: Deploy Enqueued
```
</Step>
<Step title="배포 진행 상황 모니터링">
다음 명령어로 배포 상태를 추적할 수 있습니다:
```bash
crewai deploy status
```
빌드 과정의 상세 로그가 필요하다면:
```bash
crewai deploy logs
```
<Tip>
첫 배포는 컨테이너 이미지를 빌드하므로 일반적으로 10~15분 정도 소요됩니다. 이후 배포는 훨씬 빠릅니다.
</Tip>
</Step>
</Steps>
## 추가 CLI 명령어
CrewAI CLI는 배포를 관리하기 위한 여러 명령어를 제공합니다:
```bash
# 모든 배포 목록 확인
crewai deploy list
# 배포 상태 확인
crewai deploy status
# 배포 로그 보기
crewai deploy logs
# 코드 변경 후 업데이트 푸시
crewai deploy push
# 배포 삭제
crewai deploy remove <deployment_id>
```
## 옵션 2: 웹 인터페이스를 통한 직접 배포
GitHub 계정을 연결하여 CrewAI Enterprise 웹 인터페이스를 통해 crews를 직접 배포할 수도 있습니다. 이 방법은 로컬 머신에서 CLI를 사용할 필요가 없습니다.
<Steps>
<Step title="GitHub로 푸시하기">
crew를 GitHub 저장소에 푸시해야 합니다. 아직 crew를 만들지 않았다면, [이 튜토리얼](/ko/quickstart)을 따라할 수 있습니다.
</Step>
<Step title="GitHub를 CrewAI Enterprise에 연결하기">
1. [CrewAI Enterprise](https://app.crewai.com)에 로그인합니다.
2. "Connect GitHub" 버튼을 클릭합니다.
<Frame>
![Connect GitHub Button](/images/enterprise/connect-github.png)
</Frame>
</Step>
<Step title="저장소 선택하기">
GitHub 계정을 연결한 후 배포할 저장소를 선택할 수 있습니다:
<Frame>
![Select Repository](/images/enterprise/select-repo.png)
</Frame>
</Step>
<Step title="환경 변수 설정하기">
배포 전에, LLM 제공업체 또는 기타 서비스에 연결할 환경 변수를 설정해야 합니다:
1. 변수를 개별적으로 또는 일괄적으로 추가할 수 있습니다.
2. 환경 변수는 `KEY=VALUE` 형식(한 줄에 하나씩)으로 입력합니다.
<Frame>
![Set Environment Variables](/images/enterprise/set-env-variables.png)
</Frame>
</Step>
<Step title="Crew 배포하기">
1. "Deploy" 버튼을 클릭하여 배포 프로세스를 시작합니다.
2. 진행 바를 통해 진행 상황을 모니터링할 수 있습니다.
3. 첫 번째 배포에는 일반적으로 약 10-15분 정도 소요되며, 이후 배포는 더 빠릅니다.
<Frame>
![Deploy Progress](/images/enterprise/deploy-progress.png)
</Frame>
배포가 완료되면 다음을 확인할 수 있습니다:
- crew의 고유 URL
- crew API를 보호할 Bearer 토큰
- 배포를 삭제해야 하는 경우 "Delete" 버튼
</Step>
</Steps>
## ⚠️ 환경 변수 보안 요구사항
<Warning>
**중요**: CrewAI Enterprise는 환경 변수 이름에 대한 보안 제한이 있으며, 이를 따르지 않을 경우 배포가 실패할 수 있습니다.
</Warning>
### 차단된 환경 변수 패턴
보안상의 이유로, 다음과 같은 환경 변수 명명 패턴은 **자동으로 필터링**되며 배포에 문제가 발생할 수 있습니다:
**차단된 패턴:**
- `_TOKEN`으로 끝나는 변수 (예: `MY_API_TOKEN`)
- `_PASSWORD`로 끝나는 변수 (예: `DB_PASSWORD`)
- `_SECRET`로 끝나는 변수 (예: `API_SECRET`)
- 특정 상황에서 `_KEY`로 끝나는 변수
**특정 차단 변수:**
- `GITHUB_USER`, `GITHUB_TOKEN`
- `AWS_REGION`, `AWS_DEFAULT_REGION`
- 다양한 내부 CrewAI 시스템 변수
### 허용된 예외
일부 변수는 차단된 패턴과 일치하더라도 명시적으로 허용됩니다:
- `AZURE_AD_TOKEN`
- `AZURE_OPENAI_AD_TOKEN`
- `ENTERPRISE_ACTION_TOKEN`
- `CREWAI_ENTEPRISE_TOOLS_TOKEN`
### 네이밍 문제 해결 방법
환경 변수 제한으로 인해 배포가 실패하는 경우:
```bash
# ❌ 이러한 이름은 배포 실패를 초래합니다
OPENAI_TOKEN=sk-...
DATABASE_PASSWORD=mypassword
API_SECRET=secret123
# ✅ 대신 다음과 같은 네이밍 패턴을 사용하세요
OPENAI_API_KEY=sk-...
DATABASE_CREDENTIALS=mypassword
API_CONFIG=secret123
```
### 모범 사례
1. **표준 명명 규칙 사용**: `PROVIDER_TOKEN` 대신 `PROVIDER_API_KEY` 사용
2. **먼저 로컬에서 테스트**: crew가 이름이 변경된 변수로 제대로 동작하는지 확인
3. **코드 업데이트**: 이전 변수 이름을 참조하는 부분을 모두 변경
4. **변경 내용 문서화**: 팀을 위해 이름이 변경된 변수를 기록
<Tip>
배포 실패 시, 환경 변수 에러 메시지가 난해하다면 먼저 변수 이름이 이 패턴을 따르는지 확인하세요.
</Tip>
### 배포된 Crew와 상호작용하기
배포가 완료되면 다음을 통해 crew에 접근할 수 있습니다:
1. **REST API**: 플랫폼에서 아래의 주요 경로가 포함된 고유한 HTTPS 엔드포인트를 생성합니다:
- `/inputs`: 필요한 입력 파라미터 목록
- `/kickoff`: 제공된 입력값으로 실행 시작
- `/status/{kickoff_id}`: 실행 상태 확인
2. **웹 인터페이스**: [app.crewai.com](https://app.crewai.com)에 방문하여 다음을 확인할 수 있습니다:
- **Status 탭**: 배포 정보, API 엔드포인트 세부 정보 및 인증 토큰 확인
- **Run 탭**: crew 구조의 시각적 표현
- **Executions 탭**: 모든 실행 내역
- **Metrics 탭**: 성능 분석
- **Traces 탭**: 상세 실행 인사이트
### 실행 트리거하기
Enterprise 대시보드에서 다음 작업을 수행할 수 있습니다:
1. crew 이름을 클릭하여 상세 정보를 엽니다
2. 관리 인터페이스에서 "Trigger Crew"를 선택합니다
3. 나타나는 모달에 필요한 입력값을 입력합니다
4. 파이프라인을 따라 실행의 진행 상황을 모니터링합니다
### 모니터링 및 분석
Enterprise 플랫폼은 포괄적인 가시성 기능을 제공합니다:
- **실행 관리**: 활성 및 완료된 실행 추적
- **트레이스**: 각 실행의 상세 분해
- **메트릭**: 토큰 사용량, 실행 시간, 비용
- **타임라인 보기**: 작업 시퀀스의 시각적 표현
### 고급 기능
Enterprise 플랫폼은 또한 다음을 제공합니다:
- **환경 변수 관리**: API 키를 안전하게 저장 및 관리
- **LLM 연결**: 다양한 LLM 공급자와의 통합 구성
- **Custom Tools Repository**: 도구 생성, 공유 및 설치
- **Crew Studio**: 코드를 작성하지 않고 채팅 인터페이스를 통해 crew 빌드
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
Enterprise 플랫폼의 배포 문제 또는 문의 사항이 있으시면 지원팀에 연락해 주십시오.
</Card>

View File

@@ -0,0 +1,165 @@
---
title: "Crew Studio 활성화"
description: "CrewAI Enterprise에서 Crew Studio 활성화하기"
icon: "comments"
---
<Tip>
Crew Studio는 대화형 인터페이스를 통해 빠르게 Crew를 스캐폴딩하거나 구축할 수 있는 강력한 **노코드/로우코드** 도구입니다.
</Tip>
## Crew Studio란?
Crew Studio는 코드를 작성하지 않고도 AI agent crew를 생성할 수 있는 혁신적인 방법입니다.
<Frame>
![Crew Studio Interface](/images/enterprise/crew-studio-interface.png)
</Frame>
Crew Studio를 사용하면 다음과 같은 작업이 가능합니다:
- Crew Assistant와 채팅하여 문제를 설명
- agent 및 task를 자동으로 생성
- 적절한 tool 선택
- 필요한 입력값 구성
- 커스터마이징을 위한 다운로드 가능한 코드 생성
- CrewAI Enterprise 플랫폼에 직접 배포
## 구성 단계
Crew Studio를 사용하기 전에 LLM 연결을 구성해야 합니다:
<Steps>
<Step title="LLM 연결 설정">
CrewAI Enterprise 대시보드의 **LLM Connections** 탭으로 이동하여 새 LLM 연결을 만듭니다.
<Note>
CrewAI에서 지원하는 원하는 LLM 공급자를 자유롭게 사용하실 수 있습니다.
</Note>
LLM 연결을 구성하세요:
- `Connection Name`(예: `OpenAI`)을 입력하세요.
- 모델 공급자를 선택하세요: `openai` 또는 `azure`
- Studio에서 생성되는 Crews에 사용할 모델을 선택하세요.
- 최소한 `gpt-4o`, `o1-mini`, `gpt-4o-mini`를 권장합니다.
- API 키를 환경 변수로 추가하세요:
- OpenAI의 경우: `OPENAI_API_KEY`에 API 키를 추가
- Azure OpenAI의 경우: [이 글](https://blog.crewai.com/configuring-azure-openai-with-crewai-a-comprehensive-guide/)을 참고하여 구성
- `Add Connection`을 클릭하여 구성을 저장하세요.
<Frame>
![LLM 연결 구성](/images/enterprise/llm-connection-config.png)
</Frame>
</Step>
<Step title="연결 추가 확인">
설정이 완료되면 새 연결이 사용 가능한 연결 목록에 추가된 것을 볼 수 있습니다.
<Frame>
![연결 추가됨](/images/enterprise/connection-added.png)
</Frame>
</Step>
<Step title="LLM 기본값 구성">
메인 메뉴에서 **Settings → Defaults**로 이동하여 LLM 기본값을 구성하세요:
- 에이전트 및 기타 구성 요소의 기본 모델을 선택하세요
- Crew Studio의 기본 구성을 설정하세요
변경 사항을 적용하려면 `Save Settings`를 클릭하세요.
<Frame>
![LLM 기본값 구성](/images/enterprise/llm-defaults.png)
</Frame>
</Step>
</Steps>
## Crew Studio 사용하기
LLM 연결과 기본 설정을 구성했다면 이제 Crew Studio 사용을 시작할 준비가 완료되었습니다!
<Steps>
<Step title="Studio 접속">
CrewAI Enterprise 대시보드에서 **Studio** 섹션으로 이동하세요.
</Step>
<Step title="대화 시작">
Crew Assistant와 대화를 시작하며 해결하고자 하는 문제를 설명하세요:
```md
I need a crew that can research the latest AI developments and create a summary report.
```
Crew Assistant는 귀하의 요구 사항을 더 잘 이해하기 위해 추가 질문을 할 것입니다.
</Step>
<Step title="생성된 crew 검토">
생성된 crew 구성을 검토하세요. 구성에는 다음이 포함됩니다:
- 에이전트 및 그들의 역할
- 수행할 작업
- 필요한 입력값
- 사용할 도구
이 단계에서 구성 내용을 세부적으로 수정할 수 있습니다.
</Step>
<Step title="배포 또는 다운로드">
구성에 만족하면 다음을 수행할 수 있습니다:
- 생성된 코드를 다운로드하여 로컬에서 커스터마이징
- crew를 CrewAI Enterprise 플랫폼에 직접 배포
- 구성을 수정하고 crew를 재생성
</Step>
<Step title="crew 테스트">
배포 후 샘플 입력으로 crew를 테스트하여 기대한 대로 동작하는지 확인하세요.
</Step>
</Steps>
<Tip>
최상의 결과를 얻으려면 crew가 달성해야 할 목표를 명확하고 상세하게 설명하세요. 원하는 입력값과 예상 결과를 설명에 포함시키는 것이 좋습니다.
</Tip>
## 예시 워크플로우
다음은 Crew Studio를 사용하여 crew를 생성하는 일반적인 워크플로우입니다:
<Steps>
<Step title="문제 설명하기">
먼저 문제를 설명하세요:
```md
I need a crew that can analyze financial news and provide investment recommendations
```
</Step>
<Step title="질문에 답하기">
crew assistant가 요구 사항을 구체화할 수 있도록 하는 추가 질문에 답변하세요.
</Step>
<Step title="계획 검토하기">
생성된 crew 계획을 검토하세요. 여기에는 다음과 같은 항목이 포함될 수 있습니다:
- 금융 뉴스를 수집하는 Research Agent
- 데이터를 해석하는 Analysis Agent
- 투자 조언을 제공하는 Recommendations Agent
</Step>
<Step title="승인 또는 수정">
계획을 승인하거나 필요하다면 변경을 요청하세요.
</Step>
<Step title="다운로드 또는 배포">
사용자화를 위해 코드를 다운로드하거나 플랫폼에 직접 배포하세요.
</Step>
<Step title="테스트 및 개선">
샘플 입력으로 crew를 테스트하고 필요에 따라 개선하세요.
</Step>
</Steps>
<Card title="도움이 필요하세요?" icon="headset" href="mailto:support@crewai.com">
Crew Studio 또는 기타 CrewAI Enterprise 기능 지원이 필요하다면 지원팀에 문의하세요.
</Card>

View File

@@ -0,0 +1,53 @@
---
title: "HubSpot 트리거"
description: "HubSpot 워크플로우에서 CrewAI 크루를 직접 트리거하세요"
icon: "hubspot"
---
이 가이드는 HubSpot Workflows에서 직접 crew를 시작할 수 있도록 CrewAI Enterprise용 HubSpot 트리거를 설정하는 단계별 과정을 제공합니다.
## 사전 준비 사항
- CrewAI Enterprise 계정
- [HubSpot Workflows](https://knowledge.hubspot.com/workflows/create-workflows) 기능이 활성화된 HubSpot 계정
## 설정 단계
<Steps>
<Step title="HubSpot 계정을 CrewAI Enterprise와 연결하기">
- `CrewAI Enterprise 계정 > 트리거`에 로그인합니다.
- 사용 가능한 트리거 목록에서 `HubSpot`을 선택합니다.
- CrewAI Enterprise와 연결하고자 하는 HubSpot 계정을 선택합니다.
- 화면에 나타나는 안내에 따라 CrewAI Enterprise가 HubSpot 계정에 접근하도록 승인합니다.
- HubSpot이 CrewAI Enterprise와 성공적으로 연결되면 확인 메시지가 표시됩니다.
</Step>
<Step title="HubSpot 워크플로우 생성하기">
- `HubSpot 계정 > 자동화 > 워크플로우 > 새 워크플로우`에 로그인합니다.
- 필요에 맞는 워크플로우 유형을 선택합니다 (예: 처음부터 시작).
- 워크플로우 빌더에서 더하기(+) 아이콘을 클릭하여 새로운 작업을 추가합니다.
- `통합 앱 > CrewAI > Crew 시작하기`를 선택합니다.
- 시작할 Crew를 선택합니다.
- `저장`을 클릭하여 워크플로우에 작업을 추가합니다.
<Frame>
<img src="/images/enterprise/hubspot-workflow-1.png" alt="HubSpot Workflow 1" />
</Frame>
</Step>
<Step title="Crew 결과를 다른 작업과 함께 사용하기">
- Crew 시작 단계 이후, 더하기(+) 아이콘을 클릭하여 새로운 작업을 추가합니다.
- 예를 들어, 내부 이메일 알림을 전송하려면 `커뮤니케이션 > 내부 이메일 알림 전송`을 선택합니다.
- 본문 필드에서 `데이터 삽입`을 클릭하고, `다음에서 속성 또는 작업 결과 보기 > 작업 결과 > Crew 결과`를 선택하여 이메일에 Crew 데이터를 포함합니다.
<Frame>
<img src="/images/enterprise/hubspot-workflow-2.png" alt="HubSpot Workflow 2" />
</Frame>
- 필요에 따라 추가 작업을 구성합니다.
- 모든 워크플로우 단계를 검토하여 올바르게 설정되었는지 확인합니다.
- 워크플로우를 활성화합니다.
<Frame>
<img src="/images/enterprise/hubspot-workflow-3.png" alt="HubSpot Workflow 3" />
</Frame>
</Step>
</Steps>
## 추가 자료
사용 가능한 작업과 사용자 지정 옵션에 대한 자세한 정보는 [HubSpot 워크플로우 문서](https://knowledge.hubspot.com/workflows/create-workflows)를 참고하세요.

View File

@@ -0,0 +1,78 @@
---
title: "HITL 워크플로우"
description: "CrewAI에서 의사결정 향상을 위한 Human-In-The-Loop 워크플로우 구현 방법을 알아보세요"
icon: "user-check"
---
인간-중심(Human-In-The-Loop, HITL)은 인공지능과 인간 전문 지식을 결합하여 의사결정을 강화하고 작업 결과를 향상시키는 강력한 접근 방식입니다. 이 가이드는 CrewAI 내에서 HITL을 구현하는 방법을 보여줍니다.
## HITL 워크플로 설정
<Steps>
<Step title="작업 구성">
사람 입력이 활성화된 상태로 작업을 설정하세요:
<Frame>
<img src="/images/enterprise/crew-human-input.png" alt="Crew Human Input" />
</Frame>
</Step>
<Step title="Webhook URL 제공">
crew를 시작할 때 인간 입력을 위한 webhook URL을 포함하세요:
<Frame>
<img src="/images/enterprise/crew-webhook-url.png" alt="Crew Webhook URL" />
</Frame>
</Step>
<Step title="Webhook 알림 받기">
crew가 사람 입력이 필요한 작업을 완료하면 다음 정보를 포함한 webhook 알림을 받게 됩니다:
- **Execution ID**
- **Task ID**
- **Task output**
</Step>
<Step title="작업 출력 검토">
시스템이 `Pending Human Input` 상태에서 일시 중지됩니다. 작업 출력을 신중하게 검토하세요.
</Step>
<Step title="사람 피드백 제출">
다음 정보를 포함하여 crew의 resume endpoint를 호출하세요:
<Frame>
<img src="/images/enterprise/crew-resume-endpoint.png" alt="Crew Resume Endpoint" />
</Frame>
<Warning>
**피드백이 작업 실행에 미치는 영향**:
피드백 전체 내용이 이후 작업 실행을 위한 추가 컨텍스트로 통합되므로 피드백 제공 시 신중함이 매우 중요합니다.
</Warning>
이는 다음을 의미합니다:
- 피드백에 입력한 모든 정보가 작업의 컨텍스트 일부가 됩니다.
- 관련 없는 상세 정보는 부정적인 영향을 줄 수 있습니다.
- 간결하고 관련성 높은 피드백이 작업의 집중도와 효율성을 유지하는 데 도움이 됩니다.
- 제출 전 항상 피드백을 신중히 검토하여 작업 실행을 긍정적으로 안내할 수 있는 관련 정보만 포함되어 있는지 확인하세요.
</Step>
<Step title="부정적 피드백 처리">
부정적인 피드백을 제공하는 경우:
- crew가 귀하의 피드백에서 추가된 컨텍스트와 함께 작업을 재시도합니다.
- 추가 확인을 위한 다른 webhook 알림을 받게 됩니다.
- 만족할 때까지 4-6단계를 반복하세요.
</Step>
<Step title="작업 실행 계속 진행">
긍정적인 피드백을 제출하면 실행이 다음 단계로 진행됩니다.
</Step>
</Steps>
## 모범 사례
- **구체적으로 작성하세요**: 해당 작업에 직접적으로 관련된 명확하고 실행 가능한 피드백을 제공하세요
- **관련성 유지**: 작업 수행 개선에 도움이 되는 정보만 포함하세요
- **적시에 응답하세요**: 워크플로우 지연을 피하기 위해 HITL 프롬프트에 신속하게 응답하세요
- **꼼꼼하게 검토하세요**: 제출 전에 피드백을 다시 확인하여 정확성을 보장하세요
## 일반적인 사용 사례
HITL 워크플로우는 특히 다음과 같은 경우에 유용합니다:
- 품질 보증 및 검증
- 복잡한 의사 결정 시나리오
- 민감하거나 위험도가 높은 작업
- 인간의 판단이 필요한 창의적 작업
- 준수 및 규제 검토

View File

@@ -0,0 +1,185 @@
---
title: "Kickoff Crew"
description: "CrewAI Enterprise에서 Crew를 시작하세요"
icon: "flag-checkered"
---
## 개요
Crew를 CrewAI Enterprise 플랫폼에 배포한 후에는 웹 인터페이스 또는 API를 통해 실행을 시작할 수 있습니다. 이 가이드는 두 가지 접근 방식을 모두 다룹니다.
## 방법 1: 웹 인터페이스 사용
### 1단계: 배포된 Crew로 이동하기
1. [CrewAI Enterprise](https://app.crewai.com)에 로그인합니다.
2. 프로젝트 목록에서 crew 이름을 클릭합니다.
3. crew의 상세 페이지로 이동합니다.
<Frame>
![Crew Dashboard](/images/enterprise/crew-dashboard.png)
</Frame>
### 2단계: 실행 시작
crew의 상세 페이지에서 실행을 시작할 수 있는 두 가지 옵션이 있습니다:
#### 옵션 A: 빠른 시작
1. Test Endpoints 섹션에서 `Kickoff` 링크를 클릭합니다.
2. JSON 에디터에서 crew에 필요한 입력 파라미터를 입력합니다.
3. `Send Request` 버튼을 클릭합니다.
<Frame>
![Kickoff Endpoint](/images/enterprise/kickoff-endpoint.png)
</Frame>
#### 옵션 B: 시각적 인터페이스 사용
1. crew 상세 페이지에서 `Run` 탭을 클릭합니다.
2. 양식 필드에 필요한 입력값을 입력합니다.
3. `Run Crew` 버튼을 클릭합니다.
<Frame>
![Run Crew](/images/enterprise/run-crew.png)
</Frame>
### 3단계: 실행 진행 상황 모니터링
실행을 시작한 후:
1. `kickoff_id`가 포함된 응답을 받게 됩니다. - **이 ID를 복사하세요**
2. 이 ID는 실행을 추적하는 데 필수적입니다
<Frame>
![작업 ID 복사](/images/enterprise/copy-task-id.png)
</Frame>
### 4단계: 실행 상태 확인
실행 진행 상황을 모니터링하려면:
1. Test Endpoints 섹션에서 "Status" 엔드포인트를 클릭하세요
2. 지정된 필드에 `kickoff_id`를 붙여넣으세요
3. "Get Status" 버튼을 클릭하세요
<Frame>
![Get Status](/images/enterprise/get-status.png)
</Frame>
상태 응답에는 다음이 표시됩니다:
- 현재 실행 상태(`running`, `completed` 등)
- 진행 중인 작업에 대한 세부 정보
- 지금까지 생성된 모든 출력
### 5단계: 최종 결과 보기
실행이 완료되면:
1. 상태가 `completed`로 변경됩니다.
2. 전체 실행 결과와 출력을 확인할 수 있습니다.
3. 더 자세한 내용을 보려면 crew 상세 페이지의 `Executions` 탭을 확인하세요.
## 방법 2: API 사용
CrewAI Enterprise REST API를 사용하여 프로그래밍 방식으로 crews를 시작할 수도 있습니다.
### 인증
모든 API 요청에는 인증을 위한 베어러 토큰이 필요합니다:
```bash
curl -H "Authorization: Bearer YOUR_CREW_TOKEN" https://your-crew-url.crewai.com
```
베어러 토큰은 crew의 상세 페이지의 Status 탭에서 확인할 수 있습니다.
### 크루 상태 확인
작업을 실행하기 전에 크루가 정상적으로 실행되고 있는지 확인할 수 있습니다:
```bash
curl -H "Authorization: Bearer YOUR_CREW_TOKEN" https://your-crew-url.crewai.com
```
요청이 성공하면 크루가 정상적으로 동작 중임을 나타내는 메시지가 반환됩니다:
```
Healthy%
```
### 1단계: 필요한 입력값 확인
먼저, crew에서 요구하는 입력값이 무엇인지 확인합니다:
```bash
curl -X GET \
-H "Authorization: Bearer YOUR_CREW_TOKEN" \
https://your-crew-url.crewai.com/inputs
```
응답은 예를 들어 다음과 같이 필수 입력 파라미터 배열을 포함한 JSON 객체로 반환됩니다:
```json
{"inputs":["topic","current_year"]}
```
이 예시에서는 해당 crew에서 두 개의 입력값인 `topic`과 `current_year`를 필요로 함을 보여줍니다.
### 2단계: kickoff 실행
필수 입력값을 제공하여 실행을 시작합니다:
```bash
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_CREW_TOKEN" \
-d '{"inputs": {"topic": "AI Agent Frameworks", "current_year": "2025"}}' \
https://your-crew-url.crewai.com/kickoff
```
응답에는 추적에 필요한 `kickoff_id`가 포함됩니다:
```json
{"kickoff_id":"abcd1234-5678-90ef-ghij-klmnopqrstuv"}
```
### 3단계: 실행 상태 확인
kickoff_id를 사용하여 실행 진행 상황을 모니터링하세요:
```bash
curl -X GET \
-H "Authorization: Bearer YOUR_CREW_TOKEN" \
https://your-crew-url.crewai.com/status/abcd1234-5678-90ef-ghij-klmnopqrstuv
```
## 실행 처리
### 장기 실행
오랜 시간이 걸릴 수 있는 실행의 경우:
1. 주기적으로 상태를 확인하는 폴링 메커니즘을 구현하는 것을 고려하세요
2. 실행 완료 시 알림을 받을 수 있도록 웹훅(가능한 경우)을 사용하세요
3. 잠재적인 타임아웃에 대비하여 오류 처리를 구현하세요
### 실행 컨텍스트
실행 컨텍스트에는 다음이 포함됩니다:
- 시작 시 제공된 입력값
- 배포 중에 구성된 환경 변수
- 태스크 간에 유지되는 상태
### 실행 실패 디버깅
실행이 실패할 경우:
1. "Executions" 탭에서 자세한 로그를 확인하세요
2. "Traces" 탭에서 단계별 실행 세부 정보를 검토하세요
3. 트레이스 세부 정보에서 LLM 응답과 도구 사용 내역을 확인하세요
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
실행 문제 또는 엔터프라이즈 플랫폼 관련 질문이 있으신 경우, 지원팀에 문의하세요.
</Card>

View File

@@ -0,0 +1,103 @@
---
title: "React 컴포넌트 내보내기"
description: "CrewAI Enterprise React 컴포넌트를 애플리케이션에 내보내고 통합하는 방법을 알아보세요"
icon: "react"
---
이 가이드는 CrewAI Enterprise crew를 React 컴포넌트로 내보내고 이를 여러분의 애플리케이션에 통합하는 방법을 설명합니다.
## React 컴포넌트 내보내기
<Steps>
<Step title="컴포넌트 내보내기">
배포된 crew 오른쪽에 있는 줄임표(세 개의 점)를 클릭한 다음 내보내기 옵션을 선택하고 파일을 로컬에 저장하세요. 본 예시에서는 `CrewLead.jsx`를 사용합니다.
<Frame>
<img src="/images/enterprise/export-react-component.png" alt="React 컴포넌트 내보내기" />
</Frame>
</Step>
</Steps>
## 리액트 환경 설정
이 리액트 컴포넌트를 로컬에서 실행하려면 리액트 개발 환경을 설정하고 이 컴포넌트를 리액트 프로젝트에 통합해야 합니다.
<Steps>
<Step title="Node.js 설치">
- 공식 웹사이트(https://nodejs.org/)에서 Node.js를 다운로드하고 설치하세요.
- 안정성을 위해 LTS(장기 지원) 버전을 선택하세요.
</Step>
<Step title="새 리액트 프로젝트 생성">
- 명령 프롬프트 또는 PowerShell을 엽니다.
- 프로젝트를 생성하고자 하는 디렉터리로 이동하세요.
- 다음 명령어를 실행하여 새로운 리액트 프로젝트를 생성합니다:
```bash
npx create-react-app my-crew-app
```
- 프로젝트 디렉터리로 이동합니다:
```bash
cd my-crew-app
```
</Step>
<Step title="필요한 의존성 설치">
```bash
npm install react-dom
```
</Step>
<Step title="CrewLead 컴포넌트 생성">
- 다운로드한 파일 `CrewLead.jsx`를 프로젝트의 `src` 폴더로 이동하세요.
</Step>
<Step title="App.js를 수정하여 CrewLead 컴포넌트 사용">
- `src/App.js`를 엽니다.
- 내용물을 아래와 같이 교체하세요:
```jsx
import React from 'react';
import CrewLead from './CrewLead';
function App() {
return (
<div className="App">
<CrewLead baseUrl="YOUR_API_BASE_URL" bearerToken="YOUR_BEARER_TOKEN" />
</div>
);
}
export default App;
```
- `YOUR_API_BASE_URL` 및 `YOUR_BEARER_TOKEN` 부분을 실제 API 값으로 바꿔주세요.
</Step>
<Step title="개발 서버 시작">
- 프로젝트 디렉터리에서 다음 명령어를 실행하세요:
```bash
npm start
```
- 개발 서버가 시작되며, 기본 웹 브라우저가 자동으로 http://localhost:3000 을 열고 리액트 앱이 실행되는 것을 확인할 수 있습니다.
</Step>
</Steps>
## 커스터마이징
그런 다음 `CrewLead.jsx`를 커스터마이즈하여 색상, 제목 등을 추가할 수 있습니다.
<Frame>
<img src="/images/enterprise/customise-react-component.png" alt="React 컴포넌트 커스터마이즈" />
</Frame>
<Frame>
<img src="/images/enterprise/customise-react-component-2.png" alt="React 컴포넌트 커스터마이즈" />
</Frame>
## 다음 단계
- 구성 요소 스타일을 애플리케이션 디자인에 맞게 맞춤화하세요
- 추가 구성을 위한 props를 추가하세요
- 애플리케이션의 상태 관리와 통합하세요
- 오류 처리 및 로딩 상태를 추가하세요

View File

@@ -0,0 +1,44 @@
---
title: "Salesforce 트리거"
description: "Salesforce 워크플로우에서 CrewAI crew를 트리거하여 CRM 자동화"
icon: "salesforce"
---
CrewAI Enterprise는 Salesforce에서 트리거되어 고객 관계 관리 워크플로우를 자동화하고 영업 운영을 강화할 수 있습니다.
## 개요
Salesforce는 기업이 영업, 서비스, 마케팅 운영을 효율화할 수 있도록 돕는 선도적인 고객 관계 관리(CRM) 플랫폼입니다. Salesforce에서 CrewAI 트리거를 설정하면 다음과 같은 작업을 수행할 수 있습니다:
- 리드 점수 산정 및 자격 심사 자동화
- 개인화된 영업 자료 생성
- AI 기반 응답으로 고객 서비스 강화
- 데이터 분석 및 보고 간소화
## 데모
<Frame>
<iframe width="100%" height="400" src="https://www.youtube.com/embed/oJunVqjjfu4" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</Frame>
## 시작하기
Salesforce 트리거를 설정하려면:
1. **지원팀 문의**: Salesforce 트리거 설정을 위해 CrewAI Enterprise 지원팀에 연락하세요.
2. **요구 사항 검토**: 필요한 Salesforce 권한과 API 액세스 권한이 있는지 확인하세요.
3. **연결 구성**: 지원팀과 협력하여 CrewAI와 귀하의 Salesforce 인스턴스 간의 연결을 설정하세요.
4. **트리거 테스트**: 트리거가 귀하의 특정 사용 사례에 맞게 올바르게 작동하는지 확인하세요.
## 사용 사례
일반적인 Salesforce + CrewAI 트리거 시나리오는 다음과 같습니다:
- **Lead 처리**: 들어오는 리드를 자동으로 분석하고 점수화
- **제안서 생성**: 기회 데이터를 기반으로 맞춤형 제안서 생성
- **고객 인사이트**: 고객 상호작용 이력에서 분석 보고서 생성
- **후속 조치 자동화**: 개인화된 후속 메시지 및 추천 생성
## 다음 단계
자세한 설정 지침 및 고급 구성 옵션에 대해서는 CrewAI Enterprise 지원팀에 문의해 주시기 바랍니다. 지원팀은 귀하의 특정 Salesforce 환경과 비즈니스 요구에 맞는 맞춤형 안내를 제공해 드릴 수 있습니다.

View File

@@ -0,0 +1,61 @@
---
title: "Slack 트리거"
description: "슬래시 명령어를 사용해 Slack에서 CrewAI crew를 직접 트리거합니다"
icon: "slack"
---
이 가이드는 CrewAI 트리거를 사용하여 Slack에서 직접 crew를 시작하는 방법을 설명합니다.
## 사전 요구 사항
- CrewAI Slack 트리거가 설치되어 있고 Slack 워크스페이스에 연결되어 있음
- CrewAI에서 하나 이상의 crew가 구성되어 있음
## 설정 단계
<Steps>
<Step title="CrewAI Slack 트리거가 설정되어 있는지 확인">
CrewAI 대시보드에서 **트리거** 섹션으로 이동합니다.
<Frame>
<img src="/images/enterprise/slack-integration.png" alt="CrewAI Slack Integration" />
</Frame>
Slack이 나열되어 있고 연결되어 있는지 확인합니다.
</Step>
<Step title="Slack 채널을 엽니다">
- crew를 시작하려는 채널로 이동합니다.
- 슬래시 명령어 "**/kickoff**"를 입력하여 crew 시작 프로세스를 시작합니다.
- 입력하는 동안 "**Kickoff crew**"가 나타나야 합니다:
<Frame>
<img src="/images/enterprise/kickoff-slack-crew.png" alt="Kickoff crew" />
</Frame>
- Enter를 누르거나 "**Kickoff crew**" 옵션을 선택합니다. "**Kickoff an AI Crew**"라는 제목의 대화상자가 나타납니다.
</Step>
<Step title="시작할 crew를 선택합니다">
- "**Select of the crews online:**"라는 드롭다운 메뉴에서 시작할 crew를 선택합니다.
- 아래 예시에서는 "**prep-for-meeting**"이 선택되어 있습니다:
<Frame>
<img src="/images/enterprise/kickoff-slack-crew-dropdown.png" alt="Kickoff crew dropdown" />
</Frame>
- crew에 입력값이 필요한 경우 "**Add Inputs**" 버튼을 클릭하여 입력값을 제공합니다.
<Note>
위 예시에서 "**Add Inputs**" 버튼이 보이지만 아직 클릭되지 않았습니다.
</Note>
</Step>
<Step title="Kickoff을 클릭하고 crew가 완료될 때까지 기다립니다">
- crew를 선택하고 필요한 입력값을 추가했다면, "**Kickoff**"를 클릭하여 crew를 시작합니다.
<Frame>
<img src="/images/enterprise/kickoff-slack-crew-kickoff.png" alt="Kickoff crew" />
</Frame>
- crew가 실행을 시작하면 Slack 채널에서 결과를 확인할 수 있습니다.
<Frame>
<img src="/images/enterprise/kickoff-slack-crew-results.png" alt="Kickoff crew results" />
</Frame>
</Step>
</Steps>
## 팁
- Slack 워크스페이스에서 `/kickoff` 명령어를 사용할 수 있는 필요한 권한이 있는지 확인하세요.
- 드롭다운에서 원하는 crew가 보이지 않는 경우, CrewAI에서 해당 crew가 올바르게 구성되어 있고 온라인 상태인지 확인하세요.

View File

@@ -0,0 +1,87 @@
---
title: "팀 관리"
description: "CrewAI Enterprise 조직에서 팀원을 초대하고 관리하는 방법을 알아보세요"
icon: "users"
---
CrewAI Enterprise 계정의 관리자라면 새로운 팀원을 조직에 쉽게 초대할 수 있습니다. 이 안내서는 단계별로 프로세스를 안내합니다.
## 팀 멤버 초대하기
<Steps>
<Step title="설정 페이지 접속">
- CrewAI Enterprise 계정에 로그인합니다
- 대시보드 오른쪽 상단에 있는 기어 아이콘(⚙️)을 찾습니다
- 기어 아이콘을 클릭하여 **설정** 페이지에 접속합니다:
<Frame>
<img src="/images/enterprise/settings-page.png" alt="Settings Page" />
</Frame>
</Step>
<Step title="멤버 섹션으로 이동">
- 설정 페이지에서 `Members` 탭이 보입니다
- `Members` 탭을 클릭하여 **멤버** 페이지에 접속합니다:
<Frame>
<img src="/images/enterprise/members-tab.png" alt="Members Tab" />
</Frame>
</Step>
<Step title="새 멤버 초대">
- 멤버 섹션에서 현재 멤버 목록(본인 포함)을 확인할 수 있습니다
- `Email` 입력 필드를 찾습니다
- 초대하고자 하는 사람의 이메일 주소를 입력합니다
- `Invite` 버튼을 클릭하여 초대장을 보냅니다
</Step>
<Step title="필요에 따라 반복">
- 이 과정을 반복하여 여러 팀 멤버를 초대할 수 있습니다
- 초대한 각 멤버는 조직에 가입할 수 있는 이메일 초대장을 받게 됩니다
</Step>
</Steps>
## 역할 추가하기
플랫폼의 다양한 부분에 대한 접근 권한을 제어하기 위해 팀원들에게 역할을 추가할 수 있습니다.
<Steps>
<Step title="설정 페이지 접근">
- CrewAI Enterprise 계정에 로그인하세요
- 대시보드 오른쪽 상단에서 기어 아이콘(⚙️)을 찾으세요
- 기어 아이콘을 클릭하여 **설정** 페이지에 접근하세요:
<Frame>
<img src="/images/enterprise/settings-page.png" alt="설정 페이지" />
</Frame>
</Step>
<Step title="멤버 섹션으로 이동">
- 설정 페이지에서 `Roles` 탭을 확인할 수 있습니다
- `Roles` 탭을 클릭하여 **Roles** 페이지로 이동하세요.
<Frame>
<img src="/images/enterprise/roles-tab.png" alt="Roles 탭" />
</Frame>
- 새로운 역할을 추가하려면 `Add Role` 버튼을 클릭하세요.
- 역할의 세부 정보와 권한을 입력한 후 `Create Role` 버튼을 클릭하여 역할을 생성하세요.
<Frame>
<img src="/images/enterprise/add-role-modal.png" alt="Add Role 모달" />
</Frame>
</Step>
<Step title="멤버에게 역할 추가하기">
- 멤버 섹션에서 현재 멤버(본인 포함) 목록을 확인할 수 있습니다
<Frame>
<img src="/images/enterprise/member-accepted-invitation.png" alt="멤버 초대 수락 완료" />
</Frame>
- 멤버가 초대를 수락하면 역할을 추가할 수 있습니다.
- 다시 `Roles` 탭으로 이동하세요
- 역할을 추가할 멤버로 이동한 후 `Role` 열에서 드롭다운을 클릭하세요
- 멤버에게 추가할 역할을 선택하세요
- `Update` 버튼을 클릭하여 역할을 저장하세요
<Frame>
<img src="/images/enterprise/assign-role.png" alt="멤버에 역할 추가" />
</Frame>
</Step>
</Steps>
## 중요 참고 사항
- **관리자 권한**: 관리자 권한이 있는 사용자만 새 멤버를 초대할 수 있습니다
- **이메일 정확성**: 팀 멤버의 정확한 이메일 주소를 확인하세요
- **초대 수락**: 초대된 멤버는 조직에 가입하기 위해 초대를 수락해야 합니다
- **이메일 알림**: 팀 멤버에게 초대 이메일(스팸 폴더 포함)을 확인하도록 안내할 수 있습니다
이 단계들을 따르면 팀을 손쉽게 확장하고 CrewAI Enterprise 조직 내에서 더욱 효과적으로 협업할 수 있습니다.

View File

@@ -0,0 +1,88 @@
---
title: "크루 업데이트"
description: "CrewAI Enterprise에서 크루 업데이트하기"
icon: "pencil"
---
<Note>
CrewAI Enterprise에 crew를 배포한 후, 코드, 보안 설정 또는 구성을 업데이트해야 할 수 있습니다.
이 가이드는 이러한 일반적인 업데이트 작업을 수행하는 방법을 설명합니다.
</Note>
## 왜 Crew를 업데이트해야 하나요?
CrewAI는 기본적으로 GitHub 업데이트를 자동으로 반영하지 않으므로, 배포 시 `Auto-update` 옵션을 선택하지 않았다면 수동으로 업데이트를 트리거해야 합니다.
Crew 배포를 업데이트하고 싶은 이유는 여러 가지가 있을 수 있습니다:
- GitHub에 푸시한 최신 커밋으로 코드를 업데이트하고 싶은 경우
- 보안상의 이유로 bearer 토큰을 재설정하고 싶은 경우
- 환경 변수를 업데이트하고 싶은 경우
## 1. 최신 커밋으로 Crew 코드 업데이트하기
GitHub 저장소에 새로운 커밋을 푸시한 후 배포를 업데이트하려면 다음 단계를 따르세요:
1. CrewAI Enterprise 플랫폼에서 자신의 crew로 이동하세요.
2. crew 상세 페이지에서 `Re-deploy` 버튼을 클릭하세요.
<Frame>
![Re-deploy Button](/images/enterprise/redeploy-button.png)
</Frame>
이 작업을 수행하면 진행률 표시줄을 통해 추적할 수 있는 업데이트가 트리거됩니다. 시스템은 저장소에서 최신 코드를 가져와서 배포를 다시 빌드합니다.
## 2. 베어러 토큰 재설정
현재 토큰이 유출되었을 가능성이 있다고 의심되는 경우 등, 새 베어러 토큰을 생성해야 한다면 다음 단계를 따르세요:
1. CrewAI Enterprise 플랫폼에서 해당 crew로 이동하세요.
2. `Bearer Token` 섹션을 찾으세요.
3. 현재 토큰 옆에 있는 `Reset` 버튼을 클릭하세요.
<Frame>
![Reset Token](/images/enterprise/reset-token.png)
</Frame>
<Warning>
베어러 토큰을 재설정하면 이전 토큰은 즉시 사용할 수 없게 됩니다. 이전 토큰을 사용하고 있는 모든 애플리케이션이나 스크립트에서 토큰을 반드시 업데이트하세요.
</Warning>
## 3. 환경 변수 업데이트하기
crew의 환경 변수를 업데이트하려면 다음 단계를 따르세요:
1. 먼저 crew 이름을 클릭하여 배포 페이지에 접속합니다.
<Frame>
![환경 변수 버튼](/images/enterprise/env-vars-button.png)
</Frame>
2. `Environment Variables` 섹션을 찾습니다 (`Settings` 아이콘을 클릭해야 접근할 수 있습니다)
3. 제공된 필드에서 기존 변수를 수정하거나 새 변수를 추가합니다
4. 수정한 각 변수 옆의 `Update` 버튼을 클릭합니다
<Frame>
![환경 변수 업데이트](/images/enterprise/update-env-vars.png)
</Frame>
5. 마지막으로, 변경 사항을 적용하려면 페이지 하단의 `Update Deployment` 버튼을 클릭합니다
<Note>
환경 변수를 업데이트하면 새로운 배포가 트리거되지만, 이는 환경 설정만 업데이트하며 코드 자체는 변경되지 않습니다.
</Note>
## 업데이트 후
업데이트를 수행한 후:
1. 시스템이 crew를 다시 빌드하고 배포합니다
2. 실시간으로 배포 진행 상황을 모니터링할 수 있습니다
3. 완료되면 변경 사항이 예상대로 작동하는지 crew를 테스트합니다
<Tip>
업데이트 후 문제가 발생하면 플랫폼에서 배포 로그를 확인하거나 지원팀에 문의하여 도움을 받을 수 있습니다.
</Tip>
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
crew 업데이트나 배포 문제 해결에 대해 지원이 필요하시면 지원팀에 문의해 주세요.
</Card>

View File

@@ -0,0 +1,121 @@
---
title: "웹후크 자동화"
description: "ActivePieces, Zapier, Make.com과 같은 플랫폼을 사용하여 CrewAI Enterprise 워크플로우를 웹후크로 자동화하세요"
icon: "webhook"
---
CrewAI Enterprise를 사용하면 웹훅을 통해 워크플로우를 자동화할 수 있습니다. 이 문서에서는 웹훅을 설정하고 사용하는 과정을 안내하며, Zapier와 Make.com과 유사한 워크플로우 자동화 플랫폼인 ActivePieces와의 통합에 중점을 두고 crew 실행을 시작하는 방법을 설명합니다.
## Webhook 설정하기
<Steps>
<Step title="Kickoff 인터페이스 접근">
- CrewAI Enterprise 대시보드로 이동하세요.
- crew 실행을 시작할 때 사용하는 `/kickoff` 섹션을 찾으세요.
<Frame>
<img src="/images/enterprise/kickoff-interface.png" alt="Kickoff 인터페이스" />
</Frame>
</Step>
<Step title="JSON Content 구성하기">
JSON Content 섹션에서 다음 정보를 입력해야 합니다:
- **inputs**: 다음 항목이 포함된 JSON 객체:
- `company`: 회사 이름 (예: "tesla")
- `product_name`: 제품 이름 (예: "crewai")
- `form_response`: 응답 유형 (예: "financial")
- `icp_description`: 이상적인 고객 프로필(ICP)에 대한 간략한 설명
- `product_description`: 제품에 대한 짧은 설명
- `taskWebhookUrl`, `stepWebhookUrl`, `crewWebhookUrl`: 다양한 webhook 엔드포인트의 URL (ActivePieces, Zapier, Make.com 또는 기타 호환 플랫폼)
</Step>
<Step title="ActivePieces와 통합하기">
이 예시에서는 ActivePieces를 사용합니다. 또한 Zapier, Make.com 등 다른 플랫폼도 사용할 수 있습니다.
ActivePieces와 통합하려면:
1. ActivePieces에서 새 flow를 설정하세요.
2. 트리거를 추가하세요 (예: `Every Day` 스케줄).
<Frame>
<img src="/images/enterprise/activepieces-trigger.png" alt="ActivePieces 트리거" />
</Frame>
3. HTTP 액션 단계를 추가하세요.
- 액션을 `Send HTTP request`로 설정하세요.
- 메소드는 `POST`로 사용하세요.
- URL은 CrewAI Enterprise kickoff 엔드포인트로 설정하세요.
- 필요한 헤더 추가 (예: `Bearer Token`)
<Frame>
<img src="/images/enterprise/activepieces-headers.png" alt="ActivePieces 헤더" />
</Frame>
- Body에는 2단계에서 구성한 JSON content를 포함하세요.
<Frame>
<img src="/images/enterprise/activepieces-body.png" alt="ActivePieces 본문" />
</Frame>
- crew가 미리 정의된 시간에 kickoff됩니다.
</Step>
<Step title="Webhook 설정하기">
1. ActivePieces에서 새 flow를 만들고 이름을 지정하세요.
<Frame>
<img src="/images/enterprise/activepieces-flow.png" alt="ActivePieces Flow" />
</Frame>
2. 트리거로 webhook 단계를 추가하세요:
- 트리거 유형으로 `Catch Webhook`을 선택하세요.
- 이 작업을 통해 HTTP 요청을 수신하고 flow를 트리거하는 고유 URL이 생성됩니다.
<Frame>
<img src="/images/enterprise/activepieces-webhook.png" alt="ActivePieces Webhook" />
</Frame>
- 이메일이 crew webhook 본문 텍스트를 사용하도록 구성하세요.
<Frame>
<img src="/images/enterprise/activepieces-email.png" alt="ActivePieces 이메일" />
</Frame>
</Step>
</Steps>
## Webhook 출력 예시
<Tabs>
<Tab title="Step Webhook">
`stepWebhookUrl` - 각 agent의 inner thought가 실행될 때마다 호출되는 콜백
```json
{
"action": "**crewai 엔터프라이즈 솔루션을 위한 금융 산업에 대한 예비 조사 보고서**\n1. 산업 개요 및 동향\n금융 산업은 ....\n결론:\n금융 산업은 디지털 고객 참여, 위험 관리, 규정 준수와 같은 분야에서 crewai와 같은 AI 솔루션을 적용하기에 비옥한 토양을 제공합니다. 고객의 구체적인 요구와 규모에 더 맞춘 crewai 솔루션을 제안하기 위해 리드와의 추가적인 접촉이 추천됩니다.",
"task_id": "97eba64f-958c-40a0-b61c-625fe635a3c0"
}
```
</Tab>
<Tab title="Task Webhook">
`taskWebhookUrl` - 각 task가 종료될 때마다 호출되는 콜백
```json
{
"description": "리드의 데이터에서 수집한 정보를 활용해 리드가 속한 산업, 기업 배경, 그리고 crewai의 잠재적 활용 사례에 대해 예비 조사를 수행합니다. 리드 스코어링 및 crewai 피치 전략 수립에 도움이 되는 관련 데이터를 중심으로 조사하세요. 금융 산업은 디지털 고객 참여, 리스크 관리, 규제 준수와 같은 분야에서 crewai와 같은 AI 솔루션을 적용하기에 매우 적합한 환경을 제공합니다. 리드에 맞춤화된 crewai 솔루션을 제안하기 위해 추가적인 접촉을 권장합니다.",
"task_id": "97eba64f-958c-40a0-b61c-625fe635a3c0"
}
```
</Tab>
<Tab title="Crew Webhook">
`crewWebhookUrl` - crew 실행 종료 시 호출되는 콜백
```json
{
"task_id": "97eba64f-958c-40a0-b61c-625fe635a3c0",
"result": {
"lead_score": "고객 서비스 향상 및 컴플라이언스가 특히 관련성이 높습니다.",
"talking_points": [
"crewai의 AI 솔루션이 자동화된 맞춤형 경험과 24/7 지원으로 고객 서비스를 혁신하고, 고객 만족도와 운영 효율성을 모두 개선할 수 있음을 강조하세요.",
"crewai가 더 나은 데이터 분석 및 의사 결정으로 기관의 지속 가능성 목표 달성(책임 투자 및 친환경 이니셔티브 기여)에 도움이 될 수 있음을 논의하세요.",
"지속적으로 변화하는 규정에 효율적인 데이터 처리 및 보고 기능으로 crewai가 컴플라이언스 준수를 강화하고, 위반 시 발생할 수 있는 벌금을 줄일 수 있음을 강조하세요.",
"crewai의 뛰어난 적응성으로 인해 대규모 다국적 운영뿐 아니라 소규모 맞춤형 프로젝트도 지원하여, 기관의 성장과 함께 솔루션도 확장될 수 있음을 강조하세요."
]
}
}
```
</Tab>
</Tabs>

View File

@@ -0,0 +1,103 @@
---
title: "Zapier 트리거"
description: "Zapier 워크플로우에서 CrewAI crew를 트리거하여 앱 간 워크플로우를 자동화합니다"
icon: "bolt"
---
이 가이드는 CrewAI Enterprise용 Zapier 트리거를 설정하는 과정을 안내합니다. 이를 통해 CrewAI Enterprise와 기타 애플리케이션 간의 워크플로우를 자동화할 수 있습니다.
## 사전 요구 사항
- CrewAI Enterprise 계정
- Zapier 계정
- Slack 계정 (이 특정 예시에 해당)
## 단계별 설정
<Steps>
<Step title="Slack 트리거 설정">
- Zapier에서 새 Zap을 만듭니다.
<Frame>
<img src="/images/enterprise/zapier-1.png" alt="Zapier 1" />
</Frame>
</Step>
<Step title="트리거 앱으로 Slack 선택">
<Frame>
<img src="/images/enterprise/zapier-2.png" alt="Zapier 2" />
</Frame>
- 트리거 이벤트로 `New Pushed Message`를 선택합니다.
- 아직 Slack 계정을 연결하지 않았다면 연결하세요.
</Step>
<Step title="CrewAI Enterprise 액션 구성">
- Zap에 새 액션 단계를 추가합니다.
- CrewAI+를 액션 앱으로, Kickoff를 액션 이벤트로 선택합니다.
<Frame>
<img src="/images/enterprise/zapier-3.png" alt="Zapier 5" />
</Frame>
</Step>
<Step title="CrewAI Enterprise 계정 연결">
- CrewAI Enterprise 계정을 연결하세요.
- 워크플로에 적합한 Crew를 선택하세요.
<Frame>
<img src="/images/enterprise/zapier-4.png" alt="Zapier 6" />
</Frame>
- Slack 메시지의 데이터를 사용하여 Crew의 입력값을 구성하세요.
</Step>
<Step title="CrewAI Enterprise 출력 포맷팅">
- CrewAI Enterprise에서 출력된 텍스트를 포맷팅하기 위해 추가 액션 단계를 추가합니다.
- Zapier의 포매팅 도구를 사용하여 Markdown 출력을 HTML로 변환합니다.
<Frame>
<img src="/images/enterprise/zapier-5.png" alt="Zapier 8" />
</Frame>
<Frame>
<img src="/images/enterprise/zapier-6.png" alt="Zapier 9" />
</Frame>
</Step>
<Step title="출력 이메일로 전송">
- 포맷팅된 출력을 이메일로 전송하는 마지막 액션 단계를 추가합니다.
- 원하는 이메일 서비스를 선택하세요 (예: Gmail, Outlook).
- 수신자, 제목, 본문 등 이메일 상세 정보를 구성하세요.
- 포맷팅된 CrewAI Enterprise 출력을 이메일 본문에 삽입합니다.
<Frame>
<img src="/images/enterprise/zapier-7.png" alt="Zapier 7" />
</Frame>
</Step>
<Step title="Slack에서 crew 실행">
- Slack 채널에 텍스트를 입력하세요.
<Frame>
<img src="/images/enterprise/zapier-7b.png" alt="Zapier 10" />
</Frame>
- 3점 버튼을 선택한 후 'Push to Zapier'를 선택하세요.
<Frame>
<img src="/images/enterprise/zapier-8.png" alt="Zapier 11" />
</Frame>
</Step>
<Step title="crew 선택 후 Kick Off로 Push">
<Frame>
<img src="/images/enterprise/zapier-9.png" alt="Zapier 12" />
</Frame>
</Step>
</Steps>
## 성공을 위한 팁
- CrewAI Enterprise 입력값이 Slack 메시지에서 올바르게 매핑되었는지 확인하세요.
- Zap을 활성화하기 전에 철저히 테스트하여 잠재적인 문제를 미리 파악하세요.
- 워크플로우 내에서 발생할 수 있는 실패 상황을 관리하기 위해 오류 처리 단계를 추가하는 것을 고려하세요.
이 단계를 따르면 Slack 메시지로 트리거되는 자동화된 워크플로우와 CrewAI Enterprise 출력이 포함된 이메일 알림을 설정할 수 있습니다.

View File

@@ -0,0 +1,253 @@
---
title: Asana 연동
description: "CrewAI를 위한 Asana 연동으로 팀 작업 및 프로젝트 조정."
icon: "circle"
---
## 개요
에이전트가 Asana를 통해 업무, 프로젝트, 팀 협업을 관리할 수 있도록 지원하세요. 작업 생성, 프로젝트 상태 업데이트, 담당 할당 관리, AI 기반 자동화를 통한 팀의 워크플로우 최적화를 손쉽게 할 수 있습니다.
## 사전 준비 사항
Asana 연동을 사용하기 전에 다음을 확인하세요:
- 활성 구독이 있는 [CrewAI Enterprise](https://app.crewai.com) 계정
- 적절한 권한이 있는 Asana 계정
- [통합 페이지](https://app.crewai.com/crewai_plus/connectors)를 통해 Asana 계정 연결
## 아사나(Asana) 연동 설정
### 1. Asana 계정 연결하기
1. [CrewAI Enterprise Integrations](https://app.crewai.com/crewai_plus/connectors)로 이동합니다.
2. 인증 통합 섹션에서 **Asana**를 찾습니다.
3. **Connect**를 클릭하고 OAuth 플로우를 완료합니다.
4. 작업 및 프로젝트 관리를 위한 필요한 권한을 부여합니다.
5. [계정 설정](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
### 2. 필수 패키지 설치
```bash
uv add crewai-tools
```
## 사용 가능한 작업
<AccordionGroup>
<Accordion title="ASANA_CREATE_COMMENT">
**설명:** Asana에 댓글을 생성합니다.
**매개변수:**
- `task` (string, 필수): 작업 ID - 댓글이 추가될 작업의 ID입니다. 댓글 작성자는 현재 인증된 사용자입니다.
- `text` (string, 필수): 텍스트 (예: "This is a comment.").
</Accordion>
<Accordion title="ASANA_CREATE_PROJECT">
**설명:** Asana에 프로젝트를 생성합니다.
**매개변수:**
- `name` (string, 필수): 이름 (예: "Stuff to buy").
- `workspace` (string, 필수): 워크스페이스 - Connect Portal Workflow 설정을 사용해 사용자가 프로젝트를 생성할 워크스페이스를 선택할 수 있도록 합니다. 공란인 경우 기본적으로 사용자의 첫 번째 워크스페이스가 선택됩니다.
- `team` (string, 선택): 팀 - Connect Portal Workflow 설정을 사용해 사용자가 이 프로젝트를 공유할 팀을 선택할 수 있도록 합니다. 공란인 경우 기본적으로 사용자의 첫 번째 팀이 선택됩니다.
- `notes` (string, 선택): 노트 (예: "These are things we need to purchase.").
</Accordion>
<Accordion title="ASANA_GET_PROJECTS">
**설명:** Asana의 프로젝트 목록을 가져옵니다.
**매개변수:**
- `archived` (string, 선택): 보관됨 - 보관된 프로젝트를 보려면 "true", 활성 프로젝트만 보려면 "false", 보관됨과 활성 모두 보려면 "default"를 선택합니다.
- 옵션: `default`, `true`, `false`
</Accordion>
<Accordion title="ASANA_GET_PROJECT_BY_ID">
**설명:** Asana에서 ID로 프로젝트를 가져옵니다.
**매개변수:**
- `projectFilterId` (string, 필수): 프로젝트 ID.
</Accordion>
<Accordion title="ASANA_CREATE_TASK">
**설명:** Asana에 작업을 생성합니다.
**매개변수:**
- `name` (string, 필수): 이름 (예: "Task Name").
- `workspace` (string, 선택): 워크스페이스 - Connect Portal Workflow 설정을 사용해 사용자가 작업을 생성할 워크스페이스를 선택할 수 있도록 합니다. 공란인 경우 기본적으로 사용자의 첫 번째 워크스페이스가 선택됩니다.
- `project` (string, 선택): 프로젝트 - Connect Portal Workflow 설정을 사용해 사용자가 이 작업을 생성할 프로젝트를 선택할 수 있도록 합니다.
- `notes` (string, 선택): 노트.
- `dueOnDate` (string, 선택): 마감일 - 이 작업이 완료되어야 하는 날짜입니다. Due At과 함께 사용할 수 없습니다. (예: "YYYY-MM-DD").
- `dueAtDate` (string, 선택): 마감 시각 - 이 작업이 완료되어야 하는 날짜와 시간 (ISO 타임스탬프) 입니다. Due On과 함께 사용할 수 없습니다. (예: "2019-09-15T02:06:58.147Z").
- `assignee` (string, 선택): 담당자 - 이 작업이 할당될 Asana 사용자의 ID입니다. Connect Portal Workflow 설정을 사용해 사용자가 담당자를 선택할 수 있도록 합니다.
- `gid` (string, 선택): 외부 ID - 이 작업과 연결할 애플리케이션의 ID입니다. 이 ID를 사용하여 이후 작업 업데이트를 동기화할 수 있습니다.
</Accordion>
<Accordion title="ASANA_UPDATE_TASK">
**설명:** Asana의 작업을 업데이트합니다.
**매개변수:**
- `taskId` (string, 필수): 작업 ID - 업데이트할 작업의 ID입니다.
- `completeStatus` (string, 선택): 완료 상태.
- 옵션: `true`, `false`
- `name` (string, 선택): 이름 (예: "Task Name").
- `notes` (string, 선택): 노트.
- `dueOnDate` (string, 선택): 마감일 - 이 작업이 완료되어야 하는 날짜입니다. Due At과 함께 사용할 수 없습니다. (예: "YYYY-MM-DD").
- `dueAtDate` (string, 선택): 마감 시각 - 이 작업이 완료되어야 하는 날짜와 시간 (ISO 타임스탬프) 입니다. Due On과 함께 사용할 수 없습니다. (예: "2019-09-15T02:06:58.147Z").
- `assignee` (string, 선택): 담당자 - 이 작업이 할당될 Asana 사용자의 ID입니다. Connect Portal Workflow 설정을 사용해 사용자가 담당자를 선택할 수 있도록 합니다.
- `gid` (string, 선택): 외부 ID - 이 작업과 연결할 애플리케이션의 ID입니다. 이 ID를 사용하여 이후 작업 업데이트를 동기화할 수 있습니다.
</Accordion>
<Accordion title="ASANA_GET_TASKS">
**설명:** Asana의 작업 목록을 가져옵니다.
**매개변수:**
- `workspace` (string, 선택): 워크스페이스 - 작업을 필터링할 워크스페이스의 ID입니다. Connect Portal Workflow 설정을 사용해 사용자가 워크스페이스를 선택할 수 있도록 합니다.
- `project` (string, 선택): 프로젝트 - 작업을 필터링할 프로젝트의 ID입니다. Connect Portal Workflow 설정을 사용해 사용자가 프로젝트를 선택할 수 있도록 합니다.
- `assignee` (string, 선택): 담당자 - 작업을 필터링할 담당자의 ID입니다. Connect Portal Workflow 설정을 사용해 사용자가 담당자를 선택할 수 있도록 합니다.
- `completedSince` (string, 선택): 이후 완료됨 - 미완료이거나 해당 시간(ISO 또는 Unix 타임스탬프) 이후에 완료된 작업만 반환합니다. (예: "2014-04-25T16:15:47-04:00").
</Accordion>
<Accordion title="ASANA_GET_TASKS_BY_ID">
**설명:** Asana에서 ID로 작업 목록을 가져옵니다.
**매개변수:**
- `taskId` (string, 필수): 작업 ID.
</Accordion>
<Accordion title="ASANA_GET_TASK_BY_EXTERNAL_ID">
**설명:** Asana에서 외부 ID로 작업을 가져옵니다.
**매개변수:**
- `gid` (string, 필수): 외부 ID - 이 작업이 애플리케이션과 연동(또는 동기화)된 ID입니다.
</Accordion>
<Accordion title="ASANA_ADD_TASK_TO_SECTION">
**설명:** Asana에서 섹션에 작업을 추가합니다.
**매개변수:**
- `sectionId` (string, 필수): 섹션 ID - 작업을 추가할 섹션의 ID입니다.
- `taskId` (string, 필수): 작업 ID - 작업의 ID입니다. (예: "1204619611402340").
- `beforeTaskId` (string, 선택): 이전 작업 ID - 이 작업이 삽입될 섹션 내의 작업 ID입니다. 이후 작업 ID와 함께 사용할 수 없습니다. (예: "1204619611402340").
- `afterTaskId` (string, 선택): 이후 작업 ID - 이 작업이 삽입될 섹션 내의 작업 ID입니다. 이전 작업 ID와 함께 사용할 수 없습니다. (예: "1204619611402340").
</Accordion>
<Accordion title="ASANA_GET_TEAMS">
**설명:** Asana에서 팀 목록을 가져옵니다.
**매개변수:**
- `workspace` (string, 필수): 워크스페이스 - 인증된 사용자가 볼 수 있는 이 워크스페이스 내의 팀을 반환합니다.
</Accordion>
<Accordion title="ASANA_GET_WORKSPACES">
**설명:** Asana에서 워크스페이스 목록을 가져옵니다.
**매개변수:** 필요 없음.
</Accordion>
</AccordionGroup>
## 사용 예시
### 기본 Asana 에이전트 설정
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Asana tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with Asana capabilities
asana_agent = Agent(
role="Project Manager",
goal="Manage tasks and projects in Asana efficiently",
backstory="An AI assistant specialized in project management and task coordination.",
tools=[enterprise_tools]
)
# Task to create a new project
create_project_task = Task(
description="Create a new project called 'Q1 Marketing Campaign' in the Marketing workspace",
agent=asana_agent,
expected_output="Confirmation that the project was created successfully with project ID"
)
# Run the task
crew = Crew(
agents=[asana_agent],
tasks=[create_project_task]
)
crew.kickoff()
```
### 특정 Asana 도구 필터링
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Asana tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["asana_create_task", "asana_update_task", "asana_get_tasks"]
)
task_manager_agent = Agent(
role="Task Manager",
goal="Create and manage tasks efficiently",
backstory="An AI assistant that focuses on task creation and management.",
tools=enterprise_tools
)
# Task to create and assign a task
task_management = Task(
description="Create a task called 'Review quarterly reports' and assign it to the appropriate team member",
agent=task_manager_agent,
expected_output="Task created and assigned successfully"
)
crew = Crew(
agents=[task_manager_agent],
tasks=[task_management]
)
crew.kickoff()
```
### 고급 프로젝트 관리
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
project_coordinator = Agent(
role="Project Coordinator",
goal="Coordinate project activities and track progress",
backstory="An experienced project coordinator who ensures projects run smoothly.",
tools=[enterprise_tools]
)
# Complex task involving multiple Asana operations
coordination_task = Task(
description="""
1. Get all active projects in the workspace
2. For each project, get the list of incomplete tasks
3. Create a summary report task in the 'Management Reports' project
4. Add comments to overdue tasks to request status updates
""",
agent=project_coordinator,
expected_output="Summary report created and status update requests sent for overdue tasks"
)
crew = Crew(
agents=[project_coordinator],
tasks=[coordination_task]
)
crew.kickoff()
```

View File

@@ -0,0 +1,268 @@
---
title: Box 통합
description: "CrewAI용 Box 통합을 통한 파일 저장 및 문서 관리."
icon: "box"
---
## 개요
에이전트가 Box를 통해 파일, 폴더, 문서를 관리할 수 있도록 지원하세요. 파일을 업로드하고, 폴더 구조를 조직하며, 콘텐츠를 검색하고, AI 기반 자동화를 통해 팀의 문서 관리를 효율적으로 진행할 수 있습니다.
## 사전 준비 사항
Box 통합을 사용하기 전에 다음을 확인하세요:
- 활성 구독이 있는 [CrewAI Enterprise](https://app.crewai.com) 계정
- 적절한 권한이 있는 Box 계정
- [통합 페이지](https://app.crewai.com/crewai_plus/connectors)를 통해 Box 계정 연결
## Box 통합 설정
### 1. Box 계정 연결하기
1. [CrewAI Enterprise Integrations](https://app.crewai.com/crewai_plus/connectors)로 이동합니다.
2. 인증 통합 섹션에서 **Box**를 찾습니다.
3. **Connect**를 클릭하고 OAuth 흐름을 완료합니다.
4. 파일 및 폴더 관리를 위한 필요한 권한을 부여합니다.
5. [Account Settings](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
### 2. 필수 패키지 설치
```bash
uv add crewai-tools
```
## 사용 가능한 액션
<AccordionGroup>
<Accordion title="BOX_SAVE_FILE">
**설명:** Box에서 URL로부터 파일을 저장합니다.
**파라미터:**
- `fileAttributes` (object, 필수): 속성 - 이름, 상위 폴더, 타임스탬프 등 파일 메타데이터.
```json
{
"content_created_at": "2012-12-12T10:53:43-08:00",
"content_modified_at": "2012-12-12T10:53:43-08:00",
"name": "qwerty.png",
"parent": { "id": "1234567" }
}
```
- `file` (string, 필수): 파일 URL - 파일 크기는 50MB 미만이어야 합니다. (예시: "https://picsum.photos/200/300").
</Accordion>
<Accordion title="BOX_SAVE_FILE_FROM_OBJECT">
**설명:** Box에 파일을 저장합니다.
**파라미터:**
- `file` (string, 필수): 파일 - 파일 데이터를 포함하는 파일 객체를 허용합니다. 파일 크기는 50MB 미만이어야 합니다.
- `fileName` (string, 필수): 파일명 (예시: "qwerty.png").
- `folder` (string, 선택): 폴더 - Connect Portal Workflow Settings를 사용하여 사용자가 파일의 폴더 목적지를 선택할 수 있도록 합니다. 비워두면 기본적으로 사용자의 루트 폴더에 저장됩니다.
</Accordion>
<Accordion title="BOX_GET_FILE_BY_ID">
**설명:** Box에서 ID로 파일을 가져옵니다.
**파라미터:**
- `fileId` (string, 필수): 파일 ID - 파일을 나타내는 고유 식별자. (예시: "12345").
</Accordion>
<Accordion title="BOX_LIST_FILES">
**설명:** Box에서 파일 목록을 조회합니다.
**파라미터:**
- `folderId` (string, 필수): 폴더 ID - 폴더를 나타내는 고유 식별자. (예시: "0").
- `filterFormula` (object, 선택): 쿼리 normal form (DNF)의 필터 - 단일 조건의 AND 그룹의 OR.
```json
{
"operator": "OR",
"conditions": [
{
"operator": "AND",
"conditions": [
{
"field": "direction",
"operator": "$stringExactlyMatches",
"value": "ASC"
}
]
}
]
}
```
</Accordion>
<Accordion title="BOX_CREATE_FOLDER">
**설명:** Box에 폴더를 생성합니다.
**파라미터:**
- `folderName` (string, 필수): 이름 - 새 폴더의 이름. (예시: "New Folder").
- `folderParent` (object, 필수): 상위 폴더 - 새 폴더가 생성될 상위 폴더.
```json
{
"id": "123456"
}
```
</Accordion>
<Accordion title="BOX_MOVE_FOLDER">
**설명:** Box에서 폴더를 이동합니다.
**파라미터:**
- `folderId` (string, 필수): 폴더 ID - 폴더를 나타내는 고유 식별자. (예시: "0").
- `folderName` (string, 필수): 이름 - 폴더의 이름. (예시: "New Folder").
- `folderParent` (object, 필수): 상위 폴더 - 새 상위 폴더 목적지.
```json
{
"id": "123456"
}
```
</Accordion>
<Accordion title="BOX_GET_FOLDER_BY_ID">
**설명:** Box에서 ID로 폴더를 가져옵니다.
**파라미터:**
- `folderId` (string, 필수): 폴더 ID - 폴더를 나타내는 고유 식별자. (예시: "0").
</Accordion>
<Accordion title="BOX_SEARCH_FOLDERS">
**설명:** Box에서 폴더를 검색합니다.
**파라미터:**
- `folderId` (string, 필수): 폴더 ID - 검색할 폴더.
- `filterFormula` (object, 선택): 쿼리 normal form (DNF)의 필터 - 단일 조건의 AND 그룹의 OR.
```json
{
"operator": "OR",
"conditions": [
{
"operator": "AND",
"conditions": [
{
"field": "sort",
"operator": "$stringExactlyMatches",
"value": "name"
}
]
}
]
}
```
</Accordion>
<Accordion title="BOX_DELETE_FOLDER">
**설명:** Box에서 폴더를 삭제합니다.
**파라미터:**
- `folderId` (string, 필수): 폴더 ID - 폴더를 나타내는 고유 식별자. (예시: "0").
- `recursive` (boolean, 선택): 재귀적 삭제 - 폴더가 비어 있지 않을 경우, 폴더와 그 모든 내용을 재귀적으로 삭제합니다.
</Accordion>
</AccordionGroup>
## 사용 예시
### 기본 Box Agent 설정
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Box tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with Box capabilities
box_agent = Agent(
role="Document Manager",
goal="Manage files and folders in Box efficiently",
backstory="An AI assistant specialized in document management and file organization.",
tools=[enterprise_tools]
)
# Task to create a folder structure
create_structure_task = Task(
description="Create a folder called 'Project Files' in the root directory and upload a document from URL",
agent=box_agent,
expected_output="Folder created and file uploaded successfully"
)
# Run the task
crew = Crew(
agents=[box_agent],
tasks=[create_structure_task]
)
crew.kickoff()
```
### 특정 Box 도구 필터링
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Box tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["box_create_folder", "box_save_file", "box_list_files"]
)
file_organizer_agent = Agent(
role="File Organizer",
goal="Organize and manage file storage efficiently",
backstory="An AI assistant that focuses on file organization and storage management.",
tools=enterprise_tools
)
# Task to organize files
organization_task = Task(
description="Create a folder structure for the marketing team and organize existing files",
agent=file_organizer_agent,
expected_output="Folder structure created and files organized"
)
crew = Crew(
agents=[file_organizer_agent],
tasks=[organization_task]
)
crew.kickoff()
```
### 고급 파일 관리
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
file_manager = Agent(
role="File Manager",
goal="Maintain organized file structure and manage document lifecycle",
backstory="An experienced file manager who ensures documents are properly organized and accessible.",
tools=[enterprise_tools]
)
# Complex task involving multiple Box operations
management_task = Task(
description="""
1. List all files in the root folder
2. Create monthly archive folders for the current year
3. Move old files to appropriate archive folders
4. Generate a summary report of the file organization
""",
agent=file_manager,
expected_output="Files organized into archive structure with summary report"
)
crew = Crew(
agents=[file_manager],
tasks=[management_task]
)
crew.kickoff()
```

View File

@@ -0,0 +1,293 @@
---
title: ClickUp 연동
description: "CrewAI를 위한 ClickUp 연동을 통한 작업 및 생산성 관리."
icon: "list-check"
---
## 개요
에이전트가 ClickUp을 통해 작업, 프로젝트 및 생산성 워크플로우를 관리할 수 있도록 지원하세요. 작업을 생성 및 업데이트하고, 프로젝트를 구성하며, 팀 할당을 관리하고, AI 기반 자동화를 통해 생산성 관리를 간소화할 수 있습니다.
## 사전 준비사항
ClickUp 통합을 사용하기 전에 다음을 준비해야 합니다:
- 활성 구독이 있는 [CrewAI Enterprise](https://app.crewai.com) 계정
- 적절한 권한이 있는 ClickUp 계정
- [통합 페이지](https://app.crewai.com/crewai_plus/connectors)를 통해 ClickUp 계정 연결
## ClickUp 통합 설정
### 1. ClickUp 계정 연결하기
1. [CrewAI Enterprise Integrations](https://app.crewai.com/crewai_plus/connectors)로 이동합니다.
2. 인증 통합 섹션에서 **ClickUp**을 찾습니다.
3. **Connect**를 클릭하고 OAuth 과정을 완료합니다.
4. 작업 및 프로젝트 관리에 필요한 권한을 부여합니다.
5. [계정 설정](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
### 2. 필수 패키지 설치
```bash
uv add crewai-tools
```
## 사용 가능한 동작
<AccordionGroup>
<Accordion title="CLICKUP_SEARCH_TASKS">
**설명:** 고급 필터를 사용하여 ClickUp에서 작업을 검색합니다.
**파라미터:**
- `taskFilterFormula` (object, 선택): 이항 표준형(DNF)의 필터 - 단일 조건의 AND 그룹들의 OR.
```json
{
"operator": "OR",
"conditions": [
{
"operator": "AND",
"conditions": [
{
"field": "statuses%5B%5D",
"operator": "$stringExactlyMatches",
"value": "open"
}
]
}
]
}
```
사용 가능한 필드: `space_ids%5B%5D`, `project_ids%5B%5D`, `list_ids%5B%5D`, `statuses%5B%5D`, `include_closed`, `assignees%5B%5D`, `tags%5B%5D`, `due_date_gt`, `due_date_lt`, `date_created_gt`, `date_created_lt`, `date_updated_gt`, `date_updated_lt`
</Accordion>
<Accordion title="CLICKUP_GET_TASK_IN_LIST">
**설명:** ClickUp의 특정 목록에서 작업을 가져옵니다.
**파라미터:**
- `listId` (string, 필수): 목록 - 작업을 가져올 목록을 선택합니다. 사용자가 ClickUp 목록을 선택할 수 있도록 Connect Portal 사용자 설정을 사용하세요.
- `taskFilterFormula` (string, 선택): 지정된 필터와 일치하는 작업을 검색합니다. 예: name=task1.
</Accordion>
<Accordion title="CLICKUP_CREATE_TASK">
**설명:** ClickUp에 작업을 생성합니다.
**파라미터:**
- `listId` (string, 필수): 목록 - 이 작업을 생성할 목록을 선택합니다. 사용자가 ClickUp 목록을 선택할 수 있도록 Connect Portal 사용자 설정을 사용하세요.
- `name` (string, 필수): 이름 - 작업 이름.
- `description` (string, 선택): 설명 - 작업 설명.
- `status` (string, 선택): 상태 - 이 작업에 대한 상태를 선택합니다. 사용자가 ClickUp 상태를 선택할 수 있도록 Connect Portal 사용자 설정을 사용하세요.
- `assignees` (string, 선택): 담당자 - 이 작업에 할당할 멤버(또는 멤버 ID 배열)를 선택합니다. 사용자가 ClickUp 멤버를 선택할 수 있도록 Connect Portal 사용자 설정을 사용하세요.
- `dueDate` (string, 선택): 마감일 - 이 작업의 마감일을 지정합니다.
- `additionalFields` (string, 선택): 추가 필드 - 이 작업에 포함할 추가 필드를 JSON으로 지정합니다.
</Accordion>
<Accordion title="CLICKUP_UPDATE_TASK">
**설명:** ClickUp의 작업을 업데이트합니다.
**파라미터:**
- `taskId` (string, 필수): 작업 ID - 업데이트할 작업의 ID입니다.
- `listId` (string, 필수): 목록 - 이 작업을 생성할 목록을 선택합니다. 사용자가 ClickUp 목록을 선택할 수 있도록 Connect Portal 사용자 설정을 사용하세요.
- `name` (string, 선택): 이름 - 작업 이름.
- `description` (string, 선택): 설명 - 작업 설명.
- `status` (string, 선택): 상태 - 이 작업에 대한 상태를 선택합니다. 사용자가 ClickUp 상태를 선택할 수 있도록 Connect Portal 사용자 설정을 사용하세요.
- `assignees` (string, 선택): 담당자 - 이 작업에 할당할 멤버(또는 멤버 ID 배열)를 선택합니다. 사용자가 ClickUp 멤버를 선택할 수 있도록 Connect Portal 사용자 설정을 사용하세요.
- `dueDate` (string, 선택): 마감일 - 이 작업의 마감일을 지정합니다.
- `additionalFields` (string, 선택): 추가 필드 - 이 작업에 포함할 추가 필드를 JSON으로 지정합니다.
</Accordion>
<Accordion title="CLICKUP_DELETE_TASK">
**설명:** ClickUp에서 작업을 삭제합니다.
**파라미터:**
- `taskId` (string, 필수): 작업 ID - 삭제할 작업의 ID입니다.
</Accordion>
<Accordion title="CLICKUP_GET_LIST">
**설명:** ClickUp에서 목록 정보를 가져옵니다.
**파라미터:**
- `spaceId` (string, 필수): 스페이스 ID - 목록이 포함된 스페이스의 ID입니다.
</Accordion>
<Accordion title="CLICKUP_GET_CUSTOM_FIELDS_IN_LIST">
**설명:** ClickUp에서 목록의 사용자 정의 필드를 가져옵니다.
**파라미터:**
- `listId` (string, 필수): 목록 ID - 사용자 정의 필드를 가져올 목록의 ID입니다.
</Accordion>
<Accordion title="CLICKUP_GET_ALL_FIELDS_IN_LIST">
**설명:** ClickUp에서 목록의 모든 필드를 가져옵니다.
**파라미터:**
- `listId` (string, 필수): 목록 ID - 모든 필드를 가져올 목록의 ID입니다.
</Accordion>
<Accordion title="CLICKUP_GET_SPACE">
**설명:** ClickUp에서 스페이스 정보를 가져옵니다.
**파라미터:**
- `spaceId` (string, 선택): 스페이스 ID - 조회할 스페이스의 ID입니다.
</Accordion>
<Accordion title="CLICKUP_GET_FOLDERS">
**설명:** ClickUp에서 폴더를 가져옵니다.
**파라미터:**
- `spaceId` (string, 필수): 스페이스 ID - 폴더가 포함된 스페이스의 ID입니다.
</Accordion>
<Accordion title="CLICKUP_GET_MEMBER">
**설명:** ClickUp에서 멤버 정보를 가져옵니다.
**파라미터:** 필요 없음.
</Accordion>
</AccordionGroup>
## 사용 예시
### 기본 ClickUp 에이전트 설정
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (ClickUp tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with ClickUp capabilities
clickup_agent = Agent(
role="Task Manager",
goal="Manage tasks and projects in ClickUp efficiently",
backstory="An AI assistant specialized in task management and productivity coordination.",
tools=[enterprise_tools]
)
# Task to create a new task
create_task = Task(
description="Create a task called 'Review Q1 Reports' in the Marketing list with high priority",
agent=clickup_agent,
expected_output="Task created successfully with task ID"
)
# Run the task
crew = Crew(
agents=[clickup_agent],
tasks=[create_task]
)
crew.kickoff()
```
### 특정 ClickUp 도구 필터링
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific ClickUp tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["clickup_create_task", "clickup_update_task", "clickup_search_tasks"]
)
task_coordinator = Agent(
role="Task Coordinator",
goal="Create and manage tasks efficiently",
backstory="An AI assistant that focuses on task creation and status management.",
tools=enterprise_tools
)
# Task to manage task workflow
task_workflow = Task(
description="Create a task for project planning and assign it to the development team",
agent=task_coordinator,
expected_output="Task created and assigned successfully"
)
crew = Crew(
agents=[task_coordinator],
tasks=[task_workflow]
)
crew.kickoff()
```
### 고급 프로젝트 관리
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
project_manager = Agent(
role="Project Manager",
goal="Coordinate project activities and track team productivity",
backstory="An experienced project manager who ensures projects are delivered on time.",
tools=[enterprise_tools]
)
# Complex task involving multiple ClickUp operations
project_coordination = Task(
description="""
1. Get all open tasks in the current space
2. Identify overdue tasks and update their status
3. Create a weekly report task summarizing project progress
4. Assign the report task to the team lead
""",
agent=project_manager,
expected_output="Project status updated and weekly report task created and assigned"
)
crew = Crew(
agents=[project_manager],
tasks=[project_coordination]
)
crew.kickoff()
```
### 작업 검색 및 관리
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
task_analyst = Agent(
role="Task Analyst",
goal="Analyze task patterns and optimize team productivity",
backstory="An AI assistant that analyzes task data to improve team efficiency.",
tools=[enterprise_tools]
)
# Task to analyze and optimize task distribution
task_analysis = Task(
description="""
Search for all tasks assigned to team members in the last 30 days,
analyze completion patterns, and create optimization recommendations
""",
agent=task_analyst,
expected_output="Task analysis report with optimization recommendations"
)
crew = Crew(
agents=[task_analyst],
tasks=[task_analysis]
)
crew.kickoff()
```
### 도움 받기
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
ClickUp 연동 설정 또는 문제 해결에 대한 지원이 필요하신 경우 저희 지원팀에 문의하세요.
</Card>

View File

@@ -0,0 +1,323 @@
---
title: GitHub 통합
description: "CrewAI를 위한 GitHub 통합을 통한 리포지토리 및 이슈 관리."
icon: "github"
---
## 개요
에이전트가 GitHub를 통해 리포지토리, 이슈, 릴리스를 관리할 수 있도록 지원합니다. 이슈를 생성 및 업데이트하고, 릴리스를 관리하고, 프로젝트 개발을 추적하며, AI 기반 자동화를 통해 소프트웨어 개발 워크플로우를 효율화하세요.
## 사전 요구 사항
GitHub 통합을 사용하기 전에 다음을 확인하세요:
- 활성 구독이 있는 [CrewAI Enterprise](https://app.crewai.com) 계정
- 해당 리포지토리에 대한 적절한 권한이 있는 GitHub 계정
- [통합 페이지](https://app.crewai.com/crewai_plus/connectors)를 통해 GitHub 계정 연결 완료
## GitHub 연동 설정
### 1. GitHub 계정 연결하기
1. [CrewAI Enterprise Integrations](https://app.crewai.com/crewai_plus/connectors)로 이동합니다.
2. 인증 통합 섹션에서 **GitHub**을 찾습니다.
3. **Connect**를 클릭하고 OAuth 흐름을 완료합니다.
4. 리포지토리 및 이슈 관리를 위한 필수 권한을 부여합니다.
5. [계정 설정](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
### 2. 필수 패키지 설치
```bash
uv add crewai-tools
```
## 사용 가능한 작업
<AccordionGroup>
<Accordion title="GITHUB_CREATE_ISSUE">
**설명:** GitHub에 이슈를 생성합니다.
**파라미터:**
- `owner` (string, 필수): 소유자 - 이 이슈와 연관된 저장소의 계정 소유자 이름을 지정합니다. (예시: "abc").
- `repo` (string, 필수): 저장소 - 이 이슈와 연관된 저장소 이름을 지정합니다.
- `title` (string, 필수): 이슈 제목 - 생성할 이슈의 제목을 지정합니다.
- `body` (string, 선택): 이슈 본문 - 생성할 이슈의 본문 내용을 지정합니다.
- `assignees` (string, 선택): 담당자 - 이 이슈의 담당자 GitHub 로그인을 문자열 배열로 지정합니다. (예시: `["octocat"]`).
</Accordion>
<Accordion title="GITHUB_UPDATE_ISSUE">
**설명:** GitHub에서 이슈를 업데이트합니다.
**파라미터:**
- `owner` (string, 필수): 소유자 - 이 이슈와 연관된 저장소의 계정 소유자 이름을 지정합니다. (예시: "abc").
- `repo` (string, 필수): 저장소 - 이 이슈와 연관된 저장소 이름을 지정합니다.
- `issue_number` (string, 필수): 이슈 번호 - 업데이트할 이슈의 번호를 지정합니다.
- `title` (string, 필수): 이슈 제목 - 업데이트할 이슈의 제목을 지정합니다.
- `body` (string, 선택): 이슈 본문 - 업데이트할 이슈의 본문 내용을 지정합니다.
- `assignees` (string, 선택): 담당자 - 이 이슈의 담당자 GitHub 로그인을 문자열 배열로 지정합니다. (예시: `["octocat"]`).
- `state` (string, 선택): 상태 - 이슈의 변경된 상태를 지정합니다.
- 옵션: `open`, `closed`
</Accordion>
<Accordion title="GITHUB_GET_ISSUE_BY_NUMBER">
**설명:** GitHub에서 번호로 이슈를 조회합니다.
**파라미터:**
- `owner` (string, 필수): 소유자 - 이 이슈와 연관된 저장소의 계정 소유자 이름을 지정합니다. (예시: "abc").
- `repo` (string, 필수): 저장소 - 이 이슈와 연관된 저장소 이름을 지정합니다.
- `issue_number` (string, 필수): 이슈 번호 - 가져올 이슈의 번호를 지정합니다.
</Accordion>
<Accordion title="GITHUB_LOCK_ISSUE">
**설명:** GitHub에서 이슈를 잠급니다.
**파라미터:**
- `owner` (string, 필수): 소유자 - 이 이슈와 연관된 저장소의 계정 소유자 이름을 지정합니다. (예시: "abc").
- `repo` (string, 필수): 저장소 - 이 이슈와 연관된 저장소 이름을 지정합니다.
- `issue_number` (string, 필수): 이슈 번호 - 잠글 이슈의 번호를 지정합니다.
- `lock_reason` (string, 필수): 잠금 사유 - 이슈 또는 풀 리퀘스트 대화에 대한 잠금 이유를 지정합니다.
- 옵션: `off-topic`, `too heated`, `resolved`, `spam`
</Accordion>
<Accordion title="GITHUB_SEARCH_ISSUE">
**설명:** GitHub에서 이슈를 검색합니다.
**파라미터:**
- `owner` (string, 필수): 소유자 - 이 이슈와 연관된 저장소의 계정 소유자 이름을 지정합니다. (예시: "abc").
- `repo` (string, 필수): 저장소 - 이 이슈와 연관된 저장소 이름을 지정합니다.
- `filter` (object, 필수): 불리언 표준형의 필터 - 단일 조건의 AND 그룹의 OR 조합.
```json
{
"operator": "OR",
"conditions": [
{
"operator": "AND",
"conditions": [
{
"field": "assignee",
"operator": "$stringExactlyMatches",
"value": "octocat"
}
]
}
]
}
```
사용 가능한 필드: `assignee`, `creator`, `mentioned`, `labels`
</Accordion>
<Accordion title="GITHUB_CREATE_RELEASE">
**설명:** GitHub에 릴리스를 생성합니다.
**파라미터:**
- `owner` (string, 필수): 소유자 - 이 릴리스와 연관된 저장소의 계정 소유자 이름을 지정합니다. (예시: "abc").
- `repo` (string, 필수): 저장소 - 이 릴리스와 연관된 저장소 이름을 지정합니다.
- `tag_name` (string, 필수): 이름 - 생성할 릴리스 태그의 이름을 지정합니다. (예시: "v1.0.0").
- `target_commitish` (string, 선택): 대상 - 릴리스의 대상을 지정합니다. 브랜치 이름이나 커밋 SHA가 될 수 있으며, 기본값은 메인 브랜치입니다. (예시: "master").
- `body` (string, 선택): 본문 - 이 릴리스에 대한 설명을 지정합니다.
- `draft` (string, 선택): 초안 - 생성할 릴리스를 초안(비공개) 릴리스로 지정할지 여부를 지정합니다.
- 옵션: `true`, `false`
- `prerelease` (string, 선택): 프리릴리스 - 생성할 릴리스를 프리릴리스로 지정할지 여부를 지정합니다.
- 옵션: `true`, `false`
- `discussion_category_name` (string, 선택): 토론 카테고리 이름 - 지정 시, 해당 카테고리의 토론이 생성되어 릴리스와 연결됩니다. 값은 저장소에 이미 존재하는 카테고리여야 합니다.
- `generate_release_notes` (string, 선택): 릴리스 노트 - 지정한 이름과 본문을 사용하여 릴리스 노트를 자동으로 생성할지 여부를 지정합니다.
- 옵션: `true`, `false`
</Accordion>
<Accordion title="GITHUB_UPDATE_RELEASE">
**설명:** GitHub에서 릴리스를 업데이트합니다.
**파라미터:**
- `owner` (string, 필수): 소유자 - 이 릴리스와 연관된 저장소의 계정 소유자 이름을 지정합니다. (예시: "abc").
- `repo` (string, 필수): 저장소 - 이 릴리스와 연관된 저장소 이름을 지정합니다.
- `id` (string, 필수): 릴리스 ID - 업데이트할 릴리스의 ID를 지정합니다.
- `tag_name` (string, 선택): 이름 - 업데이트할 릴리스 태그의 이름을 지정합니다. (예시: "v1.0.0").
- `target_commitish` (string, 선택): 대상 - 릴리스의 대상을 지정합니다. 브랜치 이름이나 커밋 SHA가 될 수 있으며, 기본값은 메인 브랜치입니다. (예시: "master").
- `body` (string, 선택): 본문 - 이 릴리스에 대한 설명을 지정합니다.
- `draft` (string, 선택): 초안 - 생성할 릴리스를 초안(비공개) 릴리스로 지정할지 여부를 지정합니다.
- 옵션: `true`, `false`
- `prerelease` (string, 선택): 프리릴리스 - 생성할 릴리스를 프리릴리스로 지정할지 여부를 지정합니다.
- 옵션: `true`, `false`
- `discussion_category_name` (string, 선택): 토론 카테고리 이름 - 지정 시, 해당 카테고리의 토론이 생성되어 릴리스와 연결됩니다. 값은 저장소에 이미 존재하는 카테고리여야 합니다.
- `generate_release_notes` (string, 선택): 릴리스 노트 - 지정한 이름과 본문을 사용하여 릴리스 노트를 자동으로 생성할지 여부를 지정합니다.
- 옵션: `true`, `false`
</Accordion>
<Accordion title="GITHUB_GET_RELEASE_BY_ID">
**설명:** GitHub에서 ID로 릴리스를 조회합니다.
**파라미터:**
- `owner` (string, 필수): 소유자 - 이 릴리스와 연관된 저장소의 계정 소유자 이름을 지정합니다. (예시: "abc").
- `repo` (string, 필수): 저장소 - 이 릴리스와 연관된 저장소 이름을 지정합니다.
- `id` (string, 필수): 릴리스 ID - 조회할 릴리스의 ID를 지정합니다.
</Accordion>
<Accordion title="GITHUB_GET_RELEASE_BY_TAG_NAME">
**설명:** GitHub에서 태그 이름으로 릴리스를 조회합니다.
**파라미터:**
- `owner` (string, 필수): 소유자 - 이 릴리스와 연관된 저장소의 계정 소유자 이름을 지정합니다. (예시: "abc").
- `repo` (string, 필수): 저장소 - 이 릴리스와 연관된 저장소 이름을 지정합니다.
- `tag_name` (string, 필수): 이름 - 가져올 릴리스의 태그를 지정합니다. (예시: "v1.0.0").
</Accordion>
<Accordion title="GITHUB_DELETE_RELEASE">
**설명:** GitHub에서 릴리스를 삭제합니다.
**파라미터:**
- `owner` (string, 필수): 소유자 - 이 릴리스와 연관된 저장소의 계정 소유자 이름을 지정합니다. (예시: "abc").
- `repo` (string, 필수): 저장소 - 이 릴리스와 연관된 저장소 이름을 지정합니다.
- `id` (string, 필수): 릴리스 ID - 삭제할 릴리스의 ID를 지정합니다.
</Accordion>
</AccordionGroup>
## 사용 예시
### 기본 GitHub 에이전트 설정
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (GitHub tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with GitHub capabilities
github_agent = Agent(
role="Repository Manager",
goal="Manage GitHub repositories, issues, and releases efficiently",
backstory="An AI assistant specialized in repository management and issue tracking.",
tools=[enterprise_tools]
)
# Task to create a new issue
create_issue_task = Task(
description="Create a bug report issue for the login functionality in the main repository",
agent=github_agent,
expected_output="Issue created successfully with issue number"
)
# Run the task
crew = Crew(
agents=[github_agent],
tasks=[create_issue_task]
)
crew.kickoff()
```
### 특정 GitHub 도구 필터링
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific GitHub tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["github_create_issue", "github_update_issue", "github_search_issue"]
)
issue_manager = Agent(
role="Issue Manager",
goal="Create and manage GitHub issues efficiently",
backstory="An AI assistant that focuses on issue tracking and management.",
tools=enterprise_tools
)
# Task to manage issue workflow
issue_workflow = Task(
description="Create a feature request issue and assign it to the development team",
agent=issue_manager,
expected_output="Feature request issue created and assigned successfully"
)
crew = Crew(
agents=[issue_manager],
tasks=[issue_workflow]
)
crew.kickoff()
```
### 릴리즈 관리
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
release_manager = Agent(
role="Release Manager",
goal="Manage software releases and versioning",
backstory="An experienced release manager who handles version control and release processes.",
tools=[enterprise_tools]
)
# Task to create a new release
release_task = Task(
description="""
Create a new release v2.1.0 for the project with:
- Auto-generated release notes
- Target the main branch
- Include a description of new features and bug fixes
""",
agent=release_manager,
expected_output="Release v2.1.0 created successfully with release notes"
)
crew = Crew(
agents=[release_manager],
tasks=[release_task]
)
crew.kickoff()
```
### 이슈 추적 및 관리
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
project_coordinator = Agent(
role="Project Coordinator",
goal="Track and coordinate project issues and development progress",
backstory="An AI assistant that helps coordinate development work and track project progress.",
tools=[enterprise_tools]
)
# Complex task involving multiple GitHub operations
coordination_task = Task(
description="""
1. Search for all open issues assigned to the current milestone
2. Identify overdue issues and update their priority labels
3. Create a weekly progress report issue
4. Lock resolved issues that have been inactive for 30 days
""",
agent=project_coordinator,
expected_output="Project coordination completed with progress report and issue management"
)
crew = Crew(
agents=[project_coordinator],
tasks=[coordination_task]
)
crew.kickoff()
```
### 도움 받기
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
GitHub 통합 설정 또는 문제 해결에 대해 지원팀에 문의하세요.
</Card>

View File

@@ -0,0 +1,356 @@
---
title: Gmail 연동
description: "CrewAI를 위한 Gmail 연동을 통한 이메일 및 연락처 관리."
icon: "envelope"
---
## 개요
에이전트가 Gmail을 통해 이메일, 연락처, 임시 저장 메시지를 관리할 수 있도록 합니다. 이메일을 보내고, 메시지를 검색하며, 연락처를 관리하고, 임시 저장 메시지를 작성하며, AI 기반 자동화를 통해 이메일 커뮤니케이션을 효율화하세요.
## 사전 준비 사항
Gmail 통합을 사용하기 전에 다음을 확인하세요:
- 활성 구독이 있는 [CrewAI Enterprise](https://app.crewai.com) 계정
- 적절한 권한이 있는 Gmail 계정
- [통합 페이지](https://app.crewai.com/crewai_plus/connectors)를 통해 Gmail 계정 연결
## Gmail 연동 설정
### 1. Gmail 계정 연결하기
1. [CrewAI Enterprise Integrations](https://app.crewai.com/crewai_plus/connectors)로 이동합니다.
2. 인증 통합 섹션에서 **Gmail**을 찾습니다.
3. **Connect**를 클릭하고 OAuth 흐름을 완료합니다.
4. 이메일 및 연락처 관리를 위한 필요한 권한을 부여합니다.
5. [Account Settings](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
### 2. 필수 패키지 설치
```bash
uv add crewai-tools
```
## 사용 가능한 작업
<AccordionGroup>
<Accordion title="GMAIL_SEND_EMAIL">
**설명:** Gmail에서 이메일을 보냅니다.
**파라미터:**
- `toRecipients` (array, 필수): 받는 사람 - 하나의 문자열 또는 JSON 배열로 받는 사람을 지정합니다.
```json
[
"recipient1@domain.com",
"recipient2@domain.com"
]
```
- `from` (string, 필수): 보내는 사람 - 발신자의 이메일을 지정합니다.
- `subject` (string, 필수): 제목 - 메시지의 제목을 지정합니다.
- `messageContent` (string, 필수): 메시지 내용 - 이메일 메시지의 내용을 일반 텍스트 또는 HTML로 지정합니다.
- `attachments` (string, 선택): 첨부파일 - 단일 파일 객체 또는 파일 객체의 JSON 배열을 허용합니다.
- `additionalHeaders` (object, 선택): 추가 헤더 - 추가 헤더 필드를 지정할 수 있습니다.
```json
{
"reply-to": "Sender Name <sender@domain.com>"
}
```
</Accordion>
<Accordion title="GMAIL_GET_EMAIL_BY_ID">
**설명:** Gmail에서 ID로 이메일을 조회합니다.
**파라미터:**
- `userId` (string, 필수): 사용자 ID - 사용자의 이메일 주소를 지정합니다. (예: "user@domain.com").
- `messageId` (string, 필수): 메시지 ID - 조회할 메시지의 ID를 지정합니다.
</Accordion>
<Accordion title="GMAIL_SEARCH_FOR_EMAIL">
**설명:** 고급 필터를 사용하여 Gmail에서 이메일을 검색합니다.
**파라미터:**
- `emailFilterFormula` (object, 선택): 불리언 식(OR로 연결된 AND 그룹의 단일 조건)으로 된 필터.
```json
{
"operator": "OR",
"conditions": [
{
"operator": "AND",
"conditions": [
{
"field": "from",
"operator": "$stringContains",
"value": "example@domain.com"
}
]
}
]
}
```
사용 가능한 필드: `from`, `to`, `date`, `label`, `subject`, `cc`, `bcc`, `category`, `deliveredto:`, `size`, `filename`, `older_than`, `newer_than`, `list`, `is:important`, `is:unread`, `is:snoozed`, `is:starred`, `is:read`, `has:drive`, `has:document`, `has:spreadsheet`, `has:presentation`, `has:attachment`, `has:youtube`, `has:userlabels`
- `paginationParameters` (object, 선택): 페이지네이션 파라미터.
```json
{
"pageCursor": "page_cursor_string"
}
```
</Accordion>
<Accordion title="GMAIL_DELETE_EMAIL">
**설명:** Gmail에서 이메일을 삭제합니다.
**파라미터:**
- `userId` (string, 필수): 사용자 ID - 사용자의 이메일 주소를 지정합니다. (예: "user@domain.com").
- `messageId` (string, 필수): 메시지 ID - 휴지통으로 보낼 메시지의 ID를 지정합니다.
</Accordion>
<Accordion title="GMAIL_CREATE_A_CONTACT">
**설명:** Gmail에서 연락처를 생성합니다.
**파라미터:**
- `givenName` (string, 필수): 이름 - 생성할 연락처의 이름을 지정합니다. (예: "John").
- `familyName` (string, 필수): 성 - 생성할 연락처의 성을 지정합니다. (예: "Doe").
- `email` (string, 필수): 이메일 - 생성할 연락처의 이메일 주소를 지정합니다.
- `additionalFields` (object, 선택): 추가 필드 - 기타 연락처 정보를 입력할 수 있습니다.
```json
{
"addresses": [
{
"streetAddress": "1000 North St.",
"city": "Los Angeles"
}
]
}
```
</Accordion>
<Accordion title="GMAIL_GET_CONTACT_BY_RESOURCE_NAME">
**설명:** Gmail에서 리소스 이름으로 연락처를 조회합니다.
**파라미터:**
- `resourceName` (string, 필수): 리소스 이름 - 조회할 연락처의 리소스 이름을 지정합니다.
</Accordion>
<Accordion title="GMAIL_SEARCH_FOR_CONTACT">
**설명:** Gmail에서 연락처를 검색합니다.
**파라미터:**
- `searchTerm` (string, 필수): 검색어 - 이름, 닉네임, 이메일 주소, 전화번호 또는 조직 연락처 속성에서 유사하거나 정확히 일치하는 항목을 검색할 검색어를 지정합니다.
</Accordion>
<Accordion title="GMAIL_DELETE_CONTACT">
**설명:** Gmail에서 연락처를 삭제합니다.
**파라미터:**
- `resourceName` (string, 필수): 리소스 이름 - 삭제할 연락처의 리소스 이름을 지정합니다.
</Accordion>
<Accordion title="GMAIL_CREATE_DRAFT">
**설명:** Gmail에서 임시 저장 메일을 만듭니다.
**파라미터:**
- `toRecipients` (array, 선택): 받는 사람 - 하나의 문자열 또는 JSON 배열로 받는 사람을 지정합니다.
```json
[
"recipient1@domain.com",
"recipient2@domain.com"
]
```
- `from` (string, 선택): 보내는 사람 - 발신자의 이메일을 지정합니다.
- `subject` (string, 선택): 제목 - 메시지의 제목을 지정합니다.
- `messageContent` (string, 선택): 메시지 내용 - 이메일 메시지의 내용을 일반 텍스트 또는 HTML로 지정합니다.
- `attachments` (string, 선택): 첨부파일 - 단일 파일 객체 또는 파일 객체의 JSON 배열을 허용합니다.
- `additionalHeaders` (object, 선택): 추가 헤더 - 추가 헤더 필드를 지정할 수 있습니다.
```json
{
"reply-to": "Sender Name <sender@domain.com>"
}
```
</Accordion>
</AccordionGroup>
## 사용 예시
### 기본 Gmail 에이전트 설정
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Gmail tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with Gmail capabilities
gmail_agent = Agent(
role="Email Manager",
goal="Manage email communications and contacts efficiently",
backstory="An AI assistant specialized in email management and communication.",
tools=[enterprise_tools]
)
# Task to send a follow-up email
send_email_task = Task(
description="Send a follow-up email to john@example.com about the project update meeting",
agent=gmail_agent,
expected_output="Email sent successfully with confirmation"
)
# Run the task
crew = Crew(
agents=[gmail_agent],
tasks=[send_email_task]
)
crew.kickoff()
```
### 특정 Gmail 도구 필터링
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Gmail tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["gmail_send_email", "gmail_search_for_email", "gmail_create_draft"]
)
email_coordinator = Agent(
role="Email Coordinator",
goal="Coordinate email communications and manage drafts",
backstory="An AI assistant that focuses on email coordination and draft management.",
tools=enterprise_tools
)
# Task to prepare and send emails
email_coordination = Task(
description="Search for emails from the marketing team, create a summary draft, and send it to stakeholders",
agent=email_coordinator,
expected_output="Summary email sent to stakeholders"
)
crew = Crew(
agents=[email_coordinator],
tasks=[email_coordination]
)
crew.kickoff()
```
### 연락처 관리
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
contact_manager = Agent(
role="Contact Manager",
goal="Manage and organize email contacts efficiently",
backstory="An experienced contact manager who maintains organized contact databases.",
tools=[enterprise_tools]
)
# Task to manage contacts
contact_task = Task(
description="""
1. 'example.com' 도메인에서 연락처를 검색합니다.
2. 연락처 목록에 없는 최근 이메일 발신자에 대해 새 연락처를 생성합니다.
3. 최근 상호 작용 데이터를 반영하여 연락처 정보를 업데이트합니다.
""",
agent=contact_manager,
expected_output="새 연락처와 최근 상호 작용으로 연락처 데이터베이스가 업데이트됨"
)
crew = Crew(
agents=[contact_manager],
tasks=[contact_task]
)
crew.kickoff()
```
### 이메일 검색 및 분석
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
email_analyst = Agent(
role="Email Analyst",
goal="Analyze email patterns and provide insights",
backstory="An AI assistant that analyzes email data to provide actionable insights.",
tools=[enterprise_tools]
)
# Task to analyze email patterns
analysis_task = Task(
description="""
Search for all unread emails from the last 7 days,
categorize them by sender domain,
and create a summary report of communication patterns
""",
agent=email_analyst,
expected_output="Email analysis report with communication patterns and recommendations"
)
crew = Crew(
agents=[email_analyst],
tasks=[analysis_task]
)
crew.kickoff()
```
### 자동화된 이메일 워크플로우
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
workflow_manager = Agent(
role="Email Workflow Manager",
goal="Automate email workflows and responses",
backstory="An AI assistant that manages automated email workflows and responses.",
tools=[enterprise_tools]
)
# Complex task involving multiple Gmail operations
workflow_task = Task(
description="""
1. 지난 24시간 동안 제목에 'urgent'가 포함된 이메일 검색
2. 각 긴급 이메일에 대한 답장 초안 생성
3. 발신자에게 자동 확인 이메일 전송
4. 주의가 필요한 긴급 항목의 요약 보고서 작성
""",
agent=workflow_manager,
expected_output="긴급 이메일이 자동 응답 및 요약 보고서와 함께 처리됨"
)
crew = Crew(
agents=[workflow_manager],
tasks=[workflow_task]
)
crew.kickoff()
```
### 도움 받기
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
Gmail 통합 설정 또는 문제 해결에 대한 지원이 필요하시다면 저희 지원팀에 문의해 주세요.
</Card>

View File

@@ -0,0 +1,391 @@
---
title: Google 캘린더 연동
description: "CrewAI를 위한 Google 캘린더 연동을 통한 이벤트 및 일정 관리."
icon: "calendar"
---
## 개요
에이전트가 Google Calendar를 통해 캘린더 이벤트, 일정, 가용 시간을 관리할 수 있도록 지원합니다. 이벤트를 생성 및 업데이트하고 참석자를 관리하며, 가용성을 확인하고 AI 기반 자동화로 일정 관리 워크플로우를 효율적으로 운영하세요.
## 필수 조건
Google Calendar 통합을 사용하기 전에 다음을 준비해야 합니다:
- 활성 구독이 있는 [CrewAI Enterprise](https://app.crewai.com) 계정
- Google Calendar에 접근 가능한 Google 계정
- [통합 페이지](https://app.crewai.com/crewai_plus/connectors)를 통해 Google 계정을 연결 완료
## Google Calendar 연동 설정
### 1. Google 계정 연결하기
1. [CrewAI Enterprise Integrations](https://app.crewai.com/crewai_plus/connectors)로 이동합니다.
2. 인증 통합 섹션에서 **Google Calendar**를 찾습니다.
3. **Connect**를 클릭하고 OAuth 과정을 완료합니다.
4. 캘린더 및 연락처 접근 권한을 허용합니다.
5. [Account Settings](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
### 2. 필수 패키지 설치
```bash
uv add crewai-tools
```
## 사용 가능한 작업
<AccordionGroup>
<Accordion title="GOOGLE_CALENDAR_CREATE_EVENT">
**설명:** Google 캘린더에 이벤트를 생성합니다.
**파라미터:**
- `eventName` (string, 필수): 이벤트 이름.
- `startTime` (string, 필수): 시작 시간 - Unix 타임스탬프 또는 ISO8601 날짜 형식 허용.
- `endTime` (string, 선택): 종료 시간 - 비워두면 시작 시간 기준 1시간 후로 기본 설정됩니다.
- `calendar` (string, 선택): 캘린더 - Connect Portal Workflow Settings를 사용하여 사용자가 이벤트를 추가할 캘린더를 선택할 수 있도록 합니다. 비워두면 사용자의 기본 캘린더로 기본 설정됩니다.
- `attendees` (string, 선택): 참석자 - 이메일 주소 배열 또는 쉼표로 구분된 이메일 주소 허용.
- `eventLocation` (string, 선택): 이벤트 위치.
- `eventDescription` (string, 선택): 이벤트 설명.
- `eventId` (string, 선택): 이벤트 ID - 이 이벤트와 연결할 애플리케이션의 ID입니다. 이후 이 ID를 사용하여 이벤트를 동기화할 수 있습니다.
- `includeMeetLink` (boolean, 선택): Google Meet 링크 포함 여부? - 이 이벤트에 대해 Google Meet 컨퍼런스 링크를 자동으로 생성합니다.
</Accordion>
<Accordion title="GOOGLE_CALENDAR_UPDATE_EVENT">
**설명:** Google 캘린더에서 기존 이벤트를 업데이트합니다.
**파라미터:**
- `eventId` (string, 필수): 이벤트 ID - 업데이트할 이벤트의 ID입니다.
- `eventName` (string, 선택): 이벤트 이름.
- `startTime` (string, 선택): 시작 시간 - Unix 타임스탬프 또는 ISO8601 날짜 형식 허용.
- `endTime` (string, 선택): 종료 시간 - 비워두면 시작 시간 기준 1시간 후로 기본 설정됩니다.
- `calendar` (string, 선택): 캘린더 - Connect Portal Workflow Settings를 사용하여 사용자가 이벤트를 추가할 캘린더를 선택할 수 있도록 합니다. 비워두면 사용자의 기본 캘린더로 기본 설정됩니다.
- `attendees` (string, 선택): 참석자 - 이메일 주소 배열 또는 쉼표로 구분된 이메일 주소 허용.
- `eventLocation` (string, 선택): 이벤트 위치.
- `eventDescription` (string, 선택): 이벤트 설명.
</Accordion>
<Accordion title="GOOGLE_CALENDAR_LIST_EVENTS">
**설명:** Google 캘린더에서 이벤트 목록을 가져옵니다.
**파라미터:**
- `calendar` (string, 선택): 캘린더 - Connect Portal Workflow Settings를 사용하여 사용자가 이벤트를 추가할 캘린더를 선택할 수 있도록 합니다. 비워두면 사용자의 기본 캘린더로 기본 설정됩니다.
- `after` (string, 선택): 이후 - 제공된 날짜 이후에 시작하는 이벤트를 필터링합니다 (밀리초 단위의 Unix 또는 ISO 타임스탬프). (예시: "2025-04-12T10:00:00Z 또는 1712908800000").
- `before` (string, 선택): 이전 - 제공된 날짜 이전에 종료되는 이벤트를 필터링합니다 (밀리초 단위의 Unix 또는 ISO 타임스탬프). (예시: "2025-04-12T10:00:00Z 또는 1712908800000").
</Accordion>
<Accordion title="GOOGLE_CALENDAR_GET_EVENT_BY_ID">
**설명:** Google 캘린더에서 ID로 특정 이벤트를 가져옵니다.
**파라미터:**
- `eventId` (string, 필수): 이벤트 ID.
- `calendar` (string, 선택): 캘린더 - Connect Portal Workflow Settings를 사용하여 사용자가 이벤트를 추가할 캘린더를 선택할 수 있도록 합니다. 비워두면 사용자의 기본 캘린더로 기본 설정됩니다.
</Accordion>
<Accordion title="GOOGLE_CALENDAR_DELETE_EVENT">
**설명:** Google 캘린더에서 이벤트를 삭제합니다.
**파라미터:**
- `eventId` (string, 필수): 이벤트 ID - 삭제할 캘린더 이벤트의 ID입니다.
- `calendar` (string, 선택): 캘린더 - Connect Portal Workflow Settings를 사용하여 사용자가 이벤트를 추가할 캘린더를 선택할 수 있도록 합니다. 비워두면 사용자의 기본 캘린더로 기본 설정됩니다.
</Accordion>
<Accordion title="GOOGLE_CALENDAR_GET_CONTACTS">
**설명:** Google 캘린더에서 연락처를 가져옵니다.
**파라미터:**
- `paginationParameters` (object, 선택): 페이지네이션 파라미터.
```json
{
"pageCursor": "page_cursor_string"
}
```
</Accordion>
<Accordion title="GOOGLE_CALENDAR_SEARCH_CONTACTS">
**설명:** Google 캘린더에서 연락처를 검색합니다.
**파라미터:**
- `query` (string, 선택): 연락처를 검색할 검색 쿼리.
</Accordion>
<Accordion title="GOOGLE_CALENDAR_LIST_DIRECTORY_PEOPLE">
**설명:** 디렉토리 구성원 목록을 가져옵니다.
**파라미터:**
- `paginationParameters` (object, 선택): 페이지네이션 파라미터.
```json
{
"pageCursor": "page_cursor_string"
}
```
</Accordion>
<Accordion title="GOOGLE_CALENDAR_SEARCH_DIRECTORY_PEOPLE">
**설명:** 디렉토리 구성원을 검색합니다.
**파라미터:**
- `query` (string, 필수): 연락처를 검색할 검색 쿼리.
- `paginationParameters` (object, 선택): 페이지네이션 파라미터.
```json
{
"pageCursor": "page_cursor_string"
}
```
</Accordion>
<Accordion title="GOOGLE_CALENDAR_LIST_OTHER_CONTACTS">
**설명:** 기타 연락처 목록을 가져옵니다.
**파라미터:**
- `paginationParameters` (object, 선택): 페이지네이션 파라미터.
```json
{
"pageCursor": "page_cursor_string"
}
```
</Accordion>
<Accordion title="GOOGLE_CALENDAR_SEARCH_OTHER_CONTACTS">
**설명:** 기타 연락처를 검색합니다.
**파라미터:**
- `query` (string, 선택): 연락처를 검색할 검색 쿼리.
</Accordion>
<Accordion title="GOOGLE_CALENDAR_GET_AVAILABILITY">
**설명:** 캘린더의 가용성 정보를 가져옵니다.
**파라미터:**
- `timeMin` (string, 필수): 기간의 시작. ISO 형식.
- `timeMax` (string, 필수): 기간의 끝. ISO 형식.
- `timeZone` (string, 선택): 응답에 사용되는 시간대. 선택 사항입니다. 기본값은 UTC입니다.
- `items` (array, 선택): 조회할 캘린더 및/또는 그룹 목록. 비워두면 사용자 기본 캘린더가 기본값입니다.
```json
[
{
"id": "calendar_id_1"
},
{
"id": "calendar_id_2"
}
]
```
</Accordion>
</AccordionGroup>
## 사용 예시
### 기본 캘린더 에이전트 설정
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Google Calendar tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with Google Calendar capabilities
calendar_agent = Agent(
role="Schedule Manager",
goal="Manage calendar events and scheduling efficiently",
backstory="An AI assistant specialized in calendar management and scheduling coordination.",
tools=[enterprise_tools]
)
# Task to create a meeting
create_meeting_task = Task(
description="Create a team standup meeting for tomorrow at 9 AM with the development team",
agent=calendar_agent,
expected_output="Meeting created successfully with Google Meet link"
)
# Run the task
crew = Crew(
agents=[calendar_agent],
tasks=[create_meeting_task]
)
crew.kickoff()
```
### 특정 캘린더 도구 필터링
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Google Calendar tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["google_calendar_create_event", "google_calendar_list_events", "google_calendar_get_availability"]
)
meeting_coordinator = Agent(
role="Meeting Coordinator",
goal="Coordinate meetings and check availability",
backstory="An AI assistant that focuses on meeting scheduling and availability management.",
tools=enterprise_tools
)
# Task to schedule a meeting with availability check
schedule_meeting = Task(
description="Check availability for next week and schedule a project review meeting with stakeholders",
agent=meeting_coordinator,
expected_output="Meeting scheduled after checking availability of all participants"
)
crew = Crew(
agents=[meeting_coordinator],
tasks=[schedule_meeting]
)
crew.kickoff()
```
### 이벤트 관리 및 업데이트
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
event_manager = Agent(
role="Event Manager",
goal="Manage and update calendar events efficiently",
backstory="An experienced event manager who handles event logistics and updates.",
tools=[enterprise_tools]
)
# Task to manage event updates
event_management = Task(
description="""
1. List all events for this week
2. Update any events that need location changes to include video conference links
3. Send calendar invitations to new team members for recurring meetings
""",
agent=event_manager,
expected_output="Weekly events updated with proper locations and new attendees added"
)
crew = Crew(
agents=[event_manager],
tasks=[event_management]
)
crew.kickoff()
```
### 연락처 및 가용성 관리
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
availability_coordinator = Agent(
role="Availability Coordinator",
goal="Coordinate availability and manage contacts for scheduling",
backstory="An AI assistant that specializes in availability management and contact coordination.",
tools=[enterprise_tools]
)
# Task to coordinate availability
availability_task = Task(
description="""
1. 엔지니어링 부서의 연락처를 검색합니다.
2. 다음 주 금요일 오후에 모든 엔지니어의 가용성을 확인합니다.
3. 가장 먼저 가능한 2시간 슬롯에 팀 미팅을 만듭니다.
4. Google Meet 링크를 포함하고 초대장을 발송합니다.
""",
agent=availability_coordinator,
expected_output="가용성에 따라 팀 미팅이 일정 예약되고 모든 엔지니어가 초대됨"
)
crew = Crew(
agents=[availability_coordinator],
tasks=[availability_task]
)
crew.kickoff()
```
### 자동화된 일정 관리 워크플로우
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
scheduling_automator = Agent(
role="Scheduling Automator",
goal="Automate scheduling workflows and calendar management",
backstory="An AI assistant that automates complex scheduling scenarios and calendar workflows.",
tools=[enterprise_tools]
)
# Complex scheduling automation task
automation_task = Task(
description="""
1. 앞으로 2주간 예정된 모든 이벤트를 나열합니다.
2. 일정 충돌 또는 연이어 배정된 미팅을 식별합니다.
3. 가용 시간을 확인하여 최적의 미팅 시간을 제안합니다.
4. 필요한 경우 미팅 사이에 버퍼 시간을 생성합니다.
5. 아젠다 항목 및 미팅 링크가 포함된 이벤트 설명을 업데이트합니다.
""",
agent=scheduling_automator,
expected_output="일정 충돌이 해결되고 버퍼 타임 및 미팅 세부 정보가 업데이트된 최적화된 캘린더"
)
crew = Crew(
agents=[scheduling_automator],
tasks=[automation_task]
)
crew.kickoff()
```
## 문제 해결
### 일반적인 문제
**인증 오류**
- Google 계정에 캘린더 접근에 필요한 권한이 있는지 확인하세요
- OAuth 연결에 Google Calendar API에 필요한 모든 범위가 포함되어 있는지 확인하세요
- 캘린더 공유 설정이 필요한 접근 수준을 허용하는지 확인하세요
**이벤트 생성 문제**
- 시간 형식이 올바른지(ISO8601 또는 Unix 타임스탬프) 확인하세요
- 참석자 이메일 주소가 올바르게 형식화되어 있는지 확인하세요
- 대상 캘린더가 존재하며 접근 가능한지 확인하세요
- 올바른 시간대가 지정되어 있는지 확인하세요
**가용성 및 시간 충돌**
- 가용성 확인 시 시간 범위에 올바른 ISO 형식을 사용하세요
- 모든 작업에서 시간대가 일관성 있는지 확인하세요
- 여러 캘린더를 확인할 때 캘린더 ID가 올바른지 확인하세요
**연락처 및 사용자 검색**
- 검색 쿼리가 올바르게 형식화되어 있는지 확인하세요
- 디렉터리 접근 권한이 부여되었는지 확인하세요
- 연락처 정보가 최신이며 접근 가능한지 확인하세요
**이벤트 업데이트 및 삭제**
- 이벤트 ID가 올바르며 이벤트가 존재하는지 확인하세요
- 이벤트를 편집할 수 있는 권한이 있는지 확인하세요
- 캘린더 소유권이 수정 작업을 허용하는지 확인하세요
### 도움 받기
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
Google Calendar 연동 설정 또는 문제 해결에 대한 지원이 필요하면 저희 지원팀에 문의하세요.
</Card>

View File

@@ -0,0 +1,321 @@
---
title: Google Sheets 연동
description: "CrewAI를 위한 Google Sheets 연동을 통해 스프레드시트 데이터 동기화."
icon: "google"
---
## 개요
에이전트가 Google Sheets를 통해 스프레드시트 데이터를 관리할 수 있도록 합니다. 행을 읽고, 새 항목을 생성하며, 기존 데이터를 업데이트하고, AI 기반 자동화를 통해 데이터 관리 워크플로우를 간소화하세요. 데이터 추적, 보고, 협업 데이터 관리에 최적화되어 있습니다.
## 사전 준비 사항
Google Sheets 통합을 사용하기 전에 다음을 확인하세요:
- 활성 구독이 되어 있는 [CrewAI Enterprise](https://app.crewai.com) 계정
- Google Sheets에 액세스할 수 있는 Google 계정
- [통합 페이지](https://app.crewai.com/crewai_plus/connectors)를 통해 Google 계정 연결
- 데이터 작업을 위한 올바른 열 헤더가 있는 스프레드시트
## Google Sheets 통합 설정
### 1. Google 계정 연결하기
1. [CrewAI Enterprise Integrations](https://app.crewai.com/crewai_plus/connectors)로 이동합니다.
2. 인증 통합 섹션에서 **Google Sheets**를 찾습니다.
3. **Connect**를 클릭하고 OAuth 흐름을 완료합니다.
4. 스프레드시트 접근에 필요한 권한을 허용합니다.
5. [Account Settings](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
### 2. 필수 패키지 설치
```bash
uv add crewai-tools
```
## 사용 가능한 작업
<AccordionGroup>
<Accordion title="GOOGLE_SHEETS_GET_ROW">
**설명:** Google Sheets 스프레드시트에서 행을 가져옵니다.
**매개변수:**
- `spreadsheetId` (string, 필수): 스프레드시트 - Connect Portal Workflow Settings를 사용하여 사용자가 스프레드시트를 선택할 수 있도록 합니다. 선택한 스프레드시트의 첫 번째 워크시트를 기본값으로 사용합니다.
- `limit` (string, 선택): 행 제한 - 반환할 최대 행 수를 제한합니다.
</Accordion>
<Accordion title="GOOGLE_SHEETS_CREATE_ROW">
**설명:** Google Sheets 스프레드시트에 새로운 행을 만듭니다.
**매개변수:**
- `spreadsheetId` (string, 필수): 스프레드시트 - Connect Portal Workflow Settings를 사용하여 사용자가 스프레드시트를 선택할 수 있도록 합니다. 선택한 스프레드시트의 첫 번째 워크시트를 기본값으로 사용합니다.
- `worksheet` (string, 필수): 워크시트 - 워크시트에는 반드시 열 헤더가 있어야 합니다.
- `additionalFields` (object, 필수): 필드 - 추가할 행의 필드를 열 이름을 key로 하는 객체로 포함합니다. Connect Portal Workflow Settings를 사용하여 사용자가 열 매핑을 선택할 수 있도록 합니다.
```json
{
"columnName1": "columnValue1",
"columnName2": "columnValue2",
"columnName3": "columnValue3",
"columnName4": "columnValue4"
}
```
</Accordion>
<Accordion title="GOOGLE_SHEETS_UPDATE_ROW">
**설명:** Google Sheets 스프레드시트의 기존 행을 업데이트합니다.
**매개변수:**
- `spreadsheetId` (string, 필수): 스프레드시트 - Connect Portal Workflow Settings를 사용하여 사용자가 스프레드시트를 선택할 수 있도록 합니다. 선택한 스프레드시트의 첫 번째 워크시트를 기본값으로 사용합니다.
- `worksheet` (string, 필수): 워크시트 - 워크시트에는 반드시 열 헤더가 있어야 합니다.
- `filterFormula` (object, 선택): 필터 - 업데이트할 행을 식별하기 위한 단일 조건의 AND 그룹으로 이루어진 OR의 형태(분리 정규형)로 작성합니다.
```json
{
"operator": "OR",
"conditions": [
{
"operator": "AND",
"conditions": [
{
"field": "status",
"operator": "$stringExactlyMatches",
"value": "pending"
}
]
}
]
}
```
사용 가능한 연산자: `$stringContains`, `$stringDoesNotContain`, `$stringExactlyMatches`, `$stringDoesNotExactlyMatch`, `$stringStartsWith`, `$stringDoesNotStartWith`, `$stringEndsWith`, `$stringDoesNotEndWith`, `$numberGreaterThan`, `$numberLessThan`, `$numberEquals`, `$numberDoesNotEqual`, `$dateTimeAfter`, `$dateTimeBefore`, `$dateTimeEquals`, `$booleanTrue`, `$booleanFalse`, `$exists`, `$doesNotExist`
- `additionalFields` (object, 필수): 필드 - 업데이트할 필드를 열 이름을 key로 하는 객체로 포함합니다. Connect Portal Workflow Settings를 사용하여 사용자가 열 매핑을 선택할 수 있도록 합니다.
```json
{
"columnName1": "newValue1",
"columnName2": "newValue2",
"columnName3": "newValue3",
"columnName4": "newValue4"
}
```
</Accordion>
</AccordionGroup>
## 사용 예시
### 기본 Google Sheets 에이전트 설정
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Google Sheets tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with Google Sheets capabilities
sheets_agent = Agent(
role="Data Manager",
goal="Manage spreadsheet data and track information efficiently",
backstory="An AI assistant specialized in data management and spreadsheet operations.",
tools=[enterprise_tools]
)
# Task to add new data to a spreadsheet
data_entry_task = Task(
description="Add a new customer record to the customer database spreadsheet with name, email, and signup date",
agent=sheets_agent,
expected_output="New customer record added successfully to the spreadsheet"
)
# Run the task
crew = Crew(
agents=[sheets_agent],
tasks=[data_entry_task]
)
crew.kickoff()
```
### 특정 Google Sheets 도구 필터링
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Google Sheets tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["google_sheets_get_row", "google_sheets_create_row"]
)
data_collector = Agent(
role="Data Collector",
goal="Collect and organize data in spreadsheets",
backstory="An AI assistant that focuses on data collection and organization.",
tools=enterprise_tools
)
# Task to collect and organize data
data_collection = Task(
description="Retrieve current inventory data and add new product entries to the inventory spreadsheet",
agent=data_collector,
expected_output="Inventory data retrieved and new products added successfully"
)
crew = Crew(
agents=[data_collector],
tasks=[data_collection]
)
crew.kickoff()
```
### 데이터 분석 및 보고
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
data_analyst = Agent(
role="Data Analyst",
goal="Analyze spreadsheet data and generate insights",
backstory="An experienced data analyst who extracts insights from spreadsheet data.",
tools=[enterprise_tools]
)
# Task to analyze data and create reports
analysis_task = Task(
description="""
1. Retrieve all sales data from the current month's spreadsheet
2. Analyze the data for trends and patterns
3. Create a summary report in a new row with key metrics
""",
agent=data_analyst,
expected_output="Sales data analyzed and summary report created with key insights"
)
crew = Crew(
agents=[data_analyst],
tasks=[analysis_task]
)
crew.kickoff()
```
### 자동화된 데이터 업데이트
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
data_updater = Agent(
role="Data Updater",
goal="Automatically update and maintain spreadsheet data",
backstory="An AI assistant that maintains data accuracy and updates records automatically.",
tools=[enterprise_tools]
)
# Task to update data based on conditions
update_task = Task(
description="""
1. 주문 스프레드시트에서 모든 보류 중인 주문을 찾으세요
2. 해당 주문의 상태를 'processing'으로 업데이트하세요
3. 상태가 업데이트된 시점의 타임스탬프를 추가하세요
4. 변경 사항을 별도의 추적 시트에 기록하세요
""",
agent=data_updater,
expected_output="모든 보류 중인 주문이 processing 상태로 업데이트되고, 타임스탬프가 기록됨"
)
crew = Crew(
agents=[data_updater],
tasks=[update_task]
)
crew.kickoff()
```
### 복잡한 데이터 관리 워크플로우
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
workflow_manager = Agent(
role="Data Workflow Manager",
goal="Manage complex data workflows across multiple spreadsheets",
backstory="An AI assistant that orchestrates complex data operations across multiple spreadsheets.",
tools=[enterprise_tools]
)
# Complex workflow task
workflow_task = Task(
description="""
1. 메인 고객 스프레드시트에서 모든 고객 데이터를 가져옵니다
2. 활성 고객에 대한 월별 요약 항목을 생성합니다
3. 최근 30일간의 활동을 기반으로 고객 상태를 업데이트합니다
4. 고객 지표가 포함된 월간 보고서를 생성합니다
5. 비활성 고객 기록을 별도의 시트로 보관합니다
""",
agent=workflow_manager,
expected_output="월간 고객 워크플로우가 완료되어 상태가 업데이트되고 보고서가 생성됨"
)
crew = Crew(
agents=[workflow_manager],
tasks=[workflow_task]
)
crew.kickoff()
```
## 문제 해결
### 일반적인 문제
**권한 오류**
- Google 계정이 대상 스프레드시트에 대해 편집 권한이 있는지 확인하세요
- OAuth 연결에 Google Sheets API에 필요한 scope가 포함되어 있는지 검증하세요
- 스프레드시트가 인증된 계정과 공유되어 있는지 확인하세요
**스프레드시트 구조 문제**
- 행을 생성하거나 업데이트하기 전에 워크시트에 올바른 열 헤더가 있는지 확인하세요
- `additionalFields`의 열 이름이 실제 열 헤더와 일치하는지 검증하세요
- 지정된 워크시트가 스프레드시트에 존재하는지 확인하세요
**데이터 유형 및 형식 문제**
- 데이터 값이 각 열에 대해 예상되는 형식과 일치하는지 확인하세요
- 날짜 열에는 올바른 날짜 형식(ISO 형식 권장)을 사용하세요
- 숫자 열에 입력되는 값이 적절한 형식인지 검증하세요
**필터 수식 문제**
- 필터 수식이 부정 정규형(disjunctive normal form)의 올바른 JSON 구조를 따르는지 확인하세요
- 실제 열 헤더와 일치하는 유효한 필드명을 사용하세요
- 복잡한 다중 조건 쿼리를 작성하기 전에 간단한 필터로 테스트하세요
- 연산자 유형이 열의 데이터 유형과 일치하는지 검증하세요
**행 제한 및 성능**
- `GOOGLE_SHEETS_GET_ROW`를 사용할 때 행 제한에 유의하세요
- 대용량 데이터셋의 경우 페이지네이션을 고려하세요
- 처리되는 데이터의 양을 줄이기 위해 구체적인 필터를 사용하세요
**업데이트 작업**
- 필터 조건이 업데이트하려는 행을 정확하게 식별하는지 확인하세요
- 대규모 업데이트 전에 작은 데이터셋으로 필터 조건을 테스트하세요
- 모든 필수 필드가 업데이트 작업에 포함되어 있는지 검증하세요
### 도움 받기
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
Google Sheets 통합 설정 또는 문제 해결에 대한 지원이 필요하시면 저희 지원팀으로 문의해 주세요.
</Card>

View File

@@ -0,0 +1,579 @@
---
title: "HubSpot 연동"
description: "CrewAI로 HubSpot에서 회사 및 연락처를 관리하세요."
icon: "briefcase"
---
## 개요
에이전트가 HubSpot 내에서 회사 및 연락처를 관리할 수 있도록 지원합니다. 새로운 레코드를 생성하고 AI 기반 자동화로 CRM 프로세스를 효율화하세요.
## 사전 준비 사항
HubSpot 통합을 사용하기 전에 다음을 확인하세요.
- 활성 구독이 있는 [CrewAI Enterprise](https://app.crewai.com) 계정
- 적절한 권한이 있는 HubSpot 계정
- [통합 페이지](https://app.crewai.com/crewai_plus/connectors)를 통해 HubSpot 계정이 연결되어 있음
## HubSpot 통합 설정
### 1. HubSpot 계정 연결하기
1. [CrewAI Enterprise Integrations](https://app.crewai.com/crewai_plus/connectors)로 이동합니다.
2. 인증 통합 섹션에서 **HubSpot**을 찾습니다.
3. **Connect**를 클릭하고 OAuth 플로우를 완료합니다.
4. 회사 및 연락처 관리를 위한 필요한 권한을 부여합니다.
5. [계정 설정](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
### 2. 필수 패키지 설치
```bash
uv add crewai-tools
```
## 사용 가능한 액션
<AccordionGroup>
<Accordion title="HUBSPOT_CREATE_RECORD_COMPANIES">
**설명:** HubSpot에서 새로운 회사 레코드를 생성합니다.
**파라미터:**
- `name` (string, 필수): 회사명.
- `domain` (string, 선택): 회사 도메인명.
- `industry` (string, 선택): 산업군. HubSpot에서 미리 정의된 값 중 하나여야 합니다.
- `phone` (string, 선택): 전화번호.
- `hubspot_owner_id` (string, 선택): 회사 소유자 ID.
- `type` (string, 선택): 회사 유형. 사용 가능한 값: `PROSPECT`, `PARTNER`, `RESELLER`, `VENDOR`, `OTHER`.
- `city` (string, 선택): 도시.
- `state` (string, 선택): 주/지역.
- `zip` (string, 선택): 우편번호.
- `numberofemployees` (number, 선택): 직원 수.
- `annualrevenue` (number, 선택): 연간 매출.
- `timezone` (string, 선택): 시간대.
- `description` (string, 선택): 설명.
- `linkedin_company_page` (string, 선택): LinkedIn 회사 페이지 URL.
- `company_email` (string, 선택): 회사 이메일.
- `first_name` (string, 선택): 회사 연락처의 이름.
- `last_name` (string, 선택): 회사 연락처의 성.
- `about_us` (string, 선택): 회사 소개.
- `hs_csm_sentiment` (string, 선택): CSM 만족도. 사용 가능한 값: `at_risk`, `neutral`, `healthy`.
- `closedate` (string, 선택): 마감일.
- `hs_keywords` (string, 선택): 회사 키워드. 미리 정의된 값 중 하나여야 합니다.
- `country` (string, 선택): 국가/지역.
- `hs_country_code` (string, 선택): 국가/지역 코드.
- `hs_employee_range` (string, 선택): 직원 범위.
- `facebook_company_page` (string, 선택): Facebook 회사 페이지 URL.
- `facebookfans` (number, 선택): Facebook 팬 수.
- `hs_gps_coordinates` (string, 선택): GPS 좌표.
- `hs_gps_error` (string, 선택): GPS 오류.
- `googleplus_page` (string, 선택): Google Plus 페이지 URL.
- `owneremail` (string, 선택): HubSpot 소유자 이메일.
- `ownername` (string, 선택): HubSpot 소유자 이름.
- `hs_ideal_customer_profile` (string, 선택): 이상적인 고객 프로필 티어. 사용 가능한 값: `tier_1`, `tier_2`, `tier_3`.
- `hs_industry_group` (string, 선택): 산업 그룹.
- `is_public` (boolean, 선택): 공개 여부.
- `hs_last_metered_enrichment_timestamp` (string, 선택): 마지막 enrichment 타임스탬프.
- `hs_lead_status` (string, 선택): 리드 상태. 사용 가능한 값: `NEW`, `OPEN`, `IN_PROGRESS`, `OPEN_DEAL`, `UNQUALIFIED`, `ATTEMPTED_TO_CONTACT`, `CONNECTED`, `BAD_TIMING`.
- `lifecyclestage` (string, 선택): 라이프사이클 단계. 사용 가능한 값: `subscriber`, `lead`, `marketingqualifiedlead`, `salesqualifiedlead`, `opportunity`, `customer`, `evangelist`, `other`.
- `linkedinbio` (string, 선택): LinkedIn 바이오.
- `hs_linkedin_handle` (string, 선택): LinkedIn 핸들.
- `hs_live_enrichment_deadline` (string, 선택): 라이브 enrichment 기한.
- `hs_logo_url` (string, 선택): 로고 URL.
- `hs_analytics_source` (string, 선택): 원래 유입 경로.
- `hs_pinned_engagement_id` (number, 선택): 고정된 참여 ID.
- `hs_quick_context` (string, 선택): 간략한 컨텍스트.
- `hs_revenue_range` (string, 선택): 매출 범위.
- `hs_state_code` (string, 선택): 주/지역 코드.
- `address` (string, 선택): 거리 주소.
- `address2` (string, 선택): 거리 주소 2.
- `hs_is_target_account` (boolean, 선택): 타깃 계정 여부.
- `hs_target_account` (string, 선택): 타깃 계정 티어. 사용 가능한 값: `tier_1`, `tier_2`, `tier_3`.
- `hs_target_account_recommendation_snooze_time` (string, 선택): 타깃 계정 추천 일시중지 시간.
- `hs_target_account_recommendation_state` (string, 선택): 타깃 계정 추천 상태. 사용 가능한 값: `DISMISSED`, `NONE`, `SNOOZED`.
- `total_money_raised` (string, 선택): 총 조달 금액.
- `twitterbio` (string, 선택): 트위터 바이오.
- `twitterfollowers` (number, 선택): 트위터 팔로워 수.
- `twitterhandle` (string, 선택): 트위터 핸들.
- `web_technologies` (string, 선택): 사용한 웹 기술. 미리 정의된 값 중 하나여야 합니다.
- `website` (string, 선택): 웹사이트 URL.
- `founded_year` (string, 선택): 설립 연도.
</Accordion>
<Accordion title="HUBSPOT_CREATE_RECORD_CONTACTS">
**설명:** HubSpot에서 새로운 연락처 레코드를 생성합니다.
**파라미터:**
- `email` (string, 필수): 연락처 이메일 주소.
- `firstname` (string, 선택): 이름.
- `lastname` (string, 선택): 성.
- `phone` (string, 선택): 전화번호.
- `hubspot_owner_id` (string, 선택): 연락처 소유자.
- `lifecyclestage` (string, 선택): 라이프사이클 단계. 사용 가능한 값: `subscriber`, `lead`, `marketingqualifiedlead`, `salesqualifiedlead`, `opportunity`, `customer`, `evangelist`, `other`.
- `hs_lead_status` (string, 선택): 리드 상태. 사용 가능한 값: `NEW`, `OPEN`, `IN_PROGRESS`, `OPEN_DEAL`, `UNQUALIFIED`, `ATTEMPTED_TO_CONTACT`, `CONNECTED`, `BAD_TIMING`.
- `annualrevenue` (string, 선택): 연간 매출.
- `hs_buying_role` (string, 선택): 구매 역할.
- `cc_emails` (string, 선택): 참조(CC) 이메일.
- `ch_customer_id` (string, 선택): Chargify 고객 ID.
- `ch_customer_reference` (string, 선택): Chargify 고객 참조.
- `chargify_sites` (string, 선택): Chargify 사이트(들).
- `city` (string, 선택): 도시.
- `hs_facebook_ad_clicked` (boolean, 선택): Facebook 광고 클릭 여부.
- `hs_linkedin_ad_clicked` (string, 선택): LinkedIn 광고 클릭 여부.
- `hs_clicked_linkedin_ad` (string, 선택): LinkedIn 광고 클릭 여부.
- `closedate` (string, 선택): 마감일.
- `company` (string, 선택): 회사명.
- `company_size` (string, 선택): 회사 규모.
- `country` (string, 선택): 국가/지역.
- `hs_country_region_code` (string, 선택): 국가/지역 코드.
- `date_of_birth` (string, 선택): 생년월일.
- `degree` (string, 선택): 학위.
- `hs_email_customer_quarantined_reason` (string, 선택): 이메일 주소 격리 사유.
- `hs_role` (string, 선택): 고용 역할. 미리 정의된 값 중 하나여야 합니다.
- `hs_seniority` (string, 선택): 고용 직급. 미리 정의된 값 중 하나여야 합니다.
- `hs_sub_role` (string, 선택): 고용 하위 역할. 미리 정의된 값 중 하나여야 합니다.
- `hs_employment_change_detected_date` (string, 선택): 고용 변경 감지 날짜.
- `hs_enriched_email_bounce_detected` (boolean, 선택): 향상된 이메일 바운스 감지됨.
- `hs_facebookid` (string, 선택): Facebook ID.
- `hs_facebook_click_id` (string, 선택): Facebook 클릭 ID.
- `fax` (string, 선택): 팩스번호.
- `field_of_study` (string, 선택): 전공.
- `followercount` (number, 선택): 팔로워 수.
- `gender` (string, 선택): 성별.
- `hs_google_click_id` (string, 선택): Google 광고 클릭 ID.
- `graduation_date` (string, 선택): 졸업 날짜.
- `owneremail` (string, 선택): HubSpot 소유자 이메일(레거시).
- `ownername` (string, 선택): HubSpot 소유자 이름(레거시).
- `industry` (string, 선택): 산업군.
- `hs_inferred_language_codes` (string, 선택): 추정 언어 코드. 미리 정의된 값 중 하나여야 합니다.
- `jobtitle` (string, 선택): 직책.
- `hs_job_change_detected_date` (string, 선택): 직장 변경 감지 날짜.
- `job_function` (string, 선택): 직무.
- `hs_journey_stage` (string, 선택): 여정 단계. 미리 정의된 값 중 하나여야 합니다.
- `kloutscoregeneral` (number, 선택): Klout 점수.
- `hs_last_metered_enrichment_timestamp` (string, 선택): 마지막 enrichment 타임스탬프.
- `hs_latest_source` (string, 선택): 최신 유입 경로.
- `hs_latest_source_timestamp` (string, 선택): 최신 유입 경로 날짜.
- `hs_legal_basis` (string, 선택): 연락처 데이터 처리를 위한 법적 근거.
- `linkedinbio` (string, 선택): LinkedIn 바이오.
- `linkedinconnections` (number, 선택): LinkedIn 연결 수.
- `hs_linkedin_url` (string, 선택): LinkedIn URL.
- `hs_linkedinid` (string, 선택): LinkedIn ID.
- `hs_live_enrichment_deadline` (string, 선택): 라이브 enrichment 기한.
- `marital_status` (string, 선택): 결혼 상태.
- `hs_content_membership_email` (string, 선택): 멤버 이메일.
- `hs_content_membership_notes` (string, 선택): 멤버십 노트.
- `message` (string, 선택): 메시지.
- `military_status` (string, 선택): 군복무 상태.
- `mobilephone` (string, 선택): 휴대전화 번호.
- `numemployees` (string, 선택): 직원 수.
- `hs_analytics_source` (string, 선택): 원래 유입 경로.
- `photo` (string, 선택): 사진.
- `hs_pinned_engagement_id` (number, 선택): 고정된 참여 ID.
- `zip` (string, 선택): 우편번호.
- `hs_language` (string, 선택): 선호 언어. 미리 정의된 값 중 하나여야 합니다.
- `associatedcompanyid` (number, 선택): 기본 연결된 회사 ID.
- `hs_email_optout_survey_reason` (string, 선택): 이메일 수신 거부 사유.
- `relationship_status` (string, 선택): 관계 상태.
- `hs_returning_to_office_detected_date` (string, 선택): 사무실 복귀 감지 날짜.
- `salutation` (string, 선택): 호칭.
- `school` (string, 선택): 학교.
- `seniority` (string, 선택): 직급.
- `hs_feedback_show_nps_web_survey` (boolean, 선택): NPS 웹 설문조사를 표시할지 여부.
- `start_date` (string, 선택): 시작일.
- `state` (string, 선택): 주/지역.
- `hs_state_code` (string, 선택): 주/지역 코드.
- `hs_content_membership_status` (string, 선택): 상태.
- `address` (string, 선택): 거리 주소.
- `tax_exempt` (string, 선택): 세금 면제.
- `hs_timezone` (string, 선택): 시간대. 미리 정의된 값 중 하나여야 합니다.
- `twitterbio` (string, 선택): 트위터 바이오.
- `hs_twitterid` (string, 선택): 트위터 ID.
- `twitterprofilephoto` (string, 선택): 트위터 프로필 사진.
- `twitterhandle` (string, 선택): 트위터 사용자명.
- `vat_number` (string, 선택): 부가가치세 번호.
- `ch_verified` (string, 선택): ACH/eCheck 결제 인증됨.
- `website` (string, 선택): 웹사이트 URL.
- `hs_whatsapp_phone_number` (string, 선택): WhatsApp 전화번호.
- `work_email` (string, 선택): 업무용 이메일.
- `hs_googleplusid` (string, 선택): googleplus ID.
</Accordion>
<Accordion title="HUBSPOT_CREATE_RECORD_DEALS">
**설명:** HubSpot에서 새로운 거래(deal) 레코드를 생성합니다.
**파라미터:**
- `dealname` (string, 필수): 거래 이름.
- `amount` (number, 선택): 거래 금액.
- `dealstage` (string, 선택): 거래의 파이프라인 단계.
- `pipeline` (string, 선택): 거래가 속한 파이프라인.
- `closedate` (string, 선택): 예상 마감일.
- `hubspot_owner_id` (string, 선택): 거래 소유자.
- `dealtype` (string, 선택): 거래 유형. 사용 가능한 값: `newbusiness`, `existingbusiness`.
- `description` (string, 선택): 거래 설명.
- `hs_priority` (string, 선택): 거래 우선순위. 사용 가능한 값: `low`, `medium`, `high`.
</Accordion>
<Accordion title="HUBSPOT_CREATE_RECORD_ENGAGEMENTS">
**설명:** HubSpot에서 새로운 참여(예: 노트, 이메일, 통화, 미팅, 작업)를 생성합니다.
**파라미터:**
- `engagementType` (string, 필수): 참여 유형. 사용 가능한 값: `NOTE`, `EMAIL`, `CALL`, `MEETING`, `TASK`.
- `hubspot_owner_id` (string, 선택): 이 활동이 할당된 사용자.
- `hs_timestamp` (string, 선택): 활동 날짜 및 시간.
- `hs_note_body` (string, 선택): 노트 본문. (`NOTE`에서 사용)
- `hs_task_subject` (string, 선택): 작업 제목. (`TASK`에서 사용)
- `hs_task_body` (string, 선택): 작업 노트. (`TASK`에서 사용)
- `hs_task_status` (string, 선택): 작업 상태. (`TASK`에서 사용)
- `hs_meeting_title` (string, 선택): 미팅 제목. (`MEETING`에서 사용)
- `hs_meeting_body` (string, 선택): 미팅 설명. (`MEETING`에서 사용)
- `hs_meeting_start_time` (string, 선택): 미팅 시작 시간. (`MEETING`에서 사용)
- `hs_meeting_end_time` (string, 선택): 미팅 종료 시간. (`MEETING`에서 사용)
</Accordion>
<Accordion title="HUBSPOT_UPDATE_RECORD_COMPANIES">
**설명:** HubSpot에서 기존 회사 레코드를 업데이트합니다.
**파라미터:**
- `recordId` (string, 필수): 업데이트할 회사의 ID.
- `name` (string, 선택): 회사명.
- `domain` (string, 선택): 회사 도메인명.
- `industry` (string, 선택): 산업군.
- `phone` (string, 선택): 전화번호.
- `city` (string, 선택): 도시.
- `state` (string, 선택): 주/지역.
- `zip` (string, 선택): 우편번호.
- `numberofemployees` (number, 선택): 직원 수.
- `annualrevenue` (number, 선택): 연간 매출.
- `description` (string, 선택): 설명.
</Accordion>
<Accordion title="HUBSPOT_CREATE_RECORD_ANY">
**설명:** HubSpot에서 지정된 오브젝트 타입의 레코드를 생성합니다.
**파라미터:**
- `recordType` (string, 필수): 커스텀 오브젝트의 오브젝트 타입 ID.
- 추가 파라미터는 커스텀 오브젝트의 스키마에 따라 다릅니다.
</Accordion>
<Accordion title="HUBSPOT_UPDATE_RECORD_CONTACTS">
**설명:** HubSpot에서 기존 연락처 레코드를 업데이트합니다.
**파라미터:**
- `recordId` (string, 필수): 업데이트할 연락처의 ID.
- `firstname` (string, 선택): 이름.
- `lastname` (string, 선택): 성.
- `email` (string, 선택): 이메일 주소.
- `phone` (string, 선택): 전화번호.
- `company` (string, 선택): 회사명.
- `jobtitle` (string, 선택): 직책.
- `lifecyclestage` (string, 선택): 라이프사이클 단계.
</Accordion>
<Accordion title="HUBSPOT_UPDATE_RECORD_DEALS">
**설명:** HubSpot에서 기존 거래 레코드를 업데이트합니다.
**파라미터:**
- `recordId` (string, 필수): 업데이트할 거래의 ID.
- `dealname` (string, 선택): 거래 이름.
- `amount` (number, 선택): 거래 금액.
- `dealstage` (string, 선택): 거래의 파이프라인 단계.
- `pipeline` (string, 선택): 거래가 속한 파이프라인.
- `closedate` (string, 선택): 예상 마감일.
- `dealtype` (string, 선택): 거래 유형.
</Accordion>
<Accordion title="HUBSPOT_UPDATE_RECORD_ENGAGEMENTS">
**설명:** HubSpot에서 기존 참여(engagement)를 업데이트합니다.
**파라미터:**
- `recordId` (string, 필수): 업데이트할 참여의 ID.
- `hs_note_body` (string, 선택): 노트 본문.
- `hs_task_subject` (string, 선택): 작업 제목.
- `hs_task_body` (string, 선택): 작업 노트.
- `hs_task_status` (string, 선택): 작업 상태.
</Accordion>
<Accordion title="HUBSPOT_UPDATE_RECORD_ANY">
**설명:** HubSpot에서 지정된 오브젝트 타입의 레코드를 업데이트합니다.
**파라미터:**
- `recordId` (string, 필수): 업데이트할 레코드의 ID.
- `recordType` (string, 필수): 커스텀 오브젝트의 오브젝트 타입 ID.
- 추가 파라미터는 커스텀 오브젝트의 스키마에 따라 다릅니다.
</Accordion>
<Accordion title="HUBSPOT_GET_RECORDS_COMPANIES">
**설명:** HubSpot에서 회사 레코드 목록을 가져옵니다.
**파라미터:**
- `paginationParameters` (object, 선택): 다음 페이지를 가져오려면 `pageCursor`를 사용하세요.
</Accordion>
<Accordion title="HUBSPOT_GET_RECORDS_CONTACTS">
**설명:** HubSpot에서 연락처 레코드 목록을 가져옵니다.
**파라미터:**
- `paginationParameters` (object, 선택): 다음 페이지를 가져오려면 `pageCursor`를 사용하세요.
</Accordion>
<Accordion title="HUBSPOT_GET_RECORDS_DEALS">
**설명:** HubSpot에서 거래 레코드 목록을 가져옵니다.
**파라미터:**
- `paginationParameters` (object, 선택): 다음 페이지를 가져오려면 `pageCursor`를 사용하세요.
</Accordion>
<Accordion title="HUBSPOT_GET_RECORDS_ENGAGEMENTS">
**설명:** HubSpot에서 참여(engagement) 레코드 목록을 가져옵니다.
**파라미터:**
- `objectName` (string, 필수): 가져올 참여 유형(예: "notes").
- `paginationParameters` (object, 선택): 다음 페이지를 가져오려면 `pageCursor`를 사용하세요.
</Accordion>
<Accordion title="HUBSPOT_GET_RECORDS_ANY">
**설명:** HubSpot에서 지정된 오브젝트 타입의 레코드 목록을 가져옵니다.
**파라미터:**
- `recordType` (string, 필수): 커스텀 오브젝트의 오브젝트 타입 ID.
- `paginationParameters` (object, 선택): 다음 페이지를 가져오려면 `pageCursor`를 사용하세요.
</Accordion>
<Accordion title="HUBSPOT_GET_RECORD_BY_ID_COMPANIES">
**설명:** ID로 단일 회사 레코드를 가져옵니다.
**파라미터:**
- `recordId` (string, 필수): 가져올 회사의 ID.
</Accordion>
<Accordion title="HUBSPOT_GET_RECORD_BY_ID_CONTACTS">
**설명:** ID로 단일 연락처 레코드를 가져옵니다.
**파라미터:**
- `recordId` (string, 필수): 가져올 연락처의 ID.
</Accordion>
<Accordion title="HUBSPOT_GET_RECORD_BY_ID_DEALS">
**설명:** ID로 단일 거래 레코드를 가져옵니다.
**파라미터:**
- `recordId` (string, 필수): 가져올 거래의 ID.
</Accordion>
<Accordion title="HUBSPOT_GET_RECORD_BY_ID_ENGAGEMENTS">
**설명:** ID로 단일 참여(engagement) 레코드를 가져옵니다.
**파라미터:**
- `recordId` (string, 필수): 가져올 참여의 ID.
</Accordion>
<Accordion title="HUBSPOT_GET_RECORD_BY_ID_ANY">
**설명:** 지정된 오브젝트 타입의 단일 레코드를 ID로 가져옵니다.
**파라미터:**
- `recordType` (string, 필수): 커스텀 오브젝트의 오브젝트 타입 ID.
- `recordId` (string, 필수): 가져올 레코드의 ID.
</Accordion>
<Accordion title="HUBSPOT_SEARCH_RECORDS_COMPANIES">
**설명:** 필터 수식을 사용해 HubSpot에서 회사 레코드를 검색합니다.
**파라미터:**
- `filterFormula` (object, 선택): 분리 정규형(OR of ANDs) 필터.
- `paginationParameters` (object, 선택): 다음 페이지를 가져오려면 `pageCursor`를 사용하세요.
</Accordion>
<Accordion title="HUBSPOT_SEARCH_RECORDS_CONTACTS">
**설명:** 필터 수식을 사용해 HubSpot에서 연락처 레코드를 검색합니다.
**파라미터:**
- `filterFormula` (object, 선택): 분리 정규형(OR of ANDs) 필터.
- `paginationParameters` (object, 선택): 다음 페이지를 가져오려면 `pageCursor`를 사용하세요.
</Accordion>
<Accordion title="HUBSPOT_SEARCH_RECORDS_DEALS">
**설명:** 필터 수식을 사용해 HubSpot에서 거래 레코드를 검색합니다.
**파라미터:**
- `filterFormula` (object, 선택): 분리 정규형(OR of ANDs) 필터.
- `paginationParameters` (object, 선택): 다음 페이지를 가져오려면 `pageCursor`를 사용하세요.
</Accordion>
<Accordion title="HUBSPOT_SEARCH_RECORDS_ENGAGEMENTS">
**설명:** 필터 수식을 사용해 HubSpot에서 참여(engagement) 레코드를 검색합니다.
**파라미터:**
- `engagementFilterFormula` (object, 선택): 참여 필터.
- `paginationParameters` (object, 선택): 다음 페이지를 가져오려면 `pageCursor`를 사용하세요.
</Accordion>
<Accordion title="HUBSPOT_SEARCH_RECORDS_ANY">
**설명:** HubSpot에서 지정된 오브젝트 타입의 레코드를 검색합니다.
**파라미터:**
- `recordType` (string, 필수): 검색할 오브젝트 타입 ID.
- `filterFormula` (string, 선택): 적용할 필터 수식.
- `paginationParameters` (object, 선택): 다음 페이지를 가져오려면 `pageCursor`를 사용하세요.
</Accordion>
<Accordion title="HUBSPOT_DELETE_RECORD_COMPANIES">
**설명:** ID로 회사 레코드를 삭제합니다.
**파라미터:**
- `recordId` (string, 필수): 삭제할 회사의 ID.
</Accordion>
<Accordion title="HUBSPOT_DELETE_RECORD_CONTACTS">
**설명:** ID로 연락처 레코드를 삭제합니다.
**파라미터:**
- `recordId` (string, 필수): 삭제할 연락처의 ID.
</Accordion>
<Accordion title="HUBSPOT_DELETE_RECORD_DEALS">
**설명:** ID로 거래 레코드를 삭제합니다.
**파라미터:**
- `recordId` (string, 필수): 삭제할 거래의 ID.
</Accordion>
<Accordion title="HUBSPOT_DELETE_RECORD_ENGAGEMENTS">
**설명:** ID로 참여(engagement) 레코드를 삭제합니다.
**파라미터:**
- `recordId` (string, 필수): 삭제할 참여의 ID.
</Accordion>
<Accordion title="HUBSPOT_DELETE_RECORD_ANY">
**설명:** 지정된 오브젝트 타입의 레코드를 ID로 삭제합니다.
**파라미터:**
- `recordType` (string, 필수): 커스텀 오브젝트의 오브젝트 타입 ID.
- `recordId` (string, 필수): 삭제할 레코드의 ID.
</Accordion>
<Accordion title="HUBSPOT_GET_CONTACTS_BY_LIST_ID">
**설명:** 지정된 리스트 ID로부터 연락처 목록을 가져옵니다.
**파라미터:**
- `listId` (string, 필수): 연락처를 가져올 리스트의 ID.
- `paginationParameters` (object, 선택): 이후 페이지를 위해 `pageCursor` 사용.
</Accordion>
<Accordion title="HUBSPOT_DESCRIBE_ACTION_SCHEMA">
**설명:** 특정 오브젝트 타입 및 작업에 대한 예상 스키마를 가져옵니다.
**파라미터:**
- `recordType` (string, 필수): 오브젝트 타입 ID(예: 'companies').
- `operation` (string, 필수): 작업 유형(예: 'CREATE_RECORD').
</Accordion>
</AccordionGroup>
## 사용 예시
### 기본 HubSpot 에이전트 설정
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (HubSpot tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with HubSpot capabilities
hubspot_agent = Agent(
role="CRM Manager",
goal="Manage company and contact records in HubSpot",
backstory="An AI assistant specialized in CRM management.",
tools=[enterprise_tools]
)
# Task to create a new company
create_company_task = Task(
description="Create a new company in HubSpot with name 'Innovate Corp' and domain 'innovatecorp.com'.",
agent=hubspot_agent,
expected_output="Company created successfully with confirmation"
)
# Run the task
crew = Crew(
agents=[hubspot_agent],
tasks=[create_company_task]
)
crew.kickoff()
```
### 특정 HubSpot 도구 필터링
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only the tool to create contacts
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["hubspot_create_record_contacts"]
)
contact_creator = Agent(
role="Contact Creator",
goal="Create new contacts in HubSpot",
backstory="An AI assistant that focuses on creating new contact entries in the CRM.",
tools=[enterprise_tools]
)
# Task to create a contact
create_contact = Task(
description="Create a new contact for 'John Doe' with email 'john.doe@example.com'.",
agent=contact_creator,
expected_output="Contact created successfully in HubSpot."
)
crew = Crew(
agents=[contact_creator],
tasks=[create_contact]
)
crew.kickoff()
```
### 연락처 관리
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
crm_manager = Agent(
role="CRM Manager",
goal="Manage and organize HubSpot contacts efficiently.",
backstory="An experienced CRM manager who maintains an organized contact database.",
tools=[enterprise_tools]
)
# Task to manage contacts
contact_task = Task(
description="Create a new contact for 'Jane Smith' at 'Global Tech Inc.' with email 'jane.smith@globaltech.com'.",
agent=crm_manager,
expected_output="Contact database updated with the new contact."
)
crew = Crew(
agents=[crm_manager],
tasks=[contact_task]
)
crew.kickoff()
```
### 도움 받기
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
HubSpot 연동 설정 또는 문제 해결에 도움이 필요하시면 지원팀에 문의해 주세요.
</Card>

View File

@@ -0,0 +1,394 @@
---
title: Jira 연동
description: "CrewAI를 위한 Jira 연동을 통한 이슈 추적 및 프로젝트 관리."
icon: "bug"
---
## 개요
에이전트가 Jira를 통해 이슈, 프로젝트, 워크플로우를 관리할 수 있도록 합니다. 이슈를 생성 및 업데이트하고, 프로젝트 진행 상황을 추적하며, 할당 작업을 관리하고, AI 기반 자동화로 프로젝트 관리를 효율화하세요.
## 사전 준비 사항
Jira 통합을 사용하기 전에 다음을 준비하세요:
- 활성 구독이 있는 [CrewAI Enterprise](https://app.crewai.com) 계정
- 적절한 프로젝트 권한이 있는 Jira 계정
- [통합 페이지](https://app.crewai.com/crewai_plus/connectors)를 통해 Jira 계정 연결
## Jira 연동 설정
### 1. Jira 계정 연결하기
1. [CrewAI Enterprise Integrations](https://app.crewai.com/crewai_plus/connectors)로 이동합니다.
2. **Jira**를 인증 통합 섹션에서 찾습니다.
3. **Connect**를 클릭하고 OAuth 절차를 완료합니다.
4. 이슈 및 프로젝트 관리를 위한 필요한 권한을 부여합니다.
5. [Account Settings](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
### 2. 필수 패키지 설치
```bash
uv add crewai-tools
```
## 사용 가능한 작업
<AccordionGroup>
<Accordion title="JIRA_CREATE_ISSUE">
**설명:** Jira에서 이슈를 생성합니다.
**파라미터:**
- `summary` (string, 필수): 요약 - 이슈에 대한 간단한 한 줄 요약입니다. (예시: "프린터가 작동을 멈췄습니다").
- `project` (string, 선택): 프로젝트 - 이슈가 속한 프로젝트입니다. 제공되지 않으면 사용자의 첫 번째 프로젝트로 기본 설정됩니다. 사용자가 프로젝트를 선택할 수 있도록 Connect Portal Workflow Settings를 사용하세요.
- `issueType` (string, 선택): 이슈 유형 - 제공되지 않으면 기본값은 Task입니다.
- `jiraIssueStatus` (string, 선택): 상태 - 제공되지 않으면 프로젝트의 첫 번째 상태가 기본입니다.
- `assignee` (string, 선택): 담당자 - 제공되지 않으면 인증된 사용자로 기본 설정됩니다.
- `descriptionType` (string, 선택): 설명 유형 - 설명 유형을 선택하세요.
- 옵션: `description`, `descriptionJSON`
- `description` (string, 선택): 설명 - 이슈에 대한 자세한 설명입니다. 이 필드는 'descriptionType'이 'description'일 때만 나타납니다.
- `additionalFields` (string, 선택): 추가 필드 - 포함해야 하는 다른 필드를 JSON 형식으로 지정하세요. 사용자가 업데이트할 이슈 필드를 선택할 수 있도록 Connect Portal Workflow Settings를 사용하세요.
```json
{
"customfield_10001": "value"
}
```
</Accordion>
<Accordion title="JIRA_UPDATE_ISSUE">
**설명:** Jira에서 이슈를 업데이트합니다.
**파라미터:**
- `issueKey` (string, 필수): 이슈 키 (예시: "TEST-1234").
- `summary` (string, 선택): 요약 - 이슈에 대한 간단한 한 줄 요약입니다. (예시: "프린터가 작동을 멈췄습니다").
- `issueType` (string, 선택): 이슈 유형 - 사용자가 이슈 유형을 선택할 수 있도록 Connect Portal Workflow Settings를 사용하세요.
- `jiraIssueStatus` (string, 선택): 상태 - 사용자가 상태를 선택할 수 있도록 Connect Portal Workflow Settings를 사용하세요.
- `assignee` (string, 선택): 담당자 - 사용자가 담당자를 선택할 수 있도록 Connect Portal Workflow Settings를 사용하세요.
- `descriptionType` (string, 선택): 설명 유형 - 설명 유형을 선택하세요.
- 옵션: `description`, `descriptionJSON`
- `description` (string, 선택): 설명 - 이슈에 대한 자세한 설명입니다. 이 필드는 'descriptionType'이 'description'일 때만 나타납니다.
- `additionalFields` (string, 선택): 추가 필드 - 포함해야 하는 다른 필드를 JSON 형식으로 지정하세요.
</Accordion>
<Accordion title="JIRA_GET_ISSUE_BY_KEY">
**설명:** Jira에서 키로 이슈를 조회합니다.
**파라미터:**
- `issueKey` (string, 필수): 이슈 키 (예시: "TEST-1234").
</Accordion>
<Accordion title="JIRA_FILTER_ISSUES">
**설명:** 필터를 사용하여 Jira에서 이슈를 검색합니다.
**파라미터:**
- `jqlQuery` (object, 선택): 불리언 합정규형(OR의 AND 그룹)으로 구성된 필터.
```json
{
"operator": "OR",
"conditions": [
{
"operator": "AND",
"conditions": [
{
"field": "status",
"operator": "$stringExactlyMatches",
"value": "Open"
}
]
}
]
}
```
사용 가능한 연산자: `$stringExactlyMatches`, `$stringDoesNotExactlyMatch`, `$stringIsIn`, `$stringIsNotIn`, `$stringContains`, `$stringDoesNotContain`, `$stringGreaterThan`, `$stringLessThan`
- `limit` (string, 선택): 결과 제한 - 반환되는 최대 이슈 수를 제한합니다. 입력하지 않으면 기본값은 10입니다.
</Accordion>
<Accordion title="JIRA_SEARCH_BY_JQL">
**설명:** Jira에서 JQL로 이슈를 검색합니다.
**파라미터:**
- `jqlQuery` (string, 필수): JQL 쿼리 (예시: "project = PROJECT").
- `paginationParameters` (object, 선택): 페이지네이션 결과를 위한 파라미터.
```json
{
"pageCursor": "cursor_string"
}
```
</Accordion>
<Accordion title="JIRA_UPDATE_ISSUE_ANY">
**설명:** Jira에서 임의의 이슈를 업데이트합니다. 이 기능의 속성 스키마를 얻으려면 DESCRIBE_ACTION_SCHEMA를 사용하세요.
**파라미터:** 특정 파라미터 없음 - 예상 스키마를 먼저 확인하려면 JIRA_DESCRIBE_ACTION_SCHEMA를 사용하세요.
</Accordion>
<Accordion title="JIRA_DESCRIBE_ACTION_SCHEMA">
**설명:** 이슈 유형에 대한 예상 스키마를 가져옵니다. 사용하려는 이슈 유형과 일치하는 다른 기능이 없을 경우 먼저 이 기능을 사용하세요.
**파라미터:**
- `issueTypeId` (string, 필수): 이슈 유형 ID.
- `projectKey` (string, 필수): 프로젝트 키.
- `operation` (string, 필수): 작업 유형 값(예: CREATE_ISSUE 또는 UPDATE_ISSUE).
</Accordion>
<Accordion title="JIRA_GET_PROJECTS">
**설명:** Jira에서 프로젝트를 가져옵니다.
**파라미터:**
- `paginationParameters` (object, 선택): 페이지네이션 파라미터.
```json
{
"pageCursor": "cursor_string"
}
```
</Accordion>
<Accordion title="JIRA_GET_ISSUE_TYPES_BY_PROJECT">
**설명:** Jira에서 프로젝트별 이슈 유형을 조회합니다.
**파라미터:**
- `project` (string, 필수): 프로젝트 키.
</Accordion>
<Accordion title="JIRA_GET_ISSUE_TYPES">
**설명:** Jira에서 모든 이슈 유형을 조회합니다.
**파라미터:** 필요 없음.
</Accordion>
<Accordion title="JIRA_GET_ISSUE_STATUS_BY_PROJECT">
**설명:** 주어진 프로젝트의 이슈 상태를 조회합니다.
**파라미터:**
- `project` (string, 필수): 프로젝트 키.
</Accordion>
<Accordion title="JIRA_GET_ALL_ASSIGNEES_BY_PROJECT">
**설명:** 주어진 프로젝트의 담당자 목록을 조회합니다.
**파라미터:**
- `project` (string, 필수): 프로젝트 키.
</Accordion>
</AccordionGroup>
## 사용 예시
### 기본 Jira 에이전트 설정
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Jira tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with Jira capabilities
jira_agent = Agent(
role="Issue Manager",
goal="Manage Jira issues and track project progress efficiently",
backstory="An AI assistant specialized in issue tracking and project management.",
tools=[enterprise_tools]
)
# Task to create a bug report
create_bug_task = Task(
description="Create a bug report for the login functionality with high priority and assign it to the development team",
agent=jira_agent,
expected_output="Bug report created successfully with issue key"
)
# Run the task
crew = Crew(
agents=[jira_agent],
tasks=[create_bug_task]
)
crew.kickoff()
```
### 특정 Jira 도구 필터링
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Jira tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["jira_create_issue", "jira_update_issue", "jira_search_by_jql"]
)
issue_coordinator = Agent(
role="Issue Coordinator",
goal="Create and manage Jira issues efficiently",
backstory="An AI assistant that focuses on issue creation and management.",
tools=enterprise_tools
)
# Task to manage issue workflow
issue_workflow = Task(
description="Create a feature request issue and update the status of related issues",
agent=issue_coordinator,
expected_output="Feature request created and related issues updated"
)
crew = Crew(
agents=[issue_coordinator],
tasks=[issue_workflow]
)
crew.kickoff()
```
### 프로젝트 분석 및 보고
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
project_analyst = Agent(
role="Project Analyst",
goal="Analyze project data and generate insights from Jira",
backstory="An experienced project analyst who extracts insights from project management data.",
tools=[enterprise_tools]
)
# Task to analyze project status
analysis_task = Task(
description="""
1. Get all projects and their issue types
2. Search for all open issues across projects
3. Analyze issue distribution by status and assignee
4. Create a summary report issue with findings
""",
agent=project_analyst,
expected_output="Project analysis completed with summary report created"
)
crew = Crew(
agents=[project_analyst],
tasks=[analysis_task]
)
crew.kickoff()
```
### 자동화된 이슈 관리
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
automation_manager = Agent(
role="Automation Manager",
goal="Automate issue management and workflow processes",
backstory="An AI assistant that automates repetitive issue management tasks.",
tools=[enterprise_tools]
)
# Task to automate issue management
automation_task = Task(
description="""
1. Search for all unassigned issues using JQL
2. Get available assignees for each project
3. Automatically assign issues based on workload and expertise
4. Update issue priorities based on age and type
5. Create weekly sprint planning issues
""",
agent=automation_manager,
expected_output="Issues automatically assigned and sprint planning issues created"
)
crew = Crew(
agents=[automation_manager],
tasks=[automation_task]
)
crew.kickoff()
```
### 고급 스키마 기반 작업
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
schema_specialist = Agent(
role="Schema Specialist",
goal="Handle complex Jira operations using dynamic schemas",
backstory="An AI assistant that can work with dynamic Jira schemas and custom issue types.",
tools=[enterprise_tools]
)
# Task using schema-based operations
schema_task = Task(
description="""
1. 모든 프로젝트와 해당 커스텀 이슈 유형을 가져옵니다
2. 각 커스텀 이슈 유형에 대해, 액션 스키마를 설명합니다
3. 복잡한 커스텀 필드를 위한 동적 스키마를 사용해 이슈를 생성합니다
4. 비즈니스 규칙에 따라 커스텀 필드 값을 사용해 이슈를 업데이트합니다
""",
agent=schema_specialist,
expected_output="동적 스키마를 사용하여 커스텀 이슈가 생성되고 업데이트됨"
)
crew = Crew(
agents=[schema_specialist],
tasks=[schema_task]
)
crew.kickoff()
```
## 문제 해결
### 일반적인 문제
**권한 오류**
- Jira 계정이 대상 프로젝트에 필요한 권한을 가지고 있는지 확인하세요
- OAuth 연결에 Jira API에 필요한 범위가 포함되어 있는지 확인하세요
- 지정된 프로젝트에서 이슈 생성/편집 권한이 있는지 확인하세요
**잘못된 프로젝트 또는 이슈 키**
- 프로젝트 키와 이슈 키가 올바른 형식(예: "PROJ-123")인지 다시 확인하세요
- 프로젝트가 존재하며 계정으로 접근 가능한지 확인하세요
- 이슈 키가 실제로 존재하는 이슈를 참조하는지 확인하세요
**이슈 유형 및 상태 관련 문제**
- 프로젝트에 대한 유효한 이슈 유형을 얻으려면 JIRA_GET_ISSUE_TYPES_BY_PROJECT를 사용하세요
- 유효한 상태를 얻으려면 JIRA_GET_ISSUE_STATUS_BY_PROJECT를 사용하세요
- 이슈 유형과 상태가 대상 프로젝트에 제공되는지 확인하세요
**JQL 쿼리 문제**
- API 호출에 사용하기 전에 Jira의 이슈 검색에서 JQL 쿼리를 테스트하세요
- JQL에 사용된 필드명이 정확하게 철자되어 있고, Jira 인스턴스에 존재하는지 확인하세요
- 복잡한 쿼리에는 올바른 JQL 문법을 사용하세요
**커스텀 필드 및 스키마 문제**
- 복잡한 이슈 유형에 대해 올바른 스키마를 얻으려면 JIRA_DESCRIBE_ACTION_SCHEMA를 사용하세요
- 커스텀 필드 ID가 정확한지 확인하세요 (예: "customfield_10001")
- 커스텀 필드가 대상 프로젝트와 이슈 유형에서 사용 가능한지 확인하세요
**필터 공식 문제**
- 필터 공식이 올바른 JSON 구조(불리언 합의 정규형)를 따르는지 확인하세요
- Jira 구성에 존재하는 유효한 필드명을 사용하세요
- 복잡한 다중 조건 쿼리를 만들기 전에 간단한 필터를 테스트하세요
### 도움 받기
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
Jira 연동 설정 또는 문제 해결에 대한 지원이 필요하시면 저희 지원팀에 문의하십시오.
</Card>

View File

@@ -0,0 +1,453 @@
---
title: Linear 연동
description: "CrewAI를 위한 Linear 연동을 통한 소프트웨어 프로젝트 및 버그 추적."
icon: "list-check"
---
## 개요
에이전트가 Linear를 통해 이슈, 프로젝트, 개발 워크플로우를 관리할 수 있도록 지원합니다. 이슈를 생성 및 업데이트하고, 프로젝트 타임라인을 관리하며, 팀을 조직하고, AI 기반 자동화로 소프트웨어 개발 프로세스를 간소화할 수 있습니다.
## 필수 조건
Linear 통합을 사용하기 전에 다음을 확인하세요:
- 활성 구독이 있는 [CrewAI Enterprise](https://app.crewai.com) 계정
- 적절한 워크스페이스 권한이 있는 Linear 계정
- [통합 페이지](https://app.crewai.com/crewai_plus/connectors)에서 Linear 계정 연결
## 리니어 통합 설정
### 1. Linear 계정 연결하기
1. [CrewAI Enterprise Integrations](https://app.crewai.com/crewai_plus/connectors)로 이동합니다.
2. 인증 통합( Authentication Integrations ) 섹션에서 **Linear**를 찾습니다.
3. **Connect**를 클릭하고 OAuth 절차를 완료합니다.
4. 이슈 및 프로젝트 관리를 위한 필수 권한을 부여합니다.
5. [계정 설정](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
### 2. 필수 패키지 설치
```bash
uv add crewai-tools
```
## 사용 가능한 작업
<AccordionGroup>
<Accordion title="LINEAR_CREATE_ISSUE">
**설명:** Linear에서 새로운 이슈를 생성합니다.
**파라미터:**
- `teamId` (string, 필수): 팀 ID - 이 새로운 이슈의 상위 팀 ID를 지정합니다. Connect Portal Workflow Settings를 사용하여 사용자가 팀 ID를 선택할 수 있도록 하세요. (예: "a70bdf0f-530a-4887-857d-46151b52b47c").
- `title` (string, 필수): 제목 - 이 이슈의 제목을 지정합니다.
- `description` (string, 선택): 설명 - 이 이슈의 설명을 지정합니다.
- `statusId` (string, 선택): 상태 - 이 이슈의 상태를 지정합니다.
- `priority` (string, 선택): 우선순위 - 이 이슈의 우선순위를 정수로 지정합니다.
- `dueDate` (string, 선택): 마감일 - 이 이슈의 마감일을 ISO 8601 형식으로 지정합니다.
- `cycleId` (string, 선택): 사이클 ID - 이 이슈가 속한 사이클을 지정합니다.
- `additionalFields` (object, 선택): 추가 필드.
```json
{
"assigneeId": "a70bdf0f-530a-4887-857d-46151b52b47c",
"labelIds": ["a70bdf0f-530a-4887-857d-46151b52b47c"]
}
```
</Accordion>
<Accordion title="LINEAR_UPDATE_ISSUE">
**설명:** Linear에서 이슈를 업데이트합니다.
**파라미터:**
- `issueId` (string, 필수): 이슈 ID - 업데이트할 이슈의 ID를 지정합니다. (예: "90fbc706-18cd-42c9-ae66-6bd344cc8977").
- `title` (string, 선택): 제목 - 이 이슈의 제목을 지정합니다.
- `description` (string, 선택): 설명 - 이 이슈의 설명을 지정합니다.
- `statusId` (string, 선택): 상태 - 이 이슈의 상태를 지정합니다.
- `priority` (string, 선택): 우선순위 - 이 이슈의 우선순위를 정수로 지정합니다.
- `dueDate` (string, 선택): 마감일 - 이 이슈의 마감일을 ISO 8601 형식으로 지정합니다.
- `cycleId` (string, 선택): 사이클 ID - 이 이슈가 속한 사이클을 지정합니다.
- `additionalFields` (object, 선택): 추가 필드.
```json
{
"assigneeId": "a70bdf0f-530a-4887-857d-46151b52b47c",
"labelIds": ["a70bdf0f-530a-4887-857d-46151b52b47c"]
}
```
</Accordion>
<Accordion title="LINEAR_GET_ISSUE_BY_ID">
**설명:** Linear에서 ID로 이슈를 가져옵니다.
**파라미터:**
- `issueId` (string, 필수): 이슈 ID - 가져올 이슈의 레코드 ID를 지정합니다. (예: "90fbc706-18cd-42c9-ae66-6bd344cc8977").
</Accordion>
<Accordion title="LINEAR_GET_ISSUE_BY_ISSUE_IDENTIFIER">
**설명:** Linear에서 이슈 식별자로 이슈를 가져옵니다.
**파라미터:**
- `externalId` (string, 필수): 외부 ID - 가져올 이슈의 사람이 읽을 수 있는 이슈 식별자를 지정합니다. (예: "ABC-1").
</Accordion>
<Accordion title="LINEAR_SEARCH_ISSUE">
**설명:** Linear에서 이슈를 검색합니다.
**파라미터:**
- `queryTerm` (string, 필수): 검색어 - 찾을 검색어입니다.
- `issueFilterFormula` (object, 선택): 부정합적 정규형(DNF)의 필터 - 단일 조건의 AND 그룹들에 대한 OR.
```json
{
"operator": "OR",
"conditions": [
{
"operator": "AND",
"conditions": [
{
"field": "title",
"operator": "$stringContains",
"value": "bug"
}
]
}
]
}
```
사용 가능한 필드: `title`, `number`, `project`, `createdAt`
사용 가능한 연산자: `$stringExactlyMatches`, `$stringDoesNotExactlyMatch`, `$stringIsIn`, `$stringIsNotIn`, `$stringStartsWith`, `$stringDoesNotStartWith`, `$stringEndsWith`, `$stringDoesNotEndWith`, `$stringContains`, `$stringDoesNotContain`, `$stringGreaterThan`, `$stringLessThan`, `$numberGreaterThanOrEqualTo`, `$numberLessThanOrEqualTo`, `$numberGreaterThan`, `$numberLessThan`, `$dateTimeAfter`, `$dateTimeBefore`
</Accordion>
<Accordion title="LINEAR_DELETE_ISSUE">
**설명:** Linear에서 이슈를 삭제합니다.
**파라미터:**
- `issueId` (string, 필수): 이슈 ID - 삭제할 이슈의 레코드 ID를 지정합니다. (예: "90fbc706-18cd-42c9-ae66-6bd344cc8977").
</Accordion>
<Accordion title="LINEAR_ARCHIVE_ISSUE">
**설명:** Linear에서 이슈를 아카이브합니다.
**파라미터:**
- `issueId` (string, 필수): 이슈 ID - 아카이브할 이슈의 레코드 ID를 지정합니다. (예: "90fbc706-18cd-42c9-ae66-6bd344cc8977").
</Accordion>
<Accordion title="LINEAR_CREATE_SUB_ISSUE">
**설명:** Linear에서 하위 이슈를 생성합니다.
**파라미터:**
- `parentId` (string, 필수): 상위 ID - 이 새로운 이슈의 상위 이슈 ID를 지정합니다.
- `teamId` (string, 필수): 팀 ID - 이 새로운 하위 이슈의 상위 팀 ID를 지정합니다. Connect Portal Workflow Settings를 사용하여 사용자가 팀 ID를 선택할 수 있도록 하세요. (예: "a70bdf0f-530a-4887-857d-46151b52b47c").
- `title` (string, 필수): 제목 - 이 이슈의 제목을 지정합니다.
- `description` (string, 선택): 설명 - 이 이슈의 설명을 지정합니다.
- `additionalFields` (object, 선택): 추가 필드.
```json
{
"lead": "linear_user_id"
}
```
</Accordion>
<Accordion title="LINEAR_CREATE_PROJECT">
**설명:** Linear에서 새로운 프로젝트를 생성합니다.
**파라미터:**
- `teamIds` (object, 필수): 팀 ID - 이 프로젝트와 연관된 팀 ID 혹은 팀 ID의 JSON 배열을 문자열로 지정합니다. Connect Portal User Settings를 사용하여 사용자가 팀 ID를 선택할 수 있도록 하세요.
```json
[
"a70bdf0f-530a-4887-857d-46151b52b47c",
"4ac7..."
]
```
- `projectName` (string, 필수): 프로젝트 이름 - 프로젝트의 이름을 지정합니다. (예: "My Linear Project").
- `description` (string, 선택): 프로젝트 설명 - 프로젝트에 대한 설명을 지정합니다.
- `additionalFields` (object, 선택): 추가 필드.
```json
{
"state": "planned",
"description": ""
}
```
</Accordion>
<Accordion title="LINEAR_UPDATE_PROJECT">
**설명:** Linear에서 프로젝트를 업데이트합니다.
**파라미터:**
- `projectId` (string, 필수): 프로젝트 ID - 업데이트할 프로젝트의 ID를 지정합니다. (예: "a6634484-6061-4ac7-9739-7dc5e52c796b").
- `projectName` (string, 선택): 프로젝트 이름 - 업데이트할 프로젝트의 이름을 지정합니다. (예: "My Linear Project").
- `description` (string, 선택): 프로젝트 설명 - 프로젝트에 대한 설명을 지정합니다.
- `additionalFields` (object, 선택): 추가 필드.
```json
{
"state": "planned",
"description": ""
}
```
</Accordion>
<Accordion title="LINEAR_GET_PROJECT_BY_ID">
**설명:** Linear에서 ID로 프로젝트를 가져옵니다.
**파라미터:**
- `projectId` (string, 필수): 프로젝트 ID - 가져올 프로젝트의 프로젝트 ID를 지정합니다. (예: "a6634484-6061-4ac7-9739-7dc5e52c796b").
</Accordion>
<Accordion title="LINEAR_DELETE_PROJECT">
**설명:** Linear에서 프로젝트를 삭제합니다.
**파라미터:**
- `projectId` (string, 필수): 프로젝트 ID - 삭제할 프로젝트의 프로젝트 ID를 지정합니다. (예: "a6634484-6061-4ac7-9739-7dc5e52c796b").
</Accordion>
<Accordion title="LINEAR_SEARCH_TEAMS">
**설명:** Linear에서 팀을 검색합니다.
**파라미터:**
- `teamFilterFormula` (object, 선택): 부정합적 정규형(DNF)의 필터 - 단일 조건의 AND 그룹들에 대한 OR.
```json
{
"operator": "OR",
"conditions": [
{
"operator": "AND",
"conditions": [
{
"field": "name",
"operator": "$stringContains",
"value": "Engineering"
}
]
}
]
}
```
사용 가능한 필드: `id`, `name`
</Accordion>
</AccordionGroup>
## 사용 예시
### 기본 Linear 에이전트 설정
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Linear tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with Linear capabilities
linear_agent = Agent(
role="Development Manager",
goal="Manage Linear issues and track development progress efficiently",
backstory="An AI assistant specialized in software development project management.",
tools=[enterprise_tools]
)
# Task to create a bug report
create_bug_task = Task(
description="Create a high-priority bug report for the authentication system and assign it to the backend team",
agent=linear_agent,
expected_output="Bug report created successfully with issue ID"
)
# Run the task
crew = Crew(
agents=[linear_agent],
tasks=[create_bug_task]
)
crew.kickoff()
```
### 특정 Linear 도구 필터링
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Linear tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["linear_create_issue", "linear_update_issue", "linear_search_issue"]
)
issue_manager = Agent(
role="Issue Manager",
goal="Create and manage Linear issues efficiently",
backstory="An AI assistant that focuses on issue creation and lifecycle management.",
tools=enterprise_tools
)
# Task to manage issue workflow
issue_workflow = Task(
description="Create a feature request issue and update the status of related issues to reflect current progress",
agent=issue_manager,
expected_output="Feature request created and related issues updated"
)
crew = Crew(
agents=[issue_manager],
tasks=[issue_workflow]
)
crew.kickoff()
```
### 프로젝트 및 팀 관리
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
project_coordinator = Agent(
role="Project Coordinator",
goal="Coordinate projects and teams in Linear efficiently",
backstory="An experienced project coordinator who manages development cycles and team workflows.",
tools=[enterprise_tools]
)
# Task to coordinate project setup
project_coordination = Task(
description="""
1. Search for engineering teams in Linear
2. Create a new project for Q2 feature development
3. Associate the project with relevant teams
4. Create initial project milestones as issues
""",
agent=project_coordinator,
expected_output="Q2 project created with teams assigned and initial milestones established"
)
crew = Crew(
agents=[project_coordinator],
tasks=[project_coordination]
)
crew.kickoff()
```
### 이슈 계층 구조 및 하위 작업 관리
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
task_organizer = Agent(
role="Task Organizer",
goal="Organize complex issues into manageable sub-tasks",
backstory="An AI assistant that breaks down complex development work into organized sub-tasks.",
tools=[enterprise_tools]
)
# Task to create issue hierarchy
hierarchy_task = Task(
description="""
1. 세분화가 필요한 대형 기능 이슈를 검색합니다
2. 각 복잡한 이슈에 대해 다양한 컴포넌트별로 하위 이슈를 생성합니다
3. 부모 이슈를 적절한 설명과 하위 이슈에 대한 링크로 업데이트합니다
4. 전문성에 따라 적합한 팀원에게 하위 이슈를 할당합니다
""",
agent=task_organizer,
expected_output="복잡한 이슈가 적절히 할당된 관리 가능한 하위 작업 단위로 분해됨"
)
crew = Crew(
agents=[task_organizer],
tasks=[hierarchy_task]
)
crew.kickoff()
```
### 자동화된 개발 워크플로우
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
workflow_automator = Agent(
role="Workflow Automator",
goal="Automate development workflow processes in Linear",
backstory="An AI assistant that automates repetitive development workflow tasks.",
tools=[enterprise_tools]
)
# Complex workflow automation task
automation_task = Task(
description="""
1. 7일 이상 진행 중인 이슈를 검색합니다
2. 마감일과 프로젝트 중요도에 따라 우선순위를 업데이트합니다
3. 각 팀을 위한 주간 스프린트 계획 이슈를 생성합니다
4. 이전 사이클에서 완료된 이슈를 보관합니다
5. 프로젝트 상태 보고서를 새로운 이슈로 생성합니다
""",
agent=workflow_automator,
expected_output="우선순위, 스프린트 계획, 상태 보고서가 업데이트된 자동화된 개발 워크플로우"
)
crew = Crew(
agents=[workflow_automator],
tasks=[automation_task]
)
crew.kickoff()
```
## 문제 해결
### 일반적인 문제
**권한 오류**
- Linear 계정이 대상 워크스페이스에 필요한 권한을 가지고 있는지 확인하세요
- OAuth 연결에 Linear API에 필요한 스코프가 포함되어 있는지 확인하세요
- 워크스페이스에서 이슈 및 프로젝트를 생성/편집할 권한이 있는지 확인하세요
**잘못된 ID 및 참조**
- 팀 ID, 이슈 ID, 프로젝트 ID가 올바른 UUID 형식인지 다시 한번 확인하세요
- 참조된 엔티티(팀, 프로젝트, 사이클)가 존재하며 접근 가능한지 확인하세요
- 이슈 식별자가 올바른 형식(예: "ABC-1")을 따르는지 검증하세요
**팀 및 프로젝트 연관 문제**
- 이슈나 프로젝트를 생성하기 전에 LINEAR_SEARCH_TEAMS를 사용하여 유효한 팀 ID를 조회하세요
- 워크스페이스 내에 팀이 존재하고 활성화되어 있는지 확인하세요
- 팀 ID가 올바르게 UUID 형식으로 구성되어 있는지 검증하세요
**이슈 상태 및 우선순위 문제**
- 상태 ID가 팀의 유효한 워크플로우 상태를 참조하는지 확인하세요
- 우선순위 값이 Linear 구성에서 허용된 범위 내에 있는지 확인하세요
- 참조하기 전에 사용자 지정 필드와 라벨이 존재하는지 검증하세요
**날짜 및 시간 형식 문제**
- 마감일 및 타임스탬프에 ISO 8601 형식을 사용하세요
- 마감일 계산 시 타임존을 올바로 처리하는지 확인하세요
- 마감일의 날짜 값이 유효하며 미래인지 검증하세요
**검색 및 필터 문제**
- 검색 쿼리가 올바르게 형식화되어 있으며 비어 있지 않은지 확인하세요
- 필터 공식에서 유효한 필드 이름을 사용하세요: `title`, `number`, `project`, `createdAt`
- 복잡한 다중 조건 쿼리를 만들기 전에 단순한 필터를 먼저 테스트해 보세요
- 연산자 타입이 필터링 대상 필드의 데이터 타입과 일치하는지 확인하세요
**서브이슈 생성 문제**
- 상위 이슈 ID가 유효하고 접근 가능한지 확인하세요
- 서브이슈의 팀 ID가 상위 이슈 팀과 일치하거나 호환되는지 검증하세요
- 상위 이슈가 이미 보관/삭제되지 않았는지 확인하세요
### 도움 받기
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
Linear 연동 설정 또는 문제 해결에 대해 지원팀에 문의하세요.
</Card>

View File

@@ -0,0 +1,509 @@
---
title: Notion 연동
description: "CrewAI를 위한 Notion 연동을 통한 페이지 및 데이터베이스 관리."
icon: "book"
---
## 개요
에이전트가 Notion을 통해 페이지, 데이터베이스, 콘텐츠를 관리할 수 있도록 지원합니다. 페이지 생성 및 업데이트, 콘텐츠 블록 관리, 지식 베이스 구성, AI 기반 자동화를 통해 문서화 작업 흐름을 효율화할 수 있습니다.
## 필수 조건
Notion 통합을 사용하기 전에 다음을 확인하세요:
- 활성 구독이 있는 [CrewAI Enterprise](https://app.crewai.com) 계정
- 적절한 워크스페이스 권한이 있는 Notion 계정
- [통합 페이지](https://app.crewai.com/crewai_plus/connectors)를 통해 Notion 계정을 연결함
## Notion 연동 설정
### 1. Notion 계정 연결하기
1. [CrewAI Enterprise Integrations](https://app.crewai.com/crewai_plus/connectors)로 이동합니다.
2. 인증 통합(Auhtentication Integrations) 섹션에서 **Notion**을(를) 찾습니다.
3. **Connect**를 클릭하고 OAuth 플로우를 완료합니다.
4. 페이지 및 데이터베이스 관리를 위한 필요한 권한을 부여합니다.
5. [Account Settings](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
### 2. 필수 패키지 설치
```bash
uv add crewai-tools
```
## 사용 가능한 액션
<AccordionGroup>
<Accordion title="NOTION_CREATE_PAGE">
**설명:** Notion에서 페이지를 생성합니다.
**파라미터:**
- `parent` (object, 필수): 상위 - 새 페이지가 삽입될 상위 페이지 또는 데이터베이스를 나타내는 JSON 객체로, page_id 또는 database_id 키를 포함합니다.
```json
{
"database_id": "DATABASE_ID"
}
```
- `properties` (object, 필수): 속성 - 페이지 속성의 값입니다. 상위가 데이터베이스인 경우, 스키마는 상위 데이터베이스의 속성과 일치해야 합니다.
```json
{
"title": [
{
"text": {
"content": "My Page"
}
}
]
}
```
- `icon` (object, 필수): 아이콘 - 페이지 아이콘입니다.
```json
{
"emoji": "🥬"
}
```
- `children` (object, 선택): 자식 - 페이지에 추가할 콘텐츠 블록입니다.
```json
[
{
"object": "block",
"type": "heading_2",
"heading_2": {
"rich_text": [
{
"type": "text",
"text": {
"content": "Lacinato kale"
}
}
]
}
}
]
```
- `cover` (object, 선택): 표지 - 페이지 표지 이미지입니다.
```json
{
"external": {
"url": "https://upload.wikimedia.org/wikipedia/commons/6/62/Tuscankale.jpg"
}
}
```
</Accordion>
<Accordion title="NOTION_UPDATE_PAGE">
**설명:** Notion에서 페이지를 업데이트합니다.
**파라미터:**
- `pageId` (string, 필수): 페이지 ID - 업데이트할 페이지의 ID를 지정합니다. (예: "59833787-2cf9-4fdf-8782-e53db20768a5").
- `icon` (object, 필수): 아이콘 - 페이지 아이콘입니다.
```json
{
"emoji": "🥬"
}
```
- `archived` (boolean, 선택): 보관됨 - 페이지가 보관(삭제)되었는지 여부입니다. true로 설정하면 페이지를 보관합니다. false로 설정하면 보관 해제(복원)합니다.
- `properties` (object, 선택): 속성 - 페이지에서 업데이트할 속성 값입니다.
```json
{
"title": [
{
"text": {
"content": "My Updated Page"
}
}
]
}
```
- `cover` (object, 선택): 표지 - 페이지 표지 이미지입니다.
```json
{
"external": {
"url": "https://upload.wikimedia.org/wikipedia/commons/6/62/Tuscankale.jpg"
}
}
```
</Accordion>
<Accordion title="NOTION_GET_PAGE_BY_ID">
**설명:** Notion에서 ID로 페이지를 가져옵니다.
**파라미터:**
- `pageId` (string, 필수): 페이지 ID - 가져올 페이지의 ID를 지정합니다. (예: "59833787-2cf9-4fdf-8782-e53db20768a5").
</Accordion>
<Accordion title="NOTION_ARCHIVE_PAGE">
**설명:** Notion에서 페이지를 보관합니다.
**파라미터:**
- `pageId` (string, 필수): 페이지 ID - 보관할 페이지의 ID를 지정합니다. (예: "59833787-2cf9-4fdf-8782-e53db20768a5").
</Accordion>
<Accordion title="NOTION_SEARCH_PAGES">
**설명:** 필터를 사용하여 Notion에서 페이지를 검색합니다.
**파라미터:**
- `searchByTitleFilterSearch` (object, 선택): 불리언 정규형(OR 조건 그룹의 AND 그룹) 형태의 필터입니다.
```json
{
"operator": "OR",
"conditions": [
{
"operator": "AND",
"conditions": [
{
"field": "query",
"operator": "$stringExactlyMatches",
"value": "meeting notes"
}
]
}
]
}
```
사용 가능한 필드: `query`, `filter.value`, `direction`, `page_size`
</Accordion>
<Accordion title="NOTION_GET_PAGE_CONTENT">
**설명:** Notion에서 페이지 콘텐츠(블록)를 가져옵니다.
**파라미터:**
- `blockId` (string, 필수): 페이지 ID - 해당 블록이나 페이지의 모든 자식 블록을 순서대로 가져오기 위해 Block 또는 Page ID를 지정합니다. (예: "59833787-2cf9-4fdf-8782-e53db20768a5").
</Accordion>
<Accordion title="NOTION_UPDATE_BLOCK">
**설명:** Notion에서 블록을 업데이트합니다.
**파라미터:**
- `blockId` (string, 필수): 블록 ID - 업데이트할 블록의 ID를 지정합니다. (예: "9bc30ad4-9373-46a5-84ab-0a7845ee52e6").
- `archived` (boolean, 선택): 보관됨 - true로 설정하면 블록을 보관(삭제)합니다. false로 설정하면 보관 해제(복원)합니다.
- `paragraph` (object, 선택): 단락 콘텐츠.
```json
{
"rich_text": [
{
"type": "text",
"text": {
"content": "Lacinato kale",
"link": null
}
}
],
"color": "default"
}
```
- `image` (object, 선택): 이미지 블록.
```json
{
"type": "external",
"external": {
"url": "https://website.domain/images/image.png"
}
}
```
- `bookmark` (object, 선택): 북마크 블록.
```json
{
"caption": [],
"url": "https://companywebsite.com"
}
```
- `code` (object, 선택): 코드 블록.
```json
{
"rich_text": [
{
"type": "text",
"text": {
"content": "const a = 3"
}
}
],
"language": "javascript"
}
```
- `pdf` (object, 선택): PDF 블록.
```json
{
"type": "external",
"external": {
"url": "https://website.domain/files/doc.pdf"
}
}
```
- `table` (object, 선택): 테이블 블록.
```json
{
"table_width": 2,
"has_column_header": false,
"has_row_header": false
}
```
- `tableOfContent` (object, 선택): 목차 블록.
```json
{
"color": "default"
}
```
- `additionalFields` (object, 선택): 추가 블록 유형.
```json
{
"child_page": {
"title": "Lacinato kale"
},
"child_database": {
"title": "My database"
}
}
```
</Accordion>
<Accordion title="NOTION_GET_BLOCK_BY_ID">
**설명:** Notion에서 ID로 블록을 가져옵니다.
**파라미터:**
- `blockId` (string, 필수): 블록 ID - 가져올 블록의 ID를 지정합니다. (예: "9bc30ad4-9373-46a5-84ab-0a7845ee52e6").
</Accordion>
<Accordion title="NOTION_DELETE_BLOCK">
**설명:** Notion에서 블록을 삭제합니다.
**파라미터:**
- `blockId` (string, 필수): 블록 ID - 삭제할 블록의 ID를 지정합니다. (예: "9bc30ad4-9373-46a5-84ab-0a7845ee52e6").
</Accordion>
</AccordionGroup>
## 사용 예시
### 기본 Notion Agent 설정
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Notion tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with Notion capabilities
notion_agent = Agent(
role="Documentation Manager",
goal="Manage documentation and knowledge base in Notion efficiently",
backstory="An AI assistant specialized in content management and documentation.",
tools=[enterprise_tools]
)
# Task to create a meeting notes page
create_notes_task = Task(
description="Create a new meeting notes page in the team database with today's date and agenda items",
agent=notion_agent,
expected_output="Meeting notes page created successfully with structured content"
)
# Run the task
crew = Crew(
agents=[notion_agent],
tasks=[create_notes_task]
)
crew.kickoff()
```
### 특정 Notion 도구 필터링
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Notion tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["notion_create_page", "notion_update_block", "notion_search_pages"]
)
content_manager = Agent(
role="Content Manager",
goal="Create and manage content pages efficiently",
backstory="An AI assistant that focuses on content creation and management.",
tools=enterprise_tools
)
# Task to manage content workflow
content_workflow = Task(
description="Create a new project documentation page and add structured content blocks for requirements and specifications",
agent=content_manager,
expected_output="Project documentation created with organized content sections"
)
crew = Crew(
agents=[content_manager],
tasks=[content_workflow]
)
crew.kickoff()
```
### 지식 베이스 관리
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
knowledge_curator = Agent(
role="Knowledge Curator",
goal="Curate and organize knowledge base content in Notion",
backstory="An experienced knowledge manager who organizes and maintains comprehensive documentation.",
tools=[enterprise_tools]
)
# Task to curate knowledge base
curation_task = Task(
description="""
1. 새로운 제품 기능과 관련된 기존 문서 페이지를 검색합니다.
2. 적절한 구조로 포괄적인 기능 문서 페이지를 생성합니다.
3. 코드 예제, 이미지 및 관련 리소스에 대한 링크를 추가합니다.
4. 기존 페이지를 업데이트하여 새 문서에 대한 교차 참조를 추가합니다.
""",
agent=knowledge_curator,
expected_output="Feature documentation created and integrated with existing knowledge base"
)
crew = Crew(
agents=[knowledge_curator],
tasks=[curation_task]
)
crew.kickoff()
```
### 콘텐츠 구조 및 구성
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
content_organizer = Agent(
role="Content Organizer",
goal="Organize and structure content blocks for optimal readability",
backstory="An AI assistant that specializes in content structure and user experience.",
tools=[enterprise_tools]
)
# Task to organize content structure
organization_task = Task(
description="""
1. Get content from existing project pages
2. Analyze the structure and identify improvement opportunities
3. Update content blocks to use proper headings, tables, and formatting
4. Add table of contents and improve navigation between related pages
5. Create templates for future documentation consistency
""",
agent=content_organizer,
expected_output="Content reorganized with improved structure and navigation"
)
crew = Crew(
agents=[content_organizer],
tasks=[organization_task]
)
crew.kickoff()
```
### 자동화된 문서화 워크플로우
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
doc_automator = Agent(
role="Documentation Automator",
goal="Automate documentation workflows and maintenance",
backstory="An AI assistant that automates repetitive documentation tasks.",
tools=[enterprise_tools]
)
# Complex documentation automation task
automation_task = Task(
description="""
1. 최근 30일 이내에 업데이트되지 않은 페이지 검색
2. 오래된 콘텐츠 블록 검토 및 업데이트
3. 일관된 포맷으로 주간 팀 업데이트 페이지 생성
4. 프로젝트 페이지에 상태 표시기 및 진행 상황 추적 추가
5. 월간 문서 헬스 리포트 생성
6. 완료된 프로젝트 페이지를 아카이브 섹션에 정리 및 보관
""",
agent=doc_automator,
expected_output="업데이트된 콘텐츠, 주간 리포트, 정리된 아카이브로 문서화 자동화 완료"
)
crew = Crew(
agents=[doc_automator],
tasks=[automation_task]
)
crew.kickoff()
```
## 문제 해결
### 일반적인 문제
**권한 오류**
- Notion 계정이 대상 워크스페이스에 대한 편집 권한이 있는지 확인하세요
- OAuth 연결에 Notion API에 필요한 범위가 포함되어 있는지 확인하세요
- 페이지와 데이터베이스가 인증된 통합에 공유되어 있는지 확인하세요
**잘못된 페이지 및 블록 ID**
- 페이지 ID 및 블록 ID가 올바른 UUID 형식인지 다시 확인하세요
- 참조되는 페이지와 블록이 존재하고 접근 가능한지 확인하세요
- 새 페이지를 생성할 때 상위 페이지 또는 데이터베이스 ID가 유효한지 검증하세요
**속성 스키마 문제**
- 데이터베이스에 페이지를 생성할 때 페이지 속성이 데이터베이스 스키마와 일치하는지 확인하세요
- 대상 데이터베이스에 대해 속성 이름과 타입이 올바른지 확인하세요
- 페이지를 생성하거나 업데이트할 때 필수 속성이 포함되어 있는지 확인하세요
**콘텐츠 블록 구조**
- 블록 콘텐츠가 Notion의 리치 텍스트 형식 사양을 따르는지 확인하세요
- 중첩된 블록 구조가 올바르게 포맷되어 있는지 확인하세요
- 미디어 URL이 접근 가능하며 올바른 형식인지 확인하세요
**검색 및 필터 문제**
- 검색 쿼리가 올바르게 포맷되어 있고 비어 있지 않은지 확인하세요
- 필터 공식에서 유효한 필드명을 사용하세요: `query`, `filter.value`, `direction`, `page_size`
- 복잡한 필터 조건을 만들기 전에 간단한 검색을 테스트하세요
**상위-하위 관계**
- 하위 페이지를 생성하기 전에 상위 페이지 또는 데이터베이스가 존재하는지 확인하세요
- 상위 컨테이너에 대한 적절한 권한이 있는지 확인하세요
- 데이터베이스 스키마가 설정하려는 속성을 허용하는지 확인하세요
**리치 텍스트 및 미디어 콘텐츠**
- 외부 이미지, PDF, 북마크의 URL이 접근 가능한지 확인하세요
- 리치 텍스트 포매팅이 Notion의 API 사양을 따르는지 확인하세요
- 코드 블록의 언어 타입이 Notion에서 지원되는지 확인하세요
**아카이브 및 삭제 작업**
- 아카이브(복구 가능)와 삭제(영구적)의 차이를 이해하세요
- 대상 콘텐츠를 아카이브 또는 삭제할 수 있는 권한이 있는지 확인하세요
- 여러 페이지 또는 블록에 영향을 줄 수 있는 대량 작업은 신중히 진행하세요
### 도움 받기
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
Notion 연동 설정 또는 문제 해결에 대해 지원팀에 문의해 주세요.
</Card>

View File

@@ -0,0 +1,632 @@
---
title: Salesforce 통합
description: "CrewAI를 위한 Salesforce 통합을 통한 CRM 및 영업 자동화."
icon: "salesforce"
---
## 개요
에이전트가 Salesforce를 통해 고객 관계, 영업 프로세스 및 데이터를 관리할 수 있도록 합니다. 레코드를 생성 및 업데이트하고, 리드와 기회를 관리하며, SOQL 쿼리를 실행하고, AI 기반 자동화로 CRM 워크플로를 간소화하세요.
## 사전 준비 사항
Salesforce 통합을 사용하기 전에 다음을 확인하세요:
- 활성 구독이 있는 [CrewAI Enterprise](https://app.crewai.com) 계정
- 적절한 권한이 있는 Salesforce 계정
- [통합 페이지](https://app.crewai.com/integrations)를 통해 Salesforce 계정 연결
## 사용 가능한 도구
### **레코드 관리**
<AccordionGroup>
<Accordion title="SALESFORCE_CREATE_RECORD_CONTACT">
**설명:** Salesforce에서 새로운 Contact 레코드를 생성합니다.
**파라미터:**
- `FirstName` (string, 선택): 이름
- `LastName` (string, 필수): 성 - 이 필드는 필수입니다
- `accountId` (string, 선택): Account ID - 이 Contact가 소속된 Account
- `Email` (string, 선택): 이메일 주소
- `Title` (string, 선택): 담당자의 직함(예: CEO 또는 Vice President 등)
- `Description` (string, 선택): Contact에 대한 설명
- `additionalFields` (object, 선택): 사용자 정의 Contact 필드를 위한 JSON 형식의 추가 필드
</Accordion>
<Accordion title="SALESFORCE_CREATE_RECORD_LEAD">
**설명:** Salesforce에서 새로운 Lead 레코드를 생성합니다.
**파라미터:**
- `FirstName` (string, 선택): 이름
- `LastName` (string, 필수): 성 - 이 필드는 필수입니다
- `Company` (string, 필수): 회사명 - 이 필드는 필수입니다
- `Email` (string, 선택): 이메일 주소
- `Phone` (string, 선택): 전화번호
- `Website` (string, 선택): 웹사이트 URL
- `Title` (string, 선택): 담당자의 직함(예: CEO 또는 Vice President 등)
- `Status` (string, 선택): 리드 상태 - 리드 상태를 선택하려면 Connect Portal Workflow 설정을 사용하세요
- `Description` (string, 선택): Lead에 대한 설명
- `additionalFields` (object, 선택): 사용자 정의 Lead 필드를 위한 JSON 형식의 추가 필드
</Accordion>
<Accordion title="SALESFORCE_CREATE_RECORD_OPPORTUNITY">
**설명:** Salesforce에서 새로운 Opportunity 레코드를 생성합니다.
**파라미터:**
- `Name` (string, 필수): Opportunity 이름 - 이 필드는 필수입니다
- `StageName` (string, 선택): Opportunity 단계 - 단계를 선택하려면 Connect Portal Workflow 설정을 사용하세요
- `CloseDate` (string, 선택): 마감일(YYYY-MM-DD 형식) - 기본값은 현재 날짜로부터 30일 이후
- `AccountId` (string, 선택): 이 Opportunity가 소속된 Account
- `Amount` (string, 선택): 예상 전체 판매 금액
- `Description` (string, 선택): Opportunity에 대한 설명
- `OwnerId` (string, 선택): 이 Opportunity를 담당하는 Salesforce 사용자
- `NextStep` (string, 선택): Opportunity 마감을 위한 다음 작업의 설명
- `additionalFields` (object, 선택): 사용자 정의 Opportunity 필드를 위한 JSON 형식의 추가 필드
</Accordion>
<Accordion title="SALESFORCE_CREATE_RECORD_TASK">
**설명:** Salesforce에서 새로운 Task 레코드를 생성합니다.
**파라미터:**
- `whatId` (string, 선택): 관련 ID - 이 Task가 관련된 Account 또는 Opportunity의 ID
- `whoId` (string, 선택): 이름 ID - 이 Task가 관련된 Contact 또는 Lead의 ID
- `subject` (string, 필수): 작업 제목
- `activityDate` (string, 선택): 작업 날짜(YYYY-MM-DD 형식)
- `description` (string, 선택): Task에 대한 설명
- `taskSubtype` (string, 필수): Task 하위 유형 - 선택 항목: task, email, listEmail, call
- `Status` (string, 선택): 상태 - 선택 항목: Not Started, In Progress, Completed
- `ownerId` (string, 선택): 담당자 ID - 이 Task를 담당하는 Salesforce 사용자
- `callDurationInSeconds` (string, 선택): 통화 시간(초)
- `isReminderSet` (boolean, 선택): 알림 설정 여부
- `reminderDateTime` (string, 선택): 알림 날짜/시간(ISO 형식)
- `additionalFields` (object, 선택): 사용자 정의 Task 필드를 위한 JSON 형식의 추가 필드
</Accordion>
<Accordion title="SALESFORCE_CREATE_RECORD_ACCOUNT">
**설명:** Salesforce에서 새로운 Account 레코드를 생성합니다.
**파라미터:**
- `Name` (string, 필수): Account 이름 - 이 필드는 필수입니다
- `OwnerId` (string, 선택): 이 Account를 담당하는 Salesforce 사용자
- `Website` (string, 선택): 웹사이트 URL
- `Phone` (string, 선택): 전화번호
- `Description` (string, 선택): Account 설명
- `additionalFields` (object, 선택): 사용자 정의 Account 필드를 위한 JSON 형식의 추가 필드
</Accordion>
<Accordion title="SALESFORCE_CREATE_RECORD_ANY">
**설명:** Salesforce에서 모든 오브젝트 유형의 레코드를 생성합니다.
**참고:** 이 기능은 사용자 정의 또는 알려지지 않은 오브젝트 유형의 레코드를 생성할 때 유연하게 사용할 수 있습니다.
</Accordion>
</AccordionGroup>
### **레코드 업데이트**
<AccordionGroup>
<Accordion title="SALESFORCE_UPDATE_RECORD_CONTACT">
**설명:** Salesforce에서 기존 연락처(Contact) 레코드를 업데이트합니다.
**파라미터:**
- `recordId` (string, 필수): 업데이트할 레코드의 ID
- `FirstName` (string, 선택): 이름
- `LastName` (string, 선택): 성
- `accountId` (string, 선택): 계정 ID - 연락처가 속한 계정
- `Email` (string, 선택): 이메일 주소
- `Title` (string, 선택): 연락처의 직함
- `Description` (string, 선택): 연락처에 대한 설명
- `additionalFields` (object, 선택): 커스텀 연락처 필드를 위한 JSON 형식의 추가 필드
</Accordion>
<Accordion title="SALESFORCE_UPDATE_RECORD_LEAD">
**설명:** Salesforce에서 기존 리드(Lead) 레코드를 업데이트합니다.
**파라미터:**
- `recordId` (string, 필수): 업데이트할 레코드의 ID
- `FirstName` (string, 선택): 이름
- `LastName` (string, 선택): 성
- `Company` (string, 선택): 회사명
- `Email` (string, 선택): 이메일 주소
- `Phone` (string, 선택): 전화번호
- `Website` (string, 선택): 웹사이트 URL
- `Title` (string, 선택): 연락처의 직함
- `Status` (string, 선택): 리드 상태
- `Description` (string, 선택): 리드에 대한 설명
- `additionalFields` (object, 선택): 커스텀 리드 필드를 위한 JSON 형식의 추가 필드
</Accordion>
<Accordion title="SALESFORCE_UPDATE_RECORD_OPPORTUNITY">
**설명:** Salesforce에서 기존 기회(Opportunity) 레코드를 업데이트합니다.
**파라미터:**
- `recordId` (string, 필수): 업데이트할 레코드의 ID
- `Name` (string, 선택): 기회명
- `StageName` (string, 선택): 기회 단계
- `CloseDate` (string, 선택): 마감 날짜 (YYYY-MM-DD 형식)
- `AccountId` (string, 선택): 기회가 속한 계정
- `Amount` (string, 선택): 예상 총 판매 금액
- `Description` (string, 선택): 기회에 대한 설명
- `OwnerId` (string, 선택): 이 기회를 담당하는 Salesforce 사용자
- `NextStep` (string, 선택): 기회 마감을 위한 다음 작업의 설명
- `additionalFields` (object, 선택): 커스텀 기회 필드를 위한 JSON 형식의 추가 필드
</Accordion>
<Accordion title="SALESFORCE_UPDATE_RECORD_TASK">
**설명:** Salesforce에서 기존 작업(Task) 레코드를 업데이트합니다.
**파라미터:**
- `recordId` (string, 필수): 업데이트할 레코드의 ID
- `whatId` (string, 선택): 관련 ID - 이 작업이 연결된 계정 또는 기회의 ID
- `whoId` (string, 선택): 이름 ID - 이 작업이 연결된 연락처 또는 리드의 ID
- `subject` (string, 선택): 작업의 주제
- `activityDate` (string, 선택): 활동 날짜 (YYYY-MM-DD 형식)
- `description` (string, 선택): 작업에 대한 설명
- `Status` (string, 선택): 상태 - 옵션: Not Started, In Progress, Completed
- `ownerId` (string, 선택): 담당자 ID - 이 작업을 할당받은 Salesforce 사용자
- `callDurationInSeconds` (string, 선택): 통화 시간(초)
- `isReminderSet` (boolean, 선택): 알림 설정 여부
- `reminderDateTime` (string, 선택): 알림 날짜/시간 (ISO 형식)
- `additionalFields` (object, 선택): 커스텀 작업 필드를 위한 JSON 형식의 추가 필드
</Accordion>
<Accordion title="SALESFORCE_UPDATE_RECORD_ACCOUNT">
**설명:** Salesforce에서 기존 계정(Account) 레코드를 업데이트합니다.
**파라미터:**
- `recordId` (string, 필수): 업데이트할 레코드의 ID
- `Name` (string, 선택): 계정 이름
- `OwnerId` (string, 선택): 이 계정에 할당된 Salesforce 사용자
- `Website` (string, 선택): 웹사이트 URL
- `Phone` (string, 선택): 전화번호
- `Description` (string, 선택): 계정 설명
- `additionalFields` (object, 선택): 커스텀 계정 필드를 위한 JSON 형식의 추가 필드
</Accordion>
<Accordion title="SALESFORCE_UPDATE_RECORD_ANY">
**설명:** Salesforce에서 어떤 객체 유형이든 레코드를 업데이트합니다.
**참고:** 이는 커스텀 또는 미확인 객체 유형의 레코드 업데이트를 위한 유연한 도구입니다.
</Accordion>
</AccordionGroup>
### **레코드 조회**
<AccordionGroup>
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_CONTACT">
**설명:** ID로 Contact 레코드를 조회합니다.
**파라미터:**
- `recordId` (string, 필수): Contact의 레코드 ID
</Accordion>
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_LEAD">
**설명:** ID로 Lead 레코드를 조회합니다.
**파라미터:**
- `recordId` (string, 필수): Lead의 레코드 ID
</Accordion>
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_OPPORTUNITY">
**설명:** ID로 Opportunity 레코드를 조회합니다.
**파라미터:**
- `recordId` (string, 필수): Opportunity의 레코드 ID
</Accordion>
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_TASK">
**설명:** ID로 Task 레코드를 조회합니다.
**파라미터:**
- `recordId` (string, 필수): Task의 레코드 ID
</Accordion>
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_ACCOUNT">
**설명:** ID로 Account 레코드를 조회합니다.
**파라미터:**
- `recordId` (string, 필수): Account의 레코드 ID
</Accordion>
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_ANY">
**설명:** ID로 임의 객체 유형의 레코드를 조회합니다.
**파라미터:**
- `recordType` (string, 필수): 레코드 유형 (예: "CustomObject__c")
- `recordId` (string, 필수): 레코드 ID
</Accordion>
</AccordionGroup>
### **레코드 검색**
<AccordionGroup>
<Accordion title="SALESFORCE_SEARCH_RECORDS_CONTACT">
**설명:** 고급 필터링으로 연락처(Contact) 레코드를 검색합니다.
**파라미터:**
- `filterFormula` (object, 선택): 필드별 연산자가 지정된 분리적 정규형(Disjunctive Normal Form)의 고급 필터
- `sortBy` (string, 선택): 정렬 기준 필드 (예: "CreatedDate")
- `sortDirection` (string, 선택): 정렬 방향 - 옵션: ASC, DESC
- `includeAllFields` (boolean, 선택): 결과에 모든 필드를 포함
- `paginationParameters` (object, 선택): pageCursor를 포함한 페이지네이션 설정
</Accordion>
<Accordion title="SALESFORCE_SEARCH_RECORDS_LEAD">
**설명:** 고급 필터링으로 리드(Lead) 레코드를 검색합니다.
**파라미터:**
- `filterFormula` (object, 선택): 필드별 연산자가 지정된 분리적 정규형의 고급 필터
- `sortBy` (string, 선택): 정렬 기준 필드 (예: "CreatedDate")
- `sortDirection` (string, 선택): 정렬 방향 - 옵션: ASC, DESC
- `includeAllFields` (boolean, 선택): 결과에 모든 필드를 포함
- `paginationParameters` (object, 선택): pageCursor를 포함한 페이지네이션 설정
</Accordion>
<Accordion title="SALESFORCE_SEARCH_RECORDS_OPPORTUNITY">
**설명:** 고급 필터링으로 기회(Opportunity) 레코드를 검색합니다.
**파라미터:**
- `filterFormula` (object, 선택): 필드별 연산자가 지정된 분리적 정규형의 고급 필터
- `sortBy` (string, 선택): 정렬 기준 필드 (예: "CreatedDate")
- `sortDirection` (string, 선택): 정렬 방향 - 옵션: ASC, DESC
- `includeAllFields` (boolean, 선택): 결과에 모든 필드를 포함
- `paginationParameters` (object, 선택): pageCursor를 포함한 페이지네이션 설정
</Accordion>
<Accordion title="SALESFORCE_SEARCH_RECORDS_TASK">
**설명:** 고급 필터링으로 작업(Task) 레코드를 검색합니다.
**파라미터:**
- `filterFormula` (object, 선택): 필드별 연산자가 지정된 분리적 정규형의 고급 필터
- `sortBy` (string, 선택): 정렬 기준 필드 (예: "CreatedDate")
- `sortDirection` (string, 선택): 정렬 방향 - 옵션: ASC, DESC
- `includeAllFields` (boolean, 선택): 결과에 모든 필드를 포함
- `paginationParameters` (object, 선택): pageCursor를 포함한 페이지네이션 설정
</Accordion>
<Accordion title="SALESFORCE_SEARCH_RECORDS_ACCOUNT">
**설명:** 고급 필터링으로 계정(Account) 레코드를 검색합니다.
**파라미터:**
- `filterFormula` (object, 선택): 필드별 연산자가 지정된 분리적 정규형의 고급 필터
- `sortBy` (string, 선택): 정렬 기준 필드 (예: "CreatedDate")
- `sortDirection` (string, 선택): 정렬 방향 - 옵션: ASC, DESC
- `includeAllFields` (boolean, 선택): 결과에 모든 필드를 포함
- `paginationParameters` (object, 선택): pageCursor를 포함한 페이지네이션 설정
</Accordion>
<Accordion title="SALESFORCE_SEARCH_RECORDS_ANY">
**설명:** 모든 오브젝트 유형의 레코드를 검색합니다.
**파라미터:**
- `recordType` (string, 필수): 검색할 레코드 유형
- `filterFormula` (string, 선택): 필터 검색 조건
- `includeAllFields` (boolean, 선택): 결과에 모든 필드를 포함
- `paginationParameters` (object, 선택): pageCursor를 포함한 페이지네이션 설정
</Accordion>
</AccordionGroup>
### **리스트 뷰 조회**
<AccordionGroup>
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_CONTACT">
**설명:** 특정 리스트 뷰에서 Contact 레코드를 가져옵니다.
**파라미터:**
- `listViewId` (string, 필수): 리스트 뷰 ID
- `paginationParameters` (object, 선택): pageCursor와 함께 사용하는 페이지네이션 설정
</Accordion>
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_LEAD">
**설명:** 특정 리스트 뷰에서 Lead 레코드를 가져옵니다.
**파라미터:**
- `listViewId` (string, 필수): 리스트 뷰 ID
- `paginationParameters` (object, 선택): pageCursor와 함께 사용하는 페이지네이션 설정
</Accordion>
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_OPPORTUNITY">
**설명:** 특정 리스트 뷰에서 Opportunity 레코드를 가져옵니다.
**파라미터:**
- `listViewId` (string, 필수): 리스트 뷰 ID
- `paginationParameters` (object, 선택): pageCursor와 함께 사용하는 페이지네이션 설정
</Accordion>
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_TASK">
**설명:** 특정 리스트 뷰에서 Task 레코드를 가져옵니다.
**파라미터:**
- `listViewId` (string, 필수): 리스트 뷰 ID
- `paginationParameters` (object, 선택): pageCursor와 함께 사용하는 페이지네이션 설정
</Accordion>
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_ACCOUNT">
**설명:** 특정 리스트 뷰에서 Account 레코드를 가져옵니다.
**파라미터:**
- `listViewId` (string, 필수): 리스트 뷰 ID
- `paginationParameters` (object, 선택): pageCursor와 함께 사용하는 페이지네이션 설정
</Accordion>
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_ANY">
**설명:** 특정 리스트 뷰에서 임의의 객체 유형의 레코드를 가져옵니다.
**파라미터:**
- `recordType` (string, 필수): 레코드 유형
- `listViewId` (string, 필수): 리스트 뷰 ID
- `paginationParameters` (object, 선택): pageCursor와 함께 사용하는 페이지네이션 설정
</Accordion>
</AccordionGroup>
### **커스텀 필드**
<AccordionGroup>
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_CONTACT">
**설명:** Contact 오브젝트에 대한 커스텀 필드를 배포합니다.
**파라미터:**
- `label` (string, 필수): 표시 및 내부 참조를 위한 필드 라벨
- `type` (string, 필수): 필드 유형 - 옵션: Checkbox, Currency, Date, Email, Number, Percent, Phone, Picklist, MultiselectPicklist, Text, TextArea, LongTextArea, Html, Time, Url
- `defaultCheckboxValue` (boolean, 선택): 체크박스 필드의 기본값
- `length` (string, 필수): 숫자/텍스트 필드의 길이
- `decimalPlace` (string, 필수): 숫자 필드의 소수 자릿수
- `pickListValues` (string, 필수): 피클리스트 필드의 값(줄바꿈으로 구분)
- `visibleLines` (string, 필수): 멀티셀렉트/텍스트 영역 필드의 표시 줄 수
- `description` (string, 선택): 필드 설명
- `helperText` (string, 선택): 마우스를 올렸을 때 표시되는 도움말 텍스트
- `defaultFieldValue` (string, 선택): 필드의 기본값
</Accordion>
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_LEAD">
**설명:** Lead 오브젝트에 대한 커스텀 필드를 배포합니다.
**파라미터:**
- `label` (string, 필수): 표시 및 내부 참조를 위한 필드 라벨
- `type` (string, 필수): 필드 유형 - 옵션: Checkbox, Currency, Date, Email, Number, Percent, Phone, Picklist, MultiselectPicklist, Text, TextArea, LongTextArea, Html, Time, Url
- `defaultCheckboxValue` (boolean, 선택): 체크박스 필드의 기본값
- `length` (string, 필수): 숫자/텍스트 필드의 길이
- `decimalPlace` (string, 필수): 숫자 필드의 소수 자릿수
- `pickListValues` (string, 필수): 피클리스트 필드의 값(줄바꿈으로 구분)
- `visibleLines` (string, 필수): 멀티셀렉트/텍스트 영역 필드의 표시 줄 수
- `description` (string, 선택): 필드 설명
- `helperText` (string, 선택): 마우스를 올렸을 때 표시되는 도움말 텍스트
- `defaultFieldValue` (string, 선택): 필드의 기본값
</Accordion>
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_OPPORTUNITY">
**설명:** Opportunity 오브젝트에 대한 커스텀 필드를 배포합니다.
**파라미터:**
- `label` (string, 필수): 표시 및 내부 참조를 위한 필드 라벨
- `type` (string, 필수): 필드 유형 - 옵션: Checkbox, Currency, Date, Email, Number, Percent, Phone, Picklist, MultiselectPicklist, Text, TextArea, LongTextArea, Html, Time, Url
- `defaultCheckboxValue` (boolean, 선택): 체크박스 필드의 기본값
- `length` (string, 필수): 숫자/텍스트 필드의 길이
- `decimalPlace` (string, 필수): 숫자 필드의 소수 자릿수
- `pickListValues` (string, 필수): 피클리스트 필드의 값(줄바꿈으로 구분)
- `visibleLines` (string, 필수): 멀티셀렉트/텍스트 영역 필드의 표시 줄 수
- `description` (string, 선택): 필드 설명
- `helperText` (string, 선택): 마우스를 올렸을 때 표시되는 도움말 텍스트
- `defaultFieldValue` (string, 선택): 필드의 기본값
</Accordion>
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_TASK">
**설명:** Task 오브젝트에 대한 커스텀 필드를 배포합니다.
**파라미터:**
- `label` (string, 필수): 표시 및 내부 참조를 위한 필드 라벨
- `type` (string, 필수): 필드 유형 - 옵션: Checkbox, Currency, Date, Email, Number, Percent, Phone, Picklist, MultiselectPicklist, Text, TextArea, Time, Url
- `defaultCheckboxValue` (boolean, 선택): 체크박스 필드의 기본값
- `length` (string, 필수): 숫자/텍스트 필드의 길이
- `decimalPlace` (string, 필수): 숫자 필드의 소수 자릿수
- `pickListValues` (string, 필수): 피클리스트 필드의 값(줄바꿈으로 구분)
- `visibleLines` (string, 필수): 멀티셀렉트 필드의 표시 줄 수
- `description` (string, 선택): 필드 설명
- `helperText` (string, 선택): 마우스를 올렸을 때 표시되는 도움말 텍스트
- `defaultFieldValue` (string, 선택): 필드의 기본값
</Accordion>
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_ACCOUNT">
**설명:** Account 오브젝트에 대한 커스텀 필드를 배포합니다.
**파라미터:**
- `label` (string, 필수): 표시 및 내부 참조를 위한 필드 라벨
- `type` (string, 필수): 필드 유형 - 옵션: Checkbox, Currency, Date, Email, Number, Percent, Phone, Picklist, MultiselectPicklist, Text, TextArea, LongTextArea, Html, Time, Url
- `defaultCheckboxValue` (boolean, 선택): 체크박스 필드의 기본값
- `length` (string, 필수): 숫자/텍스트 필드의 길이
- `decimalPlace` (string, 필수): 숫자 필드의 소수 자릿수
- `pickListValues` (string, 필수): 피클리스트 필드의 값(줄바꿈으로 구분)
- `visibleLines` (string, 필수): 멀티셀렉트/텍스트 영역 필드의 표시 줄 수
- `description` (string, 선택): 필드 설명
- `helperText` (string, 선택): 마우스를 올렸을 때 표시되는 도움말 텍스트
- `defaultFieldValue` (string, 선택): 필드의 기본값
</Accordion>
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_ANY">
**설명:** 모든 오브젝트 타입에 대한 커스텀 필드를 배포합니다.
**참고:** 커스텀 또는 미지의 오브젝트 타입에 커스텀 필드를 생성할 수 있는 유연한 도구입니다.
</Accordion>
</AccordionGroup>
### **고급 작업**
<AccordionGroup>
<Accordion title="SALESFORCE_WRITE_SOQL_QUERY">
**설명:** Salesforce 데이터에 대해 커스텀 SOQL 쿼리를 실행합니다.
**파라미터:**
- `query` (string, 필수): SOQL 쿼리 (예: "SELECT Id, Name FROM Account WHERE Name = 'Example'")
</Accordion>
<Accordion title="SALESFORCE_CREATE_CUSTOM_OBJECT">
**설명:** Salesforce에 새로운 커스텀 오브젝트를 배포합니다.
**파라미터:**
- `label` (string, 필수): 탭, 페이지 레이아웃, 리포트에 사용되는 오브젝트 라벨
- `pluralLabel` (string, 필수): 복수형 라벨 (예: "Accounts")
- `description` (string, 선택): 커스텀 오브젝트에 대한 설명
- `recordName` (string, 필수): 레이아웃과 검색에 표시되는 레코드 이름 (예: "Account Name")
</Accordion>
<Accordion title="SALESFORCE_DESCRIBE_ACTION_SCHEMA">
**설명:** 특정 오브젝트 타입에 대한 작업의 예상 스키마를 가져옵니다.
**파라미터:**
- `recordType` (string, 필수): 설명할 레코드 타입
- `operation` (string, 필수): 작업 타입 (예: "CREATE_RECORD" 또는 "UPDATE_RECORD")
**참고:** 커스텀 오브젝트 작업 시, 해당 스키마를 이해하기 위해 제일 먼저 이 기능을 사용하세요.
</Accordion>
</AccordionGroup>
## 사용 예시
### 기본 Salesforce 에이전트 설정
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Salesforce tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with Salesforce capabilities
salesforce_agent = Agent(
role="CRM Manager",
goal="Manage customer relationships and sales processes efficiently",
backstory="An AI assistant specialized in CRM operations and sales automation.",
tools=[enterprise_tools]
)
# Task to create a new lead
create_lead_task = Task(
description="Create a new lead for John Doe from Example Corp with email john.doe@example.com",
agent=salesforce_agent,
expected_output="Lead created successfully with lead ID"
)
# Run the task
crew = Crew(
agents=[salesforce_agent],
tasks=[create_lead_task]
)
crew.kickoff()
```
### 특정 Salesforce 도구 필터링
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Salesforce tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["salesforce_create_record_lead", "salesforce_update_record_opportunity", "salesforce_search_records_contact"]
)
sales_manager = Agent(
role="Sales Manager",
goal="Manage leads and opportunities in the sales pipeline",
backstory="An experienced sales manager who handles lead qualification and opportunity management.",
tools=enterprise_tools
)
# Task to manage sales pipeline
pipeline_task = Task(
description="Create a qualified lead and convert it to an opportunity with $50,000 value",
agent=sales_manager,
expected_output="Lead created and opportunity established successfully"
)
crew = Crew(
agents=[sales_manager],
tasks=[pipeline_task]
)
crew.kickoff()
```
### 연락처 및 계정 관리
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
account_manager = Agent(
role="Account Manager",
goal="Manage customer accounts and maintain strong relationships",
backstory="An AI assistant that specializes in account management and customer relationship building.",
tools=[enterprise_tools]
)
# Task to manage customer accounts
account_task = Task(
description="""
1. Create a new account for TechCorp Inc.
2. Add John Doe as the primary contact for this account
3. Create a follow-up task for next week to check on their project status
""",
agent=account_manager,
expected_output="Account, contact, and follow-up task created successfully"
)
crew = Crew(
agents=[account_manager],
tasks=[account_task]
)
crew.kickoff()
```
### 고급 SOQL 쿼리 및 리포팅
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
data_analyst = Agent(
role="Sales Data Analyst",
goal="Generate insights from Salesforce data using SOQL queries",
backstory="An analytical AI that excels at extracting meaningful insights from CRM data.",
tools=[enterprise_tools]
)
# Complex task involving SOQL queries and data analysis
analysis_task = Task(
description="""
1. Execute a SOQL query to find all opportunities closing this quarter
2. Search for contacts at companies with opportunities over $100K
3. Create a summary report of the sales pipeline status
4. Update high-value opportunities with next steps
""",
agent=data_analyst,
expected_output="Comprehensive sales pipeline analysis with actionable insights"
)
crew = Crew(
agents=[data_analyst],
tasks=[analysis_task]
)
crew.kickoff()
```
이 포괄적인 문서는 모든 Salesforce 도구를 기능별로 정리하여, 사용자가 CRM 자동화 작업에 필요한 특정 작업을 쉽게 찾을 수 있도록 도와줍니다.
### 도움 받기
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
Salesforce 통합 설정 또는 문제 해결에 대해 지원팀에 문의하세요.
</Card>

View File

@@ -0,0 +1,382 @@
---
title: Shopify 연동
description: "CrewAI를 위한 Shopify 연동을 통한 전자상거래 및 온라인 스토어 관리."
icon: "shopify"
---
## 개요
에이전트가 Shopify를 통해 전자상거래 운영을 관리할 수 있게 하세요. 고객, 주문, 제품, 재고 및 스토어 분석을 처리하여 AI 기반 자동화를 통해 온라인 비즈니스를 간소화할 수 있습니다.
## 사전 요구 사항
Shopify 연동을 사용하기 전에 다음을 확인하세요:
- 활성 구독이 있는 [CrewAI Enterprise](https://app.crewai.com) 계정
- 적절한 관리자 권한이 있는 Shopify 스토어
- [통합 페이지](https://app.crewai.com/integrations)를 통해 Shopify 스토어 연결
## 사용 가능한 도구
### **고객 관리**
<AccordionGroup>
<Accordion title="SHOPIFY_GET_CUSTOMERS">
**설명:** Shopify 스토어에서 고객 목록을 조회합니다.
**파라미터:**
- `customerIds` (string, 선택): 필터링할 고객 ID의 쉼표로 구분된 목록 (예: "207119551, 207119552")
- `createdAtMin` (string, 선택): 이 날짜 이후에 생성된 고객만 반환 (ISO 또는 Unix 타임스탬프)
- `createdAtMax` (string, 선택): 이 날짜 이전에 생성된 고객만 반환 (ISO 또는 Unix 타임스탬프)
- `updatedAtMin` (string, 선택): 이 날짜 이후에 업데이트된 고객만 반환 (ISO 또는 Unix 타임스탬프)
- `updatedAtMax` (string, 선택): 이 날짜 이전에 업데이트된 고객만 반환 (ISO 또는 Unix 타임스탬프)
- `limit` (string, 선택): 반환할 최대 고객 수 (기본값 250)
</Accordion>
<Accordion title="SHOPIFY_SEARCH_CUSTOMERS">
**설명:** 고급 필터링 기준을 사용하여 고객을 검색합니다.
**파라미터:**
- `filterFormula` (object, 선택): 필드별 연산자가 포함된 불리언 합정규형의 고급 필터
- `limit` (string, 선택): 반환할 최대 고객 수 (기본값 250)
</Accordion>
<Accordion title="SHOPIFY_CREATE_CUSTOMER">
**설명:** Shopify 스토어에 새로운 고객을 생성합니다.
**파라미터:**
- `firstName` (string, 필수): 고객의 이름
- `lastName` (string, 필수): 고객의 성
- `email` (string, 필수): 고객의 이메일 주소
- `company` (string, 선택): 회사명
- `streetAddressLine1` (string, 선택): 거리 주소
- `streetAddressLine2` (string, 선택): 거리 주소 2
- `city` (string, 선택): 도시
- `state` (string, 선택): 주 또는 도 코드
- `country` (string, 선택): 국가
- `zipCode` (string, 선택): 우편번호
- `phone` (string, 선택): 전화번호
- `tags` (string, 선택): 배열 또는 쉼표로 구분된 태그 목록
- `note` (string, 선택): 고객 메모
- `sendEmailInvite` (boolean, 선택): 이메일 초대장 전송 여부
- `metafields` (object, 선택): 추가 메타필드(JSON 형식)
</Accordion>
<Accordion title="SHOPIFY_UPDATE_CUSTOMER">
**설명:** Shopify 스토어에 기존 고객을 업데이트합니다.
**파라미터:**
- `customerId` (string, 필수): 업데이트할 고객의 ID
- `firstName` (string, 선택): 고객의 이름
- `lastName` (string, 선택): 고객의 성
- `email` (string, 선택): 고객의 이메일 주소
- `company` (string, 선택): 회사명
- `streetAddressLine1` (string, 선택): 거리 주소
- `streetAddressLine2` (string, 선택): 거리 주소 2
- `city` (string, 선택): 도시
- `state` (string, 선택): 주 또는 도 코드
- `country` (string, 선택): 국가
- `zipCode` (string, 선택): 우편번호
- `phone` (string, 선택): 전화번호
- `tags` (string, 선택): 배열 또는 쉼표로 구분된 태그 목록
- `note` (string, 선택): 고객 메모
- `sendEmailInvite` (boolean, 선택): 이메일 초대장 전송 여부
- `metafields` (object, 선택): 추가 메타필드(JSON 형식)
</Accordion>
</AccordionGroup>
### **주문 관리**
<AccordionGroup>
<Accordion title="SHOPIFY_GET_ORDERS">
**설명:** Shopify 스토어에서 주문 목록을 조회합니다.
**파라미터:**
- `orderIds` (string, optional): 필터링할 주문 ID의 콤마로 구분된 목록 (예: "450789469, 450789470")
- `createdAtMin` (string, optional): 이 날짜 이후에 생성된 주문만 반환 (ISO 또는 Unix 타임스탬프)
- `createdAtMax` (string, optional): 이 날짜 이전에 생성된 주문만 반환 (ISO 또는 Unix 타임스탬프)
- `updatedAtMin` (string, optional): 이 날짜 이후에 업데이트된 주문만 반환 (ISO 또는 Unix 타임스탬프)
- `updatedAtMax` (string, optional): 이 날짜 이전에 업데이트된 주문만 반환 (ISO 또는 Unix 타임스탬프)
- `limit` (string, optional): 반환할 주문의 최대 개수 (기본값: 250)
</Accordion>
<Accordion title="SHOPIFY_CREATE_ORDER">
**설명:** Shopify 스토어에 새 주문을 생성합니다.
**파라미터:**
- `email` (string, required): 고객 이메일 주소
- `lineItems` (object, required): title, price, quantity, variant_id가 포함된 JSON 형식의 주문 아이템
- `sendReceipt` (boolean, optional): 주문 영수증을 발송할지 여부
- `fulfillmentStatus` (string, optional): 주문 이행 상태 - 옵션: fulfilled, null, partial, restocked
- `financialStatus` (string, optional): 결제 상태 - 옵션: pending, authorized, partially_paid, paid, partially_refunded, refunded, voided
- `inventoryBehaviour` (string, optional): 인벤토리 동작 - 옵션: bypass, decrement_ignoring_policy, decrement_obeying_policy
- `note` (string, optional): 주문 메모
</Accordion>
<Accordion title="SHOPIFY_UPDATE_ORDER">
**설명:** Shopify 스토어에서 기존 주문을 업데이트합니다.
**파라미터:**
- `orderId` (string, required): 업데이트할 주문의 ID
- `email` (string, optional): 고객 이메일 주소
- `lineItems` (object, optional): JSON 형식의 업데이트된 주문 아이템
- `sendReceipt` (boolean, optional): 주문 영수증을 발송할지 여부
- `fulfillmentStatus` (string, optional): 주문 이행 상태 - 옵션: fulfilled, null, partial, restocked
- `financialStatus` (string, optional): 결제 상태 - 옵션: pending, authorized, partially_paid, paid, partially_refunded, refunded, voided
- `inventoryBehaviour` (string, optional): 인벤토리 동작 - 옵션: bypass, decrement_ignoring_policy, decrement_obeying_policy
- `note` (string, optional): 주문 메모
</Accordion>
<Accordion title="SHOPIFY_GET_ABANDONED_CARTS">
**설명:** Shopify 스토어에서 방치된 장바구니를 조회합니다.
**파라미터:**
- `createdWithInLast` (string, optional): 지정된 기간 내에 생성된 체크아웃 결과만 제한
- `createdAfterId` (string, optional): 지정된 ID 이후 결과로 제한
- `status` (string, optional): 주어진 상태의 체크아웃만 표시 - 옵션: open, closed (기본값: open)
- `createdAtMin` (string, optional): 이 날짜 이후에 생성된 장바구니만 반환 (ISO 또는 Unix 타임스탬프)
- `createdAtMax` (string, optional): 이 날짜 이전에 생성된 장바구니만 반환 (ISO 또는 Unix 타임스탬프)
- `limit` (string, optional): 반환할 장바구니의 최대 개수 (기본값: 250)
</Accordion>
</AccordionGroup>
### **제품 관리 (REST API)**
<AccordionGroup>
<Accordion title="SHOPIFY_GET_PRODUCTS">
**설명:** REST API를 사용하여 Shopify 스토어에서 제품 목록을 조회합니다.
**파라미터:**
- `productIds` (string, optional): 필터링할 제품 ID의 콤마(,)로 구분된 목록 (예: "632910392, 632910393")
- `title` (string, optional): 제품 제목으로 필터링
- `productType` (string, optional): 제품 유형으로 필터링
- `vendor` (string, optional): 공급업체로 필터링
- `status` (string, optional): 상태별 필터링 - 옵션: active, archived, draft
- `createdAtMin` (string, optional): 해당 날짜(ISO 혹은 Unix 타임스탬프) 이후에 생성된 제품만 반환
- `createdAtMax` (string, optional): 해당 날짜(ISO 혹은 Unix 타임스탬프) 이전에 생성된 제품만 반환
- `updatedAtMin` (string, optional): 해당 날짜(ISO 혹은 Unix 타임스탬프) 이후에 수정된 제품만 반환
- `updatedAtMax` (string, optional): 해당 날짜(ISO 혹은 Unix 타임스탬프) 이전에 수정된 제품만 반환
- `limit` (string, optional): 반환할 최대 제품 수 (기본값: 250)
</Accordion>
<Accordion title="SHOPIFY_CREATE_PRODUCT">
**설명:** REST API를 사용하여 Shopify 스토어에 새로운 제품을 생성합니다.
**파라미터:**
- `title` (string, required): 제품 제목
- `productType` (string, required): 제품 유형/카테고리
- `vendor` (string, required): 제품 공급업체
- `productDescription` (string, optional): 제품 설명 (일반 텍스트 또는 HTML 가능)
- `tags` (string, optional): 배열 또는 콤마(,)로 구분된 태그 목록
- `price` (string, optional): 제품 가격
- `inventoryPolicy` (string, optional): 재고 정책 - 옵션: deny, continue
- `imageUrl` (string, optional): 제품 이미지 URL
- `isPublished` (boolean, optional): 제품 공개 여부
- `publishToPointToSale` (boolean, optional): 포인트 오브 세일(Point of Sale)에 공개 여부
</Accordion>
<Accordion title="SHOPIFY_UPDATE_PRODUCT">
**설명:** REST API를 사용하여 Shopify 스토어의 기존 제품을 업데이트합니다.
**파라미터:**
- `productId` (string, required): 업데이트할 제품 ID
- `title` (string, optional): 제품 제목
- `productType` (string, optional): 제품 유형/카테고리
- `vendor` (string, optional): 제품 공급업체
- `productDescription` (string, optional): 제품 설명 (일반 텍스트 또는 HTML 가능)
- `tags` (string, optional): 배열 또는 콤마(,)로 구분된 태그 목록
- `price` (string, optional): 제품 가격
- `inventoryPolicy` (string, optional): 재고 정책 - 옵션: deny, continue
- `imageUrl` (string, optional): 제품 이미지 URL
- `isPublished` (boolean, optional): 제품 공개 여부
- `publishToPointToSale` (boolean, optional): 포인트 오브 세일(Point of Sale)에 공개 여부
</Accordion>
</AccordionGroup>
### **제품 관리 (GraphQL)**
<AccordionGroup>
<Accordion title="SHOPIFY_GET_PRODUCTS_GRAPHQL">
**설명:** 고급 GraphQL 필터링 기능을 사용하여 제품을 조회합니다.
**파라미터:**
- `productFilterFormula` (object, 선택): id, title, vendor, status, handle, tag, created_at, updated_at, published_at와 같은 필드를 지원하는 불리언 정규합형(DNF) 기반의 고급 필터
</Accordion>
<Accordion title="SHOPIFY_CREATE_PRODUCT_GRAPHQL">
**설명:** 미디어 지원이 강화된 GraphQL API를 사용하여 새 제품을 생성합니다.
**파라미터:**
- `title` (string, 필수): 제품 제목
- `productType` (string, 필수): 제품 유형/카테고리
- `vendor` (string, 필수): 제품 공급업체
- `productDescription` (string, 선택): 제품 설명 (일반 텍스트 또는 HTML 허용)
- `tags` (string, 선택): 배열 또는 쉼표로 구분된 리스트 형태의 제품 태그
- `media` (object, 선택): 대체 텍스트, 콘텐츠 유형 및 소스 URL을 가진 미디어 객체
- `additionalFields` (object, 선택): status, requiresSellingPlan, giftCard와 같은 추가 제품 필드
</Accordion>
<Accordion title="SHOPIFY_UPDATE_PRODUCT_GRAPHQL">
**설명:** 미디어 지원이 강화된 GraphQL API를 사용하여 기존 제품을 업데이트합니다.
**파라미터:**
- `productId` (string, 필수): 업데이트할 제품의 GraphQL ID (예: "gid://shopify/Product/913144112")
- `title` (string, 선택): 제품 제목
- `productType` (string, 선택): 제품 유형/카테고리
- `vendor` (string, 선택): 제품 공급업체
- `productDescription` (string, 선택): 제품 설명 (일반 텍스트 또는 HTML 허용)
- `tags` (string, 선택): 배열 또는 쉼표로 구분된 리스트 형태의 제품 태그
- `media` (object, 선택): 대체 텍스트, 콘텐츠 유형 및 소스 URL을 포함한 업데이트된 미디어 객체
- `additionalFields` (object, 선택): status, requiresSellingPlan, giftCard와 같은 추가 제품 필드
</Accordion>
</AccordionGroup>
## 사용 예시
### 기본 Shopify 에이전트 설정
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Shopify tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with Shopify capabilities
shopify_agent = Agent(
role="E-commerce Manager",
goal="Manage online store operations and customer relationships efficiently",
backstory="An AI assistant specialized in e-commerce operations and online store management.",
tools=[enterprise_tools]
)
# Task to create a new customer
create_customer_task = Task(
description="Create a new VIP customer Jane Smith with email jane.smith@example.com and phone +1-555-0123",
agent=shopify_agent,
expected_output="Customer created successfully with customer ID"
)
# Run the task
crew = Crew(
agents=[shopify_agent],
tasks=[create_customer_task]
)
crew.kickoff()
```
### 특정 Shopify 도구 필터링
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Shopify tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["shopify_create_customer", "shopify_create_order", "shopify_get_products"]
)
store_manager = Agent(
role="Store Manager",
goal="Manage customer orders and product catalog",
backstory="An experienced store manager who handles customer relationships and inventory management.",
tools=enterprise_tools
)
# Task to manage store operations
store_task = Task(
description="Create a new customer and process their order for 2 Premium Coffee Mugs",
agent=store_manager,
expected_output="Customer created and order processed successfully"
)
crew = Crew(
agents=[store_manager],
tasks=[store_task]
)
crew.kickoff()
```
### GraphQL을 활용한 제품 관리
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
product_manager = Agent(
role="Product Manager",
goal="Manage product catalog and inventory with advanced GraphQL capabilities",
backstory="An AI assistant that specializes in product management and catalog optimization.",
tools=[enterprise_tools]
)
# Task to manage product catalog
catalog_task = Task(
description="""
1. Coffee Co 공급업체의 신규 제품 "Premium Coffee Mug"을(를) 생성하세요.
2. 고품질 제품 이미지와 설명을 추가하세요.
3. 동일한 공급업체의 유사 제품을 검색하세요.
4. 제품 태그와 가격 전략을 업데이트하세요.
""",
agent=product_manager,
expected_output="Product created and catalog optimized successfully"
)
crew = Crew(
agents=[product_manager],
tasks=[catalog_task]
)
crew.kickoff()
```
### 주문 및 고객 분석
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
analytics_agent = Agent(
role="E-commerce Analyst",
goal="Analyze customer behavior and order patterns to optimize store performance",
backstory="An analytical AI that excels at extracting insights from e-commerce data.",
tools=[enterprise_tools]
)
# Complex task involving multiple operations
analytics_task = Task(
description="""
1. 최근 고객 데이터 및 주문 내역 조회
2. 최근 7일간의 장바구니 이탈 식별
3. 상품 성과 및 재고 수준 분석
4. 고객 유지를 위한 추천 사항 생성
""",
agent=analytics_agent,
expected_output="실행 가능한 인사이트를 제공하는 종합 이커머스 분석 보고서"
)
crew = Crew(
agents=[analytics_agent],
tasks=[analytics_task]
)
crew.kickoff()
```
### 도움 받기
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
Shopify 연동 설정 또는 문제 해결에 관한 지원이 필요하시면 고객 지원팀에 문의해 주세요.
</Card>

View File

@@ -0,0 +1,293 @@
---
title: Slack 연동
description: "CrewAI를 위한 Slack 연동으로 팀 커뮤니케이션 및 협업 지원."
icon: "slack"
---
## 개요
에이전트가 Slack을 통해 팀 커뮤니케이션을 관리할 수 있도록 지원합니다. 메시지를 보내고, 대화를 검색하며, 채널을 관리하고, AI 기반 자동화를 통해 팀 활동을 조율하여 협업 워크플로우를 효율적으로 최적화하세요.
## 사전 준비 사항
Slack 통합을 사용하기 전에 다음을 확인하십시오:
- 활성 구독이 있는 [CrewAI Enterprise](https://app.crewai.com) 계정
- 적절한 권한이 있는 Slack 워크스페이스
- [통합 페이지](https://app.crewai.com/integrations)를 통해 Slack 워크스페이스를 연결함
## 사용 가능한 도구
### **사용자 관리**
<AccordionGroup>
<Accordion title="SLACK_LIST_MEMBERS">
**설명:** Slack 채널의 모든 멤버를 나열합니다.
**파라미터:**
- 파라미터 없음 - 모든 채널 멤버를 조회합니다
</Accordion>
<Accordion title="SLACK_GET_USER_BY_EMAIL">
**설명:** 이메일 주소로 Slack 워크스페이스에서 사용자를 찾습니다.
**파라미터:**
- `email` (string, 필수): 워크스페이스 내 사용자의 이메일 주소
</Accordion>
<Accordion title="SLACK_GET_USERS_BY_NAME">
**설명:** 이름 또는 표시 이름으로 사용자를 검색합니다.
**파라미터:**
- `name` (string, 필수): 검색할 사용자의 실제 이름
- `displayName` (string, 필수): 검색할 사용자의 표시 이름
- `paginationParameters` (object, 선택): 페이지네이션 설정
- `pageCursor` (string, 선택): 페이지네이션을 위한 페이지 커서
</Accordion>
</AccordionGroup>
### **채널 관리**
<AccordionGroup>
<Accordion title="SLACK_LIST_CHANNELS">
**설명:** Slack 워크스페이스의 모든 채널을 나열합니다.
**파라미터:**
- 파라미터가 필요하지 않습니다 - 접근 가능한 모든 채널을 조회합니다
</Accordion>
</AccordionGroup>
### **메시징**
<AccordionGroup>
<Accordion title="SLACK_SEND_MESSAGE">
**설명:** Slack 채널에 메시지를 전송합니다.
**파라미터:**
- `channel` (string, 필수): 채널 이름 또는 ID - Connect Portal Workflow Settings를 사용하여 사용자가 채널을 선택하도록 하거나, 채널 이름을 입력하여 새 채널을 생성할 수 있습니다.
- `message` (string, 필수): 전송할 메시지 텍스트
- `botName` (string, 필수): 이 메시지를 전송하는 봇의 이름
- `botIcon` (string, 필수): 봇 아이콘 - 이미지 URL 또는 이모지(e.g., ":dog:") 모두 가능합니다.
- `blocks` (object, 선택): 첨부파일 및 인터랙티브 요소 등이 포함된 풍부한 메시지 포맷팅을 위한 Slack Block Kit JSON
- `authenticatedUser` (boolean, 선택): true이면 메시지가 애플리케이션이 아니라 인증된 Slack 사용자로부터 보낸 것처럼 표시됩니다(기본값은 false)
</Accordion>
<Accordion title="SLACK_SEND_DIRECT_MESSAGE">
**설명:** Slack에서 특정 사용자에게 다이렉트 메시지를 전송합니다.
**파라미터:**
- `memberId` (string, 필수): 수신자 사용자 ID - Connect Portal Workflow Settings를 사용하여 사용자가 워크스페이스 멤버를 선택하도록 합니다.
- `message` (string, 필수): 전송할 메시지 텍스트
- `botName` (string, 필수): 이 메시지를 전송하는 봇의 이름
- `botIcon` (string, 필수): 봇 아이콘 - 이미지 URL 또는 이모지(e.g., ":dog:") 모두 가능합니다.
- `blocks` (object, 선택): 첨부파일 및 인터랙티브 요소 등이 포함된 풍부한 메시지 포맷팅을 위한 Slack Block Kit JSON
- `authenticatedUser` (boolean, 선택): true이면 메시지가 애플리케이션이 아니라 인증된 Slack 사용자로부터 보낸 것처럼 표시됩니다(기본값은 false)
</Accordion>
</AccordionGroup>
### **검색 및 탐색**
<AccordionGroup>
<Accordion title="SLACK_SEARCH_MESSAGES">
**설명:** Slack 워크스페이스 전체에서 메시지를 검색합니다.
**매개변수:**
- `query` (string, 필수): 지정된 기준과 일치하는 메시지를 찾기 위해 Slack 검색 구문을 사용한 검색 쿼리
**검색 쿼리 예시:**
- `"project update"` - "project update"가 포함된 메시지 검색
- `from:@john in:#general` - #general 채널에서 John이 보낸 메시지 검색
- `has:link after:2023-01-01` - 2023년 1월 1일 이후에 링크가 포함된 메시지 검색
- `in:@channel before:yesterday` - 특정 채널에서 어제 이전에 작성된 메시지 검색
</Accordion>
</AccordionGroup>
## Block Kit 통합
Slack의 Block Kit을 사용하면 풍부하고 상호작용이 가능한 메시지를 생성할 수 있습니다. 다음은 `blocks` 매개변수를 사용하는 방법에 대한 몇 가지 예시입니다:
### 첨부 파일이 있는 간단한 텍스트
```json
[
{
"text": "I am a test message",
"attachments": [
{
"text": "And here's an attachment!"
}
]
}
]
```
### 섹션을 활용한 리치 포매팅
```json
[
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*프로젝트 업데이트*\n상태: ✅ 완료"
}
},
{
"type": "divider"
},
{
"type": "section",
"text": {
"type": "plain_text",
"text": "모든 작업이 성공적으로 완료되었습니다."
}
}
]
```
## 사용 예시
### 기본 Slack 에이전트 설정
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Slack tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with Slack capabilities
slack_agent = Agent(
role="Team Communication Manager",
goal="Facilitate team communication and coordinate collaboration efficiently",
backstory="An AI assistant specialized in team communication and workspace coordination.",
tools=[enterprise_tools]
)
# Task to send project updates
update_task = Task(
description="Send a project status update to the #general channel with current progress",
agent=slack_agent,
expected_output="Project update message sent successfully to team channel"
)
# Run the task
crew = Crew(
agents=[slack_agent],
tasks=[update_task]
)
crew.kickoff()
```
### 특정 Slack 도구 필터링
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Slack tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["slack_send_message", "slack_send_direct_message", "slack_search_messages"]
)
communication_manager = Agent(
role="Communication Coordinator",
goal="Manage team communications and ensure important messages reach the right people",
backstory="An experienced communication coordinator who handles team messaging and notifications.",
tools=enterprise_tools
)
# Task to coordinate team communication
coordination_task = Task(
description="Send task completion notifications to team members and update project channels",
agent=communication_manager,
expected_output="Team notifications sent and project channels updated successfully"
)
crew = Crew(
agents=[communication_manager],
tasks=[coordination_task]
)
crew.kickoff()
```
### Block Kit을 활용한 고급 메시징
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
notification_agent = Agent(
role="Notification Manager",
goal="Create rich, interactive notifications and manage workspace communication",
backstory="An AI assistant that specializes in creating engaging team notifications and updates.",
tools=[enterprise_tools]
)
# Task to send rich notifications
notification_task = Task(
description="""
1. Send a formatted project completion message to #general with progress charts
2. Send direct messages to team leads with task summaries
3. Create interactive notification with action buttons for team feedback
""",
agent=notification_agent,
expected_output="Rich notifications sent with interactive elements and formatted content"
)
crew = Crew(
agents=[notification_agent],
tasks=[notification_task]
)
crew.kickoff()
```
### 메시지 검색 및 분석
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
analytics_agent = Agent(
role="Communication Analyst",
goal="Analyze team communication patterns and extract insights from conversations",
backstory="An analytical AI that excels at understanding team dynamics through communication data.",
tools=[enterprise_tools]
)
# Complex task involving search and analysis
analysis_task = Task(
description="""
1. 모든 채널에서 최근 프로젝트 관련 메시지 검색
2. 이메일로 사용자를 찾아 팀 구성원 식별
3. 커뮤니케이션 패턴 및 응답 시간 분석
4. 주간 팀 커뮤니케이션 요약 생성
""",
agent=analytics_agent,
expected_output="팀 인사이트 및 권장사항이 포함된 종합적인 커뮤니케이션 분석"
)
crew = Crew(
agents=[analytics_agent],
tasks=[analysis_task]
)
crew.kickoff()
```
## 지원 문의
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
Slack 연동 설정 또는 문제 해결에 대해 지원팀에 문의하세요.
</Card>

View File

@@ -0,0 +1,305 @@
---
title: Stripe 연동
description: "CrewAI를 위한 Stripe 연동을 통한 결제 처리 및 구독 관리."
icon: "stripe"
---
## 개요
에이전트가 Stripe를 통해 결제, 구독 및 고객 청구 관리를 할 수 있도록 지원합니다. 고객 데이터 처리, 구독 관리, 상품 관리, 재무 거래 추적 등을 통해 AI 기반 자동화로 결제 워크플로를 효율화하세요.
## 사전 준비 사항
Stripe 통합을 사용하기 전에 다음 사항을 확인하세요:
- 활성 구독이 있는 [CrewAI Enterprise](https://app.crewai.com) 계정
- 적절한 API 권한이 있는 Stripe 계정
- [통합 페이지](https://app.crewai.com/integrations)를 통해 Stripe 계정 연결
## 사용 가능한 도구
### **고객 관리**
<AccordionGroup>
<Accordion title="STRIPE_CREATE_CUSTOMER">
**설명:** Stripe 계정에 새로운 고객을 생성합니다.
**파라미터:**
- `emailCreateCustomer` (string, 필수): 고객의 이메일 주소
- `name` (string, 선택): 고객의 전체 이름
- `description` (string, 선택): 내부 참조용 고객 설명
- `metadataCreateCustomer` (object, 선택): 추가 메타데이터를 key-value 쌍으로 입력 (예: `{"field1": 1, "field2": 2}`)
</Accordion>
<Accordion title="STRIPE_GET_CUSTOMER_BY_ID">
**설명:** Stripe 고객 ID로 특정 고객을 조회합니다.
**파라미터:**
- `idGetCustomer` (string, 필수): 조회할 Stripe 고객 ID
</Accordion>
<Accordion title="STRIPE_GET_CUSTOMERS">
**설명:** 필터링 옵션과 함께 고객 리스트를 조회합니다.
**파라미터:**
- `emailGetCustomers` (string, 선택): 이메일 주소로 고객 필터링
- `createdAfter` (string, 선택): 이 날짜 이후 생성된 고객 필터링 (유닉스 타임스탬프)
- `createdBefore` (string, 선택): 이 날짜 이전 생성된 고객 필터링 (유닉스 타임스탬프)
- `limitGetCustomers` (string, 선택): 반환할 최대 고객 수 (기본값 10)
</Accordion>
<Accordion title="STRIPE_UPDATE_CUSTOMER">
**설명:** 기존 고객의 정보를 업데이트합니다.
**파라미터:**
- `customerId` (string, 필수): 업데이트할 고객의 ID
- `emailUpdateCustomer` (string, 선택): 업데이트할 이메일 주소
- `name` (string, 선택): 업데이트할 고객 이름
- `description` (string, 선택): 업데이트할 고객 설명
- `metadataUpdateCustomer` (object, 선택): 업데이트할 메타데이터를 key-value 쌍으로 입력
</Accordion>
</AccordionGroup>
### **구독 관리**
<AccordionGroup>
<Accordion title="STRIPE_CREATE_SUBSCRIPTION">
**설명:** 고객을 위한 새로운 구독을 생성합니다.
**파라미터:**
- `customerIdCreateSubscription` (string, 필수): 구독이 생성될 고객 ID
- `plan` (string, 필수): 구독을 위한 플랜 ID - 사용자가 플랜을 선택할 수 있도록 Connect Portal Workflow Settings를 사용하세요
- `metadataCreateSubscription` (object, 선택): 구독에 대한 추가 메타데이터
</Accordion>
<Accordion title="STRIPE_GET_SUBSCRIPTIONS">
**설명:** 선택적 필터링으로 구독을 조회합니다.
**파라미터:**
- `customerIdGetSubscriptions` (string, 선택): 고객 ID로 구독을 필터링
- `subscriptionStatus` (string, 선택): 구독 상태별 필터링 - 옵션: incomplete, incomplete_expired, trialing, active, past_due, canceled, unpaid
- `limitGetSubscriptions` (string, 선택): 반환할 구독의 최대 개수(기본값은 10)
</Accordion>
</AccordionGroup>
### **제품 관리**
<AccordionGroup>
<Accordion title="STRIPE_CREATE_PRODUCT">
**설명:** Stripe 카탈로그에 새 제품을 생성합니다.
**파라미터:**
- `productName` (string, 필수): 제품 이름
- `description` (string, 선택): 제품 설명
- `metadataProduct` (object, 선택): 키-값 쌍으로 구성된 추가 제품 메타데이터
</Accordion>
<Accordion title="STRIPE_GET_PRODUCT_BY_ID">
**설명:** Stripe 제품 ID로 특정 제품을 조회합니다.
**파라미터:**
- `productId` (string, 필수): 조회할 Stripe 제품 ID
</Accordion>
<Accordion title="STRIPE_GET_PRODUCTS">
**설명:** 선택적 필터링을 통해 제품 목록을 조회합니다.
**파라미터:**
- `createdAfter` (string, 선택): 이 날짜 이후 생성된 제품만 필터링 (Unix 타임스탬프)
- `createdBefore` (string, 선택): 이 날짜 이전 생성된 제품만 필터링 (Unix 타임스탬프)
- `limitGetProducts` (string, 선택): 반환할 최대 제품 수 (기본값 10)
</Accordion>
</AccordionGroup>
### **금융 운영**
<AccordionGroup>
<Accordion title="STRIPE_GET_BALANCE_TRANSACTIONS">
**설명:** Stripe 계정에서 잔액 거래를 조회합니다.
**매개변수:**
- `balanceTransactionType` (string, 선택 사항): 거래 유형별 필터 - 옵션: charge, refund, payment, payment_refund
- `paginationParameters` (object, 선택 사항): 페이지네이션 설정
- `pageCursor` (string, 선택 사항): 페이지네이션을 위한 페이지 커서
</Accordion>
<Accordion title="STRIPE_GET_PLANS">
**설명:** Stripe 계정에서 구독 플랜을 조회합니다.
**매개변수:**
- `isPlanActive` (boolean, 선택 사항): 플랜 상태별 필터 - true는 활성 플랜, false는 비활성 플랜
- `paginationParameters` (object, 선택 사항): 페이지네이션 설정
- `pageCursor` (string, 선택 사항): 페이지네이션을 위한 페이지 커서
</Accordion>
</AccordionGroup>
## 사용 예시
### 기본 Stripe 에이전트 설정
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Stripe tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with Stripe capabilities
stripe_agent = Agent(
role="Payment Manager",
goal="Manage customer payments, subscriptions, and billing operations efficiently",
backstory="An AI assistant specialized in payment processing and subscription management.",
tools=[enterprise_tools]
)
# Task to create a new customer
create_customer_task = Task(
description="Create a new premium customer John Doe with email john.doe@example.com",
agent=stripe_agent,
expected_output="Customer created successfully with customer ID"
)
# Run the task
crew = Crew(
agents=[stripe_agent],
tasks=[create_customer_task]
)
crew.kickoff()
```
### 특정 Stripe 도구 필터링
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Stripe tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["stripe_create_customer", "stripe_create_subscription", "stripe_get_balance_transactions"]
)
billing_manager = Agent(
role="Billing Manager",
goal="Handle customer billing, subscriptions, and payment processing",
backstory="An experienced billing manager who handles subscription lifecycle and payment operations.",
tools=enterprise_tools
)
# Task to manage billing operations
billing_task = Task(
description="Create a new customer and set up their premium subscription plan",
agent=billing_manager,
expected_output="Customer created and subscription activated successfully"
)
crew = Crew(
agents=[billing_manager],
tasks=[billing_task]
)
crew.kickoff()
```
### 구독 관리
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
subscription_manager = Agent(
role="Subscription Manager",
goal="Manage customer subscriptions and optimize recurring revenue",
backstory="An AI assistant that specializes in subscription lifecycle management and customer retention.",
tools=[enterprise_tools]
)
# Task to manage subscription operations
subscription_task = Task(
description="""
1. 고급 기능이 포함된 새로운 제품 "Premium Service Plan" 생성
2. 다양한 등급의 구독 플랜 설정
3. 고객을 생성하고 적절한 플랜에 할당
4. 구독 상태를 모니터링하고 결제 문제 처리
""",
agent=subscription_manager,
expected_output="고객과 활성 플랜이 구성된 구독 관리 시스템"
)
crew = Crew(
agents=[subscription_manager],
tasks=[subscription_task]
)
crew.kickoff()
```
### 금융 분석 및 보고
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
financial_analyst = Agent(
role="Financial Analyst",
goal="Analyze payment data and generate financial insights",
backstory="An analytical AI that excels at extracting insights from payment and subscription data.",
tools=[enterprise_tools]
)
# Complex task involving financial analysis
analytics_task = Task(
description="""
1. Retrieve balance transactions for the current month
2. Analyze customer payment patterns and subscription trends
3. Identify high-value customers and subscription performance
4. Generate monthly financial performance report
""",
agent=financial_analyst,
expected_output="Comprehensive financial analysis with payment insights and recommendations"
)
crew = Crew(
agents=[financial_analyst],
tasks=[analytics_task]
)
crew.kickoff()
```
## 구독 상태 참조
구독 상태 이해하기:
- **incomplete** - 결제 수단 또는 결제 확인이 필요한 구독
- **incomplete_expired** - 결제가 확인되기 전에 만료된 구독
- **trialing** - 체험 기간 중인 구독
- **active** - 활성화되어 현재 사용 중인 구독
- **past_due** - 결제에 실패했지만 여전히 활성화된 구독
- **canceled** - 취소된 구독
- **unpaid** - 결제에 실패하여 더 이상 활성화되지 않은 구독
## 메타데이터 사용
메타데이터를 사용하면 고객, 구독, 제품에 대한 추가 정보를 저장할 수 있습니다:
```json
{
"customer_segment": "enterprise",
"acquisition_source": "google_ads",
"lifetime_value": "high",
"custom_field_1": "value1"
}
```
이 통합을 통해 결제 및 구독 관리 자동화를 포괄적으로 구현할 수 있으며, AI 에이전트가 Stripe 생태계 내에서 청구 작업을 원활하게 처리할 수 있습니다.

View File

@@ -0,0 +1,343 @@
---
title: Zendesk 통합
description: "CrewAI를 위한 Zendesk 통합으로 고객 지원 및 헬프데스크 관리."
icon: "headset"
---
## 개요
에이전트가 Zendesk를 통해 고객 지원 운영을 관리할 수 있도록 지원합니다. 티켓 생성 및 업데이트, 사용자 관리, 지원 지표 추적, 그리고 AI 기반 자동화를 통해 고객 서비스 워크플로우를 간소화할 수 있습니다.
## 사전 준비 사항
Zendesk 통합을 사용하기 전에 다음을 확인하세요.
- 활성 구독이 있는 [CrewAI Enterprise](https://app.crewai.com) 계정
- 적절한 API 권한이 있는 Zendesk 계정
- [통합 페이지](https://app.crewai.com/integrations)를 통해 Zendesk 계정 연결
## 사용 가능한 도구
### **티켓 관리**
<AccordionGroup>
<Accordion title="ZENDESK_CREATE_TICKET">
**설명:** Zendesk에 새로운 지원 티켓을 생성합니다.
**매개변수:**
- `ticketSubject` (string, 필수): 티켓 제목 줄 (예: "도와주세요, 프린터에 불이 났어요!")
- `ticketDescription` (string, 필수): 티켓에 표시될 첫 번째 댓글 (예: "연기가 정말 화려하네요.")
- `requesterName` (string, 필수): 지원 요청자의 이름 (예: "Jane Customer")
- `requesterEmail` (string, 필수): 지원 요청자의 이메일 (예: "jane@example.com")
- `assigneeId` (string, 선택): 이 티켓에 할당된 Zendesk 에이전트 ID - 사용자가 담당자를 선택할 수 있도록 Connect Portal Workflow Settings 를 사용하세요
- `ticketType` (string, 선택): 티켓 유형 - 옵션: problem, incident, question, task
- `ticketPriority` (string, 선택): 우선순위 수준 - 옵션: urgent, high, normal, low
- `ticketStatus` (string, 선택): 티켓 상태 - 옵션: new, open, pending, hold, solved, closed
- `ticketDueAt` (string, 선택): task 유형 티켓의 마감일 (ISO 8601 타임스탬프)
- `ticketTags` (string, 선택): 적용할 태그 배열 (예: `["enterprise", "other_tag"]`)
- `ticketExternalId` (string, 선택): 티켓을 로컬 레코드와 연결할 외부 ID
- `ticketCustomFields` (object, 선택): JSON 형식의 사용자 정의 필드 값
</Accordion>
<Accordion title="ZENDESK_UPDATE_TICKET">
**설명:** Zendesk의 기존 지원 티켓을 업데이트합니다.
**매개변수:**
- `ticketId` (string, 필수): 업데이트할 티켓의 ID (예: "35436")
- `ticketSubject` (string, 선택): 업데이트된 티켓 제목
- `requesterName` (string, 필수): 이 티켓을 요청한 사용자의 이름
- `requesterEmail` (string, 필수): 이 티켓을 요청한 사용자의 이메일
- `assigneeId` (string, 선택): 업데이트된 담당자 ID - Connect Portal Workflow Settings 를 사용하세요
- `ticketType` (string, 선택): 업데이트된 티켓 유형 - 옵션: problem, incident, question, task
- `ticketPriority` (string, 선택): 업데이트된 우선순위 - 옵션: urgent, high, normal, low
- `ticketStatus` (string, 선택): 업데이트된 상태 - 옵션: new, open, pending, hold, solved, closed
- `ticketDueAt` (string, 선택): 업데이트된 마감일 (ISO 8601 타임스탬프)
- `ticketTags` (string, 선택): 업데이트된 태그 배열
- `ticketExternalId` (string, 선택): 업데이트된 외부 ID
- `ticketCustomFields` (object, 선택): 업데이트된 사용자 정의 필드 값
</Accordion>
<Accordion title="ZENDESK_GET_TICKET_BY_ID">
**설명:** ID로 특정 티켓을 조회합니다.
**매개변수:**
- `ticketId` (string, 필수): 조회할 티켓의 ID (예: "35436")
</Accordion>
<Accordion title="ZENDESK_ADD_COMMENT_TO_TICKET">
**설명:** 기존 티켓에 댓글이나 내부 노트를 추가합니다.
**매개변수:**
- `ticketId` (string, 필수): 댓글을 추가할 티켓의 ID (예: "35436")
- `commentBody` (string, 필수): 댓글 메시지 (일반 텍스트 또는 HTML 지원, 예: "도움을 주셔서 감사합니다!")
- `isInternalNote` (boolean, 선택): 공개 답글 대신 내부 노트로 설정하려면 true (기본값: false)
- `isPublic` (boolean, 선택): 공개 댓글이면 true, 내부 노트이면 false
</Accordion>
<Accordion title="ZENDESK_SEARCH_TICKETS">
**설명:** 다양한 필터 및 조건을 사용하여 티켓을 검색합니다.
**매개변수:**
- `ticketSubject` (string, 선택): 티켓 제목 내 텍스트로 필터링
- `ticketDescription` (string, 선택): 티켓 설명 및 댓글 내 텍스트로 필터링
- `ticketStatus` (string, 선택): 상태로 필터링 - 옵션: new, open, pending, hold, solved, closed
- `ticketType` (string, 선택): 유형으로 필터링 - 옵션: problem, incident, question, task, no_type
- `ticketPriority` (string, 선택): 우선순위로 필터링 - 옵션: urgent, high, normal, low, no_priority
- `requesterId` (string, 선택): 요청자 사용자 ID로 필터링
- `assigneeId` (string, 선택): 담당 에이전트 ID로 필터링
- `recipientEmail` (string, 선택): 원래 수신자 이메일 주소로 필터링
- `ticketTags` (string, 선택): 티켓 태그로 필터링
- `ticketExternalId` (string, 선택): 외부 ID로 필터링
- `createdDate` (object, 선택): 생성일로 필터링 (연산자: EQUALS, LESS_THAN_EQUALS, GREATER_THAN_EQUALS, 값)
- `updatedDate` (object, 선택): 업데이트 날짜로 필터링 (연산자와 값)
- `dueDate` (object, 선택): 마감일로 필터링 (연산자와 값)
- `sort_by` (string, 선택): 정렬 필드 - 옵션: created_at, updated_at, priority, status, ticket_type
- `sort_order` (string, 선택): 정렬 방향 - 옵션: asc, desc
</Accordion>
</AccordionGroup>
### **사용자 관리**
<AccordionGroup>
<Accordion title="ZENDESK_CREATE_USER">
**설명:** Zendesk에서 새로운 사용자를 생성합니다.
**매개변수:**
- `name` (string, 필수): 사용자의 전체 이름
- `email` (string, 선택): 사용자의 이메일 주소 (예: "jane@example.com")
- `phone` (string, 선택): 사용자의 전화번호
- `role` (string, 선택): 사용자 역할 - 옵션: admin, agent, end-user
- `externalId` (string, 선택): 다른 시스템의 고유 식별자
- `details` (string, 선택): 추가 사용자 정보
- `notes` (string, 선택): 사용자에 대한 내부 메모
</Accordion>
<Accordion title="ZENDESK_UPDATE_USER">
**설명:** 기존 사용자의 정보를 업데이트합니다.
**매개변수:**
- `userId` (string, 필수): 업데이트할 사용자의 ID
- `name` (string, 선택): 업데이트할 사용자 이름
- `email` (string, 선택): 업데이트할 이메일 (업데이트 시 보조 이메일로 추가됨)
- `phone` (string, 선택): 업데이트할 전화번호
- `role` (string, 선택): 업데이트할 역할 - 옵션: admin, agent, end-user
- `externalId` (string, 선택): 업데이트된 외부 ID
- `details` (string, 선택): 업데이트된 사용자 상세 정보
- `notes` (string, 선택): 업데이트된 내부 메모
</Accordion>
<Accordion title="ZENDESK_GET_USER_BY_ID">
**설명:** ID로 특정 사용자를 조회합니다.
**매개변수:**
- `userId` (string, 필수): 조회할 사용자 ID
</Accordion>
<Accordion title="ZENDESK_SEARCH_USERS">
**설명:** 다양한 기준으로 사용자를 검색합니다.
**매개변수:**
- `name` (string, 선택): 사용자 이름으로 필터링
- `email` (string, 선택): 사용자 이메일로 필터링 (예: "jane@example.com")
- `role` (string, 선택): 역할로 필터링 - 옵션: admin, agent, end-user
- `externalId` (string, 선택): 외부 ID로 필터링
- `sort_by` (string, 선택): 정렬 필드 - 옵션: created_at, updated_at
- `sort_order` (string, 선택): 정렬 방향 - 옵션: asc, desc
</Accordion>
</AccordionGroup>
### **관리 도구**
<AccordionGroup>
<Accordion title="ZENDESK_GET_TICKET_FIELDS">
**설명:** 티켓에 사용할 수 있는 모든 표준 및 맞춤 필드를 검색합니다.
**파라미터:**
- `paginationParameters` (object, 선택 사항): 페이지네이션 설정
- `pageCursor` (string, 선택 사항): 페이지네이션을 위한 페이지 커서
</Accordion>
<Accordion title="ZENDESK_GET_TICKET_AUDITS">
**설명:** 티켓의 감사 기록(읽기 전용 이력)을 가져옵니다.
**파라미터:**
- `ticketId` (string, 선택 사항): 특정 티켓의 감사를 조회합니다(비워두면 모든 비보관된 티켓의 감사를 조회, 예: "1234")
- `paginationParameters` (object, 선택 사항): 페이지네이션 설정
- `pageCursor` (string, 선택 사항): 페이지네이션을 위한 페이지 커서
</Accordion>
</AccordionGroup>
## 커스텀 필드
커스텀 필드를 사용하면 조직에 특화된 추가 정보를 저장할 수 있습니다:
```json
[
{ "id": 27642, "value": "745" },
{ "id": 27648, "value": "yes" }
]
```
## 티켓 우선순위 레벨
우선순위 레벨 이해하기:
- **긴급** - 즉각적인 조치가 필요한 치명적 이슈
- **높음** - 신속하게 해결해야 하는 중요한 이슈
- **보통** - 대부분의 티켓에 해당하는 표준 우선순위
- **낮음** - 여유가 있을 때 처리해도 되는 사소한 이슈
## 티켓 상태 워크플로우
표준 티켓 상태 진행:
- **new** - 최근에 생성됨, 아직 할당되지 않음
- **open** - 현재 작업 중
- **pending** - 고객 응답 또는 외부 조치 대기 중
- **hold** - 일시 중지됨
- **solved** - 문제가 해결되어 고객 확인 대기 중
- **closed** - 티켓이 완료되어 종료됨
## 사용 예시
### 기본 Zendesk 에이전트 설정
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Zendesk tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with Zendesk capabilities
zendesk_agent = Agent(
role="Support Manager",
goal="Manage customer support tickets and provide excellent customer service",
backstory="An AI assistant specialized in customer support operations and ticket management.",
tools=[enterprise_tools]
)
# Task to create a new support ticket
create_ticket_task = Task(
description="Create a high-priority support ticket for John Smith who is unable to access his account after password reset",
agent=zendesk_agent,
expected_output="Support ticket created successfully with ticket ID"
)
# Run the task
crew = Crew(
agents=[zendesk_agent],
tasks=[create_ticket_task]
)
crew.kickoff()
```
### 특정 Zendesk 도구 필터링
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Zendesk tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["zendesk_create_ticket", "zendesk_update_ticket", "zendesk_add_comment_to_ticket"]
)
support_agent = Agent(
role="Customer Support Agent",
goal="Handle customer inquiries and resolve support issues efficiently",
backstory="An experienced support agent who specializes in ticket resolution and customer communication.",
tools=enterprise_tools
)
# Task to manage support workflow
support_task = Task(
description="Create a ticket for login issues, add troubleshooting comments, and update status to resolved",
agent=support_agent,
expected_output="Support ticket managed through complete resolution workflow"
)
crew = Crew(
agents=[support_agent],
tasks=[support_task]
)
crew.kickoff()
```
### 고급 티켓 관리
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
ticket_manager = Agent(
role="Ticket Manager",
goal="Manage support ticket workflows and ensure timely resolution",
backstory="An AI assistant that specializes in support ticket triage and workflow optimization.",
tools=[enterprise_tools]
)
# Task to manage ticket lifecycle
ticket_workflow = Task(
description="""
1. 계정 접근 문제에 대한 새로운 지원 티켓을 생성합니다.
2. 문제 해결 단계를 내부 노트에 추가합니다.
3. 고객 등급에 따라 티켓 우선순위를 업데이트합니다.
4. 해결 코멘트를 추가하고 티켓을 종료합니다.
""",
agent=ticket_manager,
expected_output="티켓 생성부터 해결까지 전체 생명주기 관리"
)
crew = Crew(
agents=[ticket_manager],
tasks=[ticket_workflow]
)
crew.kickoff()
```
### 지원 분석 및 보고
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
support_analyst = Agent(
role="Support Analyst",
goal="Analyze support metrics and generate insights for team performance",
backstory="An analytical AI that excels at extracting insights from support data and ticket patterns.",
tools=[enterprise_tools]
)
# Complex task involving analytics and reporting
analytics_task = Task(
description="""
1. Search for all open tickets from the last 30 days
2. Analyze ticket resolution times and customer satisfaction
3. Identify common issues and support patterns
4. Generate weekly support performance report
""",
agent=support_analyst,
expected_output="Comprehensive support analytics report with performance insights and recommendations"
)
crew = Crew(
agents=[support_analyst],
tasks=[analytics_task]
)
crew.kickoff()
```

View File

@@ -0,0 +1,99 @@
---
title: "CrewAI 엔터프라이즈"
description: "AI 에이전트 워크플로우를 배포, 모니터링 및 확장하세요"
icon: "globe"
---
## 소개
CrewAI Enterprise는 프로덕션 환경에서 crew와 agent를 배포, 모니터링, 확장할 수 있는 플랫폼을 제공합니다.
<Frame>
<img src="/images/enterprise/crewai-enterprise-dashboard.png" alt="CrewAI Enterprise Dashboard" />
</Frame>
CrewAI Enterprise는 오픈 소스 프레임워크의 강력함에 프로덕션 배포, 협업, 확장성을 위한 기능을 더했습니다. crew를 관리형 인프라에 배포하고, 실행을 실시간으로 모니터링하세요.
## 주요 기능
<CardGroup cols={2}>
<Card title="Crew Deployments" icon="rocket">
몇 번의 클릭만으로 관리형 인프라에 crew를 배포하세요
</Card>
<Card title="API Access" icon="code">
기존 시스템과의 통합을 위해 REST API를 통해 배포된 crew에 접근하세요
</Card>
<Card title="Observability" icon="chart-line">
상세한 실행 추적과 로그로 crew를 모니터링하세요
</Card>
<Card title="Tool Repository" icon="toolbox">
crew의 역량을 강화할 수 있도록 도구를 게시하고 설치하세요
</Card>
<Card title="Webhook Streaming" icon="webhook">
실시간 이벤트와 업데이트를 시스템으로 스트리밍하세요
</Card>
<Card title="Crew Studio" icon="paintbrush">
노코드/로코드 인터페이스로 crew를 생성 및 커스터마이즈하세요
</Card>
</CardGroup>
## 배포 옵션
<CardGroup cols={3}>
<Card title="GitHub 통합" icon="github">
코드 배포를 위해 GitHub 리포지토리에 직접 연결하세요
</Card>
<Card title="Crew Studio" icon="palette">
코드 없는 Crew Studio 인터페이스를 통해 생성된 crew를 배포하세요
</Card>
<Card title="CLI 배포" icon="terminal">
더 고급 배포 워크플로우를 위해 CrewAI CLI를 사용하세요
</Card>
</CardGroup>
## 시작하기
<Steps>
<Step title="계정 가입하기">
[app.crewai.com](https://app.crewai.com)에서 계정을 생성하세요
<Card
title="가입하기"
icon="user"
href="https://app.crewai.com/signup"
>
가입하기
</Card>
</Step>
<Step title="첫 번째 crew 만들기">
코드 또는 Crew Studio를 사용하여 crew를 만드세요
<Card
title="Crew 만들기"
icon="paintbrush"
href="/ko/enterprise/guides/build-crew"
>
Crew 만들기
</Card>
</Step>
<Step title="crew 배포하기">
crew를 Enterprise 플랫폼에 배포하세요
<Card
title="Crew 배포"
icon="rocket"
href="/ko/enterprise/guides/deploy-crew"
>
Crew 배포
</Card>
</Step>
<Step title="crew에 접근하기">
생성된 API 엔드포인트를 통해 crew와 연동하세요
<Card
title="API 접근"
icon="code"
href="/ko/enterprise/guides/kickoff-crew"
>
Crew API 사용
</Card>
</Step>
</Steps>
자세한 안내를 원하시면 [배포 가이드](/ko/enterprise/guides/deploy-crew)를 확인하거나 아래 버튼을 클릭해 시작하세요.

View File

@@ -0,0 +1,151 @@
---
title: 자주 묻는 질문
description: "CrewAI Enterprise에 대한 자주 묻는 질문"
icon: "circle-question"
---
<AccordionGroup>
<Accordion title="계층적 프로세스에서 작업 실행은 어떻게 처리됩니까?">
계층적 프로세스에서는 매니저 에이전트가 자동으로 생성되어 워크플로우를 조정하고, 작업을 위임하며 결과를 검증하여 효율적이고 체계적으로 작업이 수행되도록 합니다. 매니저 에이전트는 하위 에이전트에게 작업을 위임하고 실행을 지원하기 위해 도구를 활용합니다. 매니저 LLM은 계층적 프로세스에서 매우 중요하며, 적절한 작동을 위해 반드시 올바르게 설정되어야 합니다.
</Accordion>
<Accordion title="가장 최신의 CrewAI 문서는 어디에서 확인할 수 있습니까?">
CrewAI에 대한 최신 문서는 공식 문서 사이트에서 확인하실 수 있습니다: https://docs.crewai.com/
<Card href="https://docs.crewai.com/" icon="books">CrewAI 문서</Card>
</Accordion>
<Accordion title="CrewAI의 계층적 프로세스와 순차적 프로세스의 주요 차이점은 무엇입니까?">
#### 계층적 프로세스:
- 명확한 지휘 체계에 따라 작업이 위임 및 실행됨
- 매니저 에이전트에 대해 manager language model(`manager_llm`)을 반드시 지정해야 함
- 매니저 에이전트가 작업 실행, 계획, 위임, 검증을 총괄함
- 작업이 사전에 지정되지 않으며, 매니저가 각 에이전트의 역량에 따라 작업을 할당함
#### 순차적 프로세스:
- 작업이 순서대로 하나씩 실행되어 작업들이 순차적으로 진행됨
- 이전 작업의 결과가 다음 작업의 맥락이 됨
- 작업 실행이 작업 리스트에 정의된 순서대로 진행됨
#### 복잡한 프로젝트에 더 적합한 프로세스는 무엇입니까?
계층적 프로세스는 다음과 같은 이유로 복잡한 프로젝트에 더 적합합니다:
- **동적 작업 할당과 위임**: 매니저 에이전트가 에이전트의 역량에 따라 작업을 할당할 수 있음
- **구조화된 검증과 감독**: 매니저 에이전트가 작업 결과를 검토하고 완료를 보장함
- **복잡한 작업 관리**: 에이전트 수준에서의 도구 사용 제어 등 세밀한 관리 가능
</Accordion>
<Accordion title="CrewAI 프레임워크에서 메모리를 사용할 때의 이점은 무엇입니까?">
- **적응적 학습**: crew는 시간이 지날수록 더 효율적으로 적응하며, 새로운 정보에 맞춰 작업 방식을 개선하게 됩니다.
- **개인화된 경험 강화**: 메모리를 통해 에이전트가 사용자 선호도나 과거 상호작용을 기억하여 더욱 개인화된 경험을 제공합니다.
- **문제 해결력 향상**: 풍부한 메모리 접근을 통해 과거의 학습이나 맥락적 인사이트를 적용하여 에이전트가 더 나은 결정을 내릴 수 있습니다.
</Accordion>
<Accordion title="에이전트의 최대 RPM 제한을 설정하는 목적은 무엇입니까?">
에이전트의 최대 RPM 제한을 설정하면 외부 서비스에 과도하게 요청을 보내지 않도록 하여, 제한에 걸리는 일을 예방하고 성능을 향상시킬 수 있습니다.
</Accordion>
<Accordion title="CrewAI crew 내에서 작업 실행 시 인간 입력은 어떤 역할을 하나요?">
인간 입력을 통해 에이전트는 필요할 때 추가 정보나 설명을 요청할 수 있습니다. 이 기능은 복잡한 의사결정 과정이나, 에이전트가 작업을 효과적으로 완료하는 데 더 많은 세부 정보가 필요할 때 매우 중요합니다.
에이전트 실행에 인간 입력을 통합하려면 작업 정의에서 `human_input` 플래그를 설정하세요. 활성화하면, 에이전트가 최종 답변을 제공하기 전에 사용자에게 입력을 요청합니다. 이 입력은 추가 맥락을 제공하거나, 애매함을 해소하거나, 에이전트의 출력을 검증해야 할 때 활용될 수 있습니다.
자세한 구현 방법은 [Human-in-the-Loop 가이드](/ko/how-to/human-in-the-loop)를 참고해 주세요.
</Accordion>
<Accordion title="CrewAI에서 에이전트의 행동과 역량을 맞춤화하고 향상시키기 위한 고급 커스터마이징 옵션에는 어떤 것이 있나요?">
CrewAI는 다양한 고급 커스터마이징 옵션을 제공합니다:
- **Language Model 커스터마이징**: 에이전트별로 특정 language model(`llm`) 및 function-calling language model(`function_calling_llm`)을 지정 가능
- **성능 및 디버깅 설정**: 에이전트의 성능을 조정하고 동작을 모니터링할 수 있음
- **Verbose 모드**: 에이전트의 작업 로그를 자세하게 기록하여 디버깅 및 최적화에 활용할 수 있음
- **RPM 제한**: 분당 최대 요청 수(`max_rpm`) 설정
- **최대 반복 횟수**: `max_iter` 속성으로 에이전트가 한 작업에서 허용되는 반복 횟수를 지정
- **위임 및 자율성 제어**: `allow_delegation` 속성(기본값: True)으로 에이전트의 위임 또는 질문 가능 여부 제어
- **인간 입력 통합**: 필요 시 추가 정보나 설명을 사용자에게 요청할 수 있음
</Accordion>
<Accordion title="에이전트 실행 시 어떤 상황에서 인간 입력이 특히 유용합니까?">
인간 입력이 특히 유용한 경우는 다음과 같습니다:
- **에이전트가 추가 정보나 설명이 필요할 때**: 에이전트가 애매하거나 불완전한 데이터를 만날 때
- **에이전트가 복잡하거나 민감한 결정을 내려야 할 때**: 윤리적이거나 미묘한 결정이 필요한 경우 인간 입력이 보조할 수 있음
- **에이전트 출력의 감독 및 검증이 필요할 때**: 결과 검증과 오류 방지에 도움
- **에이전트 행동을 커스터마이징 할 때**: 피드백을 통해 에이전트의 응답을 지속적으로 개선
- **오류 및 한계 식별 및 해결 시**: 에이전트의 한계점이나 오류를 인간 입력으로 해결 가능
</Accordion>
<Accordion title="crewAI에서 사용할 수 있는 메모리의 종류는 무엇입니까?">
CrewAI에서 제공되는 메모리의 종류는 다음과 같습니다:
- **단기 메모리**: 즉각적인 맥락을 위한 임시 저장소
- **장기 메모리**: 학습된 패턴 및 정보의 영구 저장소
- **엔티티 메모리**: 특정 엔티티와 그 속성에 집중하는 저장소
- **컨텍스추얼 메모리**: 상호작용 간 맥락을 유지하는 메모리
다른 메모리 유형에 대해 자세히 알아보려면:
<Card href="https://docs.crewai.com/concepts/memory" icon="brain">CrewAI 메모리</Card>
</Accordion>
<Accordion title="작업에서 Output Pydantic을 사용하는 방법은 무엇입니까?">
작업에서 Output Pydantic을 사용하려면, 해당 작업의 예상 결과를 Pydantic 모델로 정의해야 합니다. 빠른 예시는 다음과 같습니다:
<Steps>
<Step title="Pydantic 모델 정의하기">
```python
from pydantic import BaseModel
class User(BaseModel):
name: str
age: int
```
</Step>
<Step title="Output Pydantic으로 작업 생성하기">
```python
from crewai import Task, Crew, Agent
from my_models import User
task = Task(
description="Create a user with the provided name and age",
expected_output=User, # This is the Pydantic model
agent=agent,
tools=[tool1, tool2]
)
```
</Step>
<Step title="에이전트에서 output_pydantic 속성 설정">
```python
from crewai import Agent
from my_models import User
agent = Agent(
role='User Creator',
goal='Create users',
backstory='I am skilled in creating user accounts',
tools=[tool1, tool2],
output_pydantic=User
)
```
</Step>
</Steps>
에이전트가 항상 구조화된 출력을 내도록 만드는 방법 관련 튜토리얼은 아래 영상을 참고하세요:
<Frame>
<iframe
height="400"
width="100%"
src="https://www.youtube.com/embed/dNpKQk5uxHw"
title="YouTube video player" frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen></iframe>
</Frame>
</Accordion>
<Accordion title="CrewAI 에이전트를 위한 커스텀 도구는 어떻게 만들 수 있습니까?">
CrewAI에서 제공하는 `BaseTool` 클래스를 상속받아 커스텀 도구를 직접 만들거나, tool 데코레이터를 활용할 수 있습니다. 상속 방식은 `BaseTool`을 상속하는 새로운 클래스를 정의해 이름, 설명, 그리고 실제 논리를 처리하는 `_run` 메서드를 작성합니다. tool 데코레이터를 사용하면 필수 속성과 운영 로직만 정의해 바로 `Tool` 객체를 만들 수 있습니다.
<Card href="https://docs.crewai.com/how-to/create-custom-tools" icon="code">CrewAI 도구 가이드</Card>
</Accordion>
<Accordion title="전체 crew가 수행할 수 있는 분당 최대 요청 수는 어떻게 제한할 수 있나요?">
`max_rpm` 속성을 설정하면 crew 전체가 분당 보낼 수 있는 최대 요청 수를 제한할 수 있습니다. 이를 설정하면 개별 에이전트의 `max_rpm` 값보다 우선적으로 적용됩니다.
</Accordion>
</AccordionGroup>