n8n + ollama + chatGPT 사용해보기

한라산·2024년 9월 1일
1
post-thumbnail

노코드캣님의 n8n 영상을 보고 따라해보았다.

n8n이란?

n8n은 강력하고 유연한 워크플로우 자동화 도구다.

  • 노드 기반 워크플로우 자동화 도구
  • 다양한 앱과 서비스를 API를 통해 연결하고 데이터를 조작가능
  • 무료로도 사용 가능한 오픈 소스 솔루션

설치하기

준비물 : Docker, Ollama

git clone

n8n ai starter kit github
에가서 자신의 환경에 맞는 방식으로 clone을 받는다.

$ git clone https://github.com/n8n-io/self-hosted-ai-starter-kit.git

docker-compose.yml 수정

ollama까지 한번에 컨테이너에 올리는게 아닌 로컬의 ollama를 사용할 것이기 때문에 docker-compse.yml를 다음과 같이 수정한다.
(ollama도 한번에 하려면 그대로 해도 무관하다.)

volumes:
  n8n_storage:
  postgres_storage:
  ollama_storage:
  qdrant_storage:

networks:
  demo:

x-n8n: &service-n8n
  image: n8nio/n8n:latest
  networks: ['demo']
  environment:
    - DB_TYPE=postgresdb
    - DB_POSTGRESDB_HOST=postgres
    - DB_POSTGRESDB_USER=${POSTGRES_USER}
    - DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD}
    - N8N_DIAGNOSTICS_ENABLED=false
    - N8N_PERSONALIZATION_ENABLED=false
    - N8N_ENCRYPTION_KEY
    - N8N_USER_MANAGEMENT_JWT_SECRET
  links:
    - postgres

services:
  postgres:
    image: postgres:16-alpine
    networks: ['demo']
    restart: unless-stopped
    environment:
      - POSTGRES_USER
      - POSTGRES_PASSWORD
      - POSTGRES_DB
    volumes:
      - postgres_storage:/var/lib/postgresql/data
    healthcheck:
      test: ['CMD-SHELL', 'pg_isready -h localhost -U ${POSTGRES_USER} -d ${POSTGRES_DB}']
      interval: 5s
      timeout: 5s
      retries: 10

  n8n-import:
    <<: *service-n8n
    container_name: n8n-import
    entrypoint: /bin/sh
    command:
      - "-c"
      - "n8n import:credentials --separate --input=/backup/credentials && n8n import:workflow --separate --input=/backup/workflows"
    volumes:
      - ./n8n/backup:/backup
    depends_on:
      postgres:
        condition: service_healthy

  n8n:
    <<: *service-n8n
    container_name: n8n
    extra_hosts:
      - "host.docker.internal:host-gateway"
    restart: unless-stopped
    ports:
      - 5678:5678
    volumes:
      - n8n_storage:/home/node/.n8n
      - ./n8n/backup:/backup
      - ./shared:/data/shared
    depends_on:
      postgres:
        condition: service_healthy
      n8n-import:
        condition: service_completed_successfully

  qdrant:
    image: qdrant/qdrant
    container_name: qdrant
    networks: ['demo']
    restart: unless-stopped
    ports:
      - 6333:6333
    volumes:
      - qdrant_storage:/qdrant/storage

ollama 컨테이너에 대한 내용을 제거하고 컨테이너가 host에 접근할 수 있게 했다.

실행하기

docker 실행

docker가 설치되어있지만 docker compose 명령어가 없다면 docker 버전을 확인해보자

$ docker compose up -d

로컬 n8n 접속

http://localhost:5678

접속 후 대충 사용할 계정을 생성하고 로그인(귀찮게 비밀번호 검증도 있음)

유튜브 따라한 결과물

$ curl http://localhost:5678/webhook-test/youtube\?url\=https://www.youtube.com/watch\?v\=AmwEIt0vhxA

요청을 보내면 url의 영상을 읽어서 요약/관련 링크를 최대 3개 알려준다.

응답은 다음과 같다.

{
  "response": {
    "text": "'팩토리 패턴'(Factory Pattern)란 프로그래밍에서 특정 오브젝트를 생성하는 공장 클래스를 의미하며, 클라이언트가 직접 오브젝트의 복잡한 생성 과정을 관리하지 않고 팩토리가 이를 관리하는 방식입니다. 이 패턴은 고양이와 강아지와 같은 오브젝트를 클라이언트에게 제공할 때 유용합니다."
  },
  "output": [
    {
      "title": "Factory Method Pattern – Design Patterns (ep 4)",
      "link": "https://www.youtube.com/watch?v=EcFVTgRHJLM"
    },
    {
      "title": "Factory Method Design Pattern | C#",
      "link": "https://www.youtube.com/watch?v=5RrR6MaimT0"
    },
    {
      "title": "Factory Design Pattern in Java Explained in 3 Minutes",
      "link": "https://www.youtube.com/watch?v=a7U4fj_kV1U"
    }
  ]
}

로컬 ollama 주의사항

로컬의 ollama 모델을 사용하려면 docker-compose에 설정해준 host.docker.internal에 요청을 보내게 해야한다.
이렇게해야 n8n 컨테이너호스트에서 실행중인 ollama에 요청을 보낼 수 있다.

로컬 모델의 문제

테스트를 하다가 두 가지 문제가 발생했다.

  • 하드웨어 성능 문제 - 내 경우 M1 맥북 프로라서 로컬 모델의 처리 속도가 좀 느렸다.
  • 모델 성능 문제 - llama3.1 8B모델을 사용했는대 대규모 모델에 비해 파라미터 수가 작다. 그래서 한번에 처리가능한 토큰수가 현저히 낮다.
    즉, 메모리 한계로 인한 장기 의존성 문제(망각)가 발생하여 너무 긴 컨텍스트의 경우 원하는 결과를 얻지 못했다.

위 문제의 보완하기 위해 일부는 OpenAI API를 사용했다.

webhook을 활용한 api

영상을 따라하고 이걸 API 처럼 사용하고 싶어서 webhook 노드를 적용해봤다.

webhook 트리거

url에 유튜브영상 주소를 보내면 후속 작업을 실행 후 응답을 준다.

webhook response

Response Body를 다르게 작성하고 싶었지만 잘 안돼서 통짜로 응답을 보내게 했다.

이외는 영상의 내용과 동일하다.

마치며

지금까지 AI를 어떻게 활용하면 좋을지를 잘 몰랐는대
이번에 방향성을 알게된 것 같다.
AI 외에도 n8n이란 멋진 서비스를 알게돼서 좋았다.
온보딩 자동화, 프로세스의 시각화 등등

profile
산입니다.

3개의 댓글

comment-user-thumbnail
2024년 12월 5일

미니피씨에 ollama 버전으로 n8n 재설치할려고 했는데 m1 맥북프로에도 성능이 부족하다고 하니 그냥 마음 접어야 겠네요! ㅜ,.ㅜ

1개의 답글