Files
pipeline/OPENCLAW_INTEGRATION.md
T
chpark 37cac72085 refactor: Pipeline 네이밍 통일 및 AI 에이전트/장비 연결 기능 추가
- Docker/K8s 배포 설정을 pipeline-backend/pipeline-front로 통일
- 네임스페이스, 서비스, PVC 등 k8s 리소스명 pipeline-* 로 변경
- AI 에이전트 관리 기능 추가 (에이전트, 그룹, 프로바이더, 대화, API 키, 지식베이스)
- 장비 연결 관리 기능 추가 (PLC/Modbus/OPC-UA/MQTT)
- 배치 스케줄러에 AI agent/device collection/crawling 타입 추가
- 배치 편집 UI 개선 (6가지 실행 방식 지원)
- 회사별 페이지(COMPANY_*) 제거 및 AdminPageRenderer 최적화
- 메뉴 재구성: 장비 연결 관리 시스템관리로 이동, 에이전트 오케스트레이션으로 개명
- ai-assistant 디렉토리 제거 (backend-node로 통합)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 12:14:50 +09:00

182 lines
5.8 KiB
Markdown

# OpenClaw 멀티 에이전트 AI 통합
## 개요
Pipeline 프로젝트에 OpenClaw 멀티 에이전트 AI 플랫폼을 빌트인으로 통합했습니다.
Pipeline UI에서 에이전트 생성/관리, API 키 발급, 대화 모니터링, 사용량 추적이 가능하며,
외부 서비스에서 Pipeline이 발급한 API 키로 에이전트를 사용할 수 있습니다.
## 아키텍처
```
외부 서비스 (ERP, MES, 물류 등)
│ POST /api/ai/v1/chat/completions
│ Authorization: Bearer sk-pipe-xxxxx
Pipeline Backend (:8080)
├── 인증 (JWT 또는 API Key)
├── Rate Limit 체크
├── 프록시 → OpenClaw Gateway (:18789)
├── 응답 로깅 (토큰, 비용)
└── DB 저장 (PostgreSQL)
OpenClaw Gateway (내장 프로세스)
├── Agent A (데이터 분석)
├── Agent B (보고서 작성)
├── Agent C (모니터링)
└── LLM: Claude / GPT / Ollama
```
## DB 테이블
| 테이블 | 용도 |
|--------|------|
| `ai_agents` | 에이전트 정의 (이름, 모델, 시스템프롬프트, 도구, 상태) |
| `ai_agent_api_keys` | 외부 서비스용 API 키 (해시 저장, 사용량 제한) |
| `ai_agent_conversations` | 대화 세션 |
| `ai_agent_messages` | 대화 메시지 |
| `ai_agent_usage_logs` | 토큰 사용량, 비용, 응답시간 로그 |
| `ai_llm_providers` | LLM API 키 관리 (암호화 저장) |
## API 엔드포인트
### 에이전트 관리 (Pipeline JWT 인증)
```
GET /api/ai-agents 에이전트 목록
GET /api/ai-agents/:id 에이전트 상세
POST /api/ai-agents 에이전트 생성
PUT /api/ai-agents/:id 에이전트 수정
DELETE /api/ai-agents/:id 에이전트 삭제
```
### API 키 관리 (Pipeline JWT 인증)
```
GET /api/ai-agents/keys/list 키 목록
POST /api/ai-agents/keys 키 발급 (sk-pipe-xxx 형태, 한 번만 노출)
DELETE /api/ai-agents/keys/:id 키 폐기
```
### LLM 프로바이더 관리 (Pipeline JWT 인증)
```
GET /api/ai-agents/providers/list 프로바이더 목록
POST /api/ai-agents/providers 프로바이더 추가 (API 키 암호화 저장)
PUT /api/ai-agents/providers/:id 프로바이더 수정
DELETE /api/ai-agents/providers/:id 프로바이더 삭제
```
### 대화 모니터링 (Pipeline JWT 인증)
```
GET /api/ai-agents/conversations/list 대화 목록 (페이징)
GET /api/ai-agents/conversations/:id 대화 + 메시지 상세
```
### 사용량 (Pipeline JWT 인증)
```
GET /api/ai-agents/usage/summary 요약 (오늘/이번달 토큰, 비용)
GET /api/ai-agents/usage/logs 상세 로그 (페이징)
GET /api/ai-agents/usage/daily 일별 차트 데이터
```
### 외부 서비스용 프록시 (API Key 인증)
```
POST /api/ai/v1/chat/completions OpenAI 호환 채팅 (스트리밍 지원)
GET /api/ai/v1/models 사용 가능 모델 목록
GET /api/ai/v1/health Gateway 상태
```
## 외부 서비스에서 사용하기
### 1. API 키 발급
Pipeline 관리자 화면 > AI 에이전트 > API 키 관리에서 키를 발급합니다.
`sk-pipe-xxxxxxxx` 형태의 키가 생성되며, 최초 1회만 노출됩니다.
### 2. 채팅 API 호출
```bash
curl -X POST https://pipeline.example.com/api/ai/v1/chat/completions \
-H "Authorization: Bearer sk-pipe-xxxxx" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-20250514",
"messages": [
{"role": "user", "content": "매출 데이터를 분석해줘"}
]
}'
```
### 3. 응답 형태 (OpenAI 호환)
```json
{
"id": "chatcmpl-xxx",
"object": "chat.completion",
"model": "claude-sonnet-4-20250514",
"choices": [{
"index": 0,
"message": { "role": "assistant", "content": "매출 데이터 분석 결과..." },
"finish_reason": "stop"
}],
"usage": {
"prompt_tokens": 15,
"completion_tokens": 200,
"total_tokens": 215
}
}
```
## 프론트엔드 관리 화면
| 경로 | 기능 |
|------|------|
| `/admin/aiAssistant/agents` | 에이전트 CRUD (카드형 목록) |
| `/admin/aiAssistant/providers` | LLM API 키 등록/관리 |
| `/admin/aiAssistant/conversations` | 대화 모니터링 (메시지 열람) |
| `/admin/aiAssistant/api-keys` | 외부 서비스용 API 키 발급 |
| `/admin/aiAssistant/usage` | 사용량 대시보드 |
## 환경 변수
```env
# OpenClaw Gateway 포트 (기본: 18789)
OPENCLAW_GATEWAY_PORT=18789
# OpenClaw 활성화 여부 (기본: true)
OPENCLAW_ENABLED=true
```
## 파일 구조
```
backend-node/src/
├── controllers/aiAgentController.ts # 에이전트/키/프로바이더/대화/사용량 컨트롤러
├── services/
│ ├── aiAgentService.ts # 에이전트 CRUD
│ ├── aiAgentApiKeyService.ts # API 키 발급/검증
│ ├── aiAgentProviderService.ts # LLM 프로바이더 관리
│ ├── aiAgentConversationService.ts # 대화 로깅
│ └── aiAgentUsageService.ts # 사용량 추적
├── routes/
│ ├── aiAgentRoutes.ts # 관리 API 라우트
│ └── openClawProxyRoutes.ts # 외부 서비스 프록시
├── middleware/
│ └── aiApiKeyAuthMiddleware.ts # API 키 인증
├── utils/startOpenClaw.ts # Gateway 프로세스 관리
├── types/aiAgent.ts # TypeScript 타입
└── db/migrations/
└── 300_create_openclaw_tables.sql # 마이그레이션
frontend/
├── lib/api/aiAgent.ts # API 클라이언트
└── app/(main)/admin/aiAssistant/
├── agents/page.tsx # 에이전트 관리
├── providers/page.tsx # 프로바이더 관리
└── conversations/page.tsx # 대화 모니터링
```