데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      NVIDIA가 개발한 오픈 소스 툴킷: NeMo Guardrails 소개

      SSunny 25.01.17
      5,965 7 1
      DEVOTEE 요약
      NeMo Guardrails는 NVIDIA가 개발한 오픈 소스 툴킷으로, AI 애플리케이션의 안전성과 유용성을 보장하며, YAML 또는 Python 파일을 통해 AI의 대화 규칙을 정의하여 응답을 필터링하거나 수정할 수 있습니다. Amazon Bedrock에서도 제공되며, 사용자가 정의한 비즈니스 규칙에 따라 AI의 비윤리적 또는 유해한 콘텐츠 생성을 방지합니다. Python 패키지로 설치하여 다양한 AI 모델과 연동할 수 있도록 구성되어 있으며, 환경 변수로 민감한 정보를 설정할 수 있습니다.
      DEVOTEE 추천 블로그

      NeMo Guardrails는 NVIDIA가 개발한 오픈 소스 툴킷으로, 대규모 언어 모델(LLM)을 사용하는 AI 애플리케이션의 안전성과 유용성을 보장하기 위해 설계되었습니다.

      이 툴킷은 AI가 비윤리적이거나 유해한 콘텐츠를 생성하지 않도록 제한하며, 특정 비즈니스 규칙을 따르도록 제어할 수 있습니다.

      사용자는 YAML 또는 Python 파일을 통해 대화 규칙(Rails)을 정의하고, 이를 기반으로 AI 응답을 필터링하거나 수정할 수 있습니다.


      Amazon Bedrock에서 AI 안전 기능으로도 제공합니다.

      관련정보

      간단한 네모 가드레일 사용 방법에 대해 알아보겠습니다.

      Rail 정의

      Guardrails에서 사용되는 AI 모델과 작업 환경을 정의하는 데 yaml을 사용됩니다.

      이 파일은 Guardrails의 동작 방식을 설정하는 핵심 구성 요소로, AI 모델 유형, 엔진, 파라미터 등을 정의합니다.


      • Rails는 특정 시나리오에 대해 AI가 따라야 하는 규칙입니다.

      • Python 및 YAML 파일을 사용하여 대화 규칙을 정의합니다.

      기본 구조

      models:
        - type: main
          engine: openai
          model: gpt-3.5-turbo
          parameters:
            temperature: 0.7
            max_tokens: 1000
      
        - type: embeddings
          engine: openai
          model: text-embedding-ada-002
      
      app:
        settings:
          max_turns: 5
      • models: Guardrails에서 사용할 AI 모델을 정의합니다. 여러 개의 모델을 지정할 수 있으며, 각 모델은 역할에 따라 구분됩니다.

        • type: 주로 대화를 생성하거나 질문에 답변하는 주요 모델 정보

          • type: main: LLM 모델

          • type: embeddings: 검색 기반 작업에 사용되는 임베딩 모델.

        • engine: Guardrails가 사용할 API 또는 플랫폼을 지정합니다.

          • engine: openai: OpenAI의 API 사용.

          • engine: huggingface: Hugging Face의 모델 사용.

        • model: 사용할 모델 이름을 지정합니다.

          • model: gpt-3.5-turbo (OpenAI)

          • model: text-embedding-ada-002 (OpenAI)

        • parameters (선택 사항):모델의 동작을 제어하는 추가 파라미터를 정의합니다.

          • temperature: 응답의 다양성을 제어 (0.0 ~ 1.0).

          • max_tokens: 최대 생성 토큰 수.

          • top_p: 확률 분포 컷오프.

      • app : Guardrails 애플리케이션 전반의 동작을 설정합니다.

        • settings (선택 사항):

          • max_turns: 한 대화 세션에서의 최대 대화 턴 수.

      예제

      OpenAI API 기반 설정을 하려면 아래와 같이 작성합니다.

      models:
        - type: main
          engine: openai
          model: gpt-4
          parameters:
            temperature: 0.5
            max_tokens: 1500
      
        - type: embeddings
          engine: openai
          model: text-embedding-ada-002
      
      app:
        settings:
          max_turns: 10

      Hugging Face 모델 기반 설정은 엔진에 허깅페이스를 넣어주고 허깅페이스에서 지원하는 모델을 넣습니다.

      models:
        - type: main
          engine: huggingface
          model: gpt2
          parameters:
            temperature: 0.9
            max_tokens: 512
      
      app:
        settings:
          max_turns: 7

      yaml 작성 시 주의사항

      1. 엔진 및 모델 이름 일치: 엔진(engine)과 모델(model)의 이름은 지원되는 플랫폼의 정확한 모델 이름이어야 합니다.

      2. 파라미터 설정 유효성: 사용 중인 엔진에 따라 지원되지 않는 파라미터를 지정하면 에러가 발생할 수 있습니다.

      3. 환경 변수 활용: API 키와 같은 민감한 정보는 코드에서 직접 설정하지 않고, 환경 변수로 설정하여 os.environ 등을 통해 사용할 수 있습니다.

      사용 예시

      yaml 파일은 RailsConfig로 읽어 Guardrails 설정에 활용됩니다:

      yaml은 Guardrails 동작의 유연성과 확장성을 제공합니다.

      필요에 따라 다양한 엔진과 설정을 조합해 활용할 수 있습니다. rules.yaml 을 아래 내용을 작성합니다.

      conversation_rules:
        # 부적절한 요청 차단
        - user: "폭력적인 영화만 추천해 줘."
          bot: "죄송합니다. 폭력적인 영화 추천은 도와드릴 수 없습니다."
      
        # 특정 요청에 대해 미리 정의된 응답 제공
        - user: "가족 영화 추천해 줘."
          bot: |
            "가족과 함께 즐길 수 있는 영화 추천: 
            1. Finding Nemo 
            2. Toy Story 
            3. Coco"
      
        # 모델 응답의 부적합성 필터링
        - llm_response_contains: "18세 이상 관람가"
          action: replace_response
          response: |
            "죄송합니다. 해당 영화는 가족 관람이 어려운 등급입니다. 가족 영화 추천으로는 Finding Nemo, Toy Story, Coco를 추천합니다."

      가드레일 예시 (영화 추천 제한)

      이제 NeMo Guardrails를 설치해 보겠습니다. Python 패키지로 설치할 수 있습니다.

      설치 중 에러가 발생할 경우에는 git 주소를 이용하여 설치합니다.

      pip install nemo-guardrails
      pip install git+https://github.com/NVIDIA/NeMo-Guardrails.git

      가드레일 기본 코드 구조는 아래와 같습니다.

      from nemoguardrails import RailsApp
      
      # YAML로 정의된 Rails를 로드
      app = RailsApp(config="path/to/your/rails.yml")
      
      # 사용자 입력에 대한 응답 생성
      response = app.reply("Can you tell me a joke about politics?")
      
      print(response)

      허깅페이스의 무료 모델인 gpt2를 이용하여 영화 관련 질문이 나오면 답변을 하지 않는 가드레일 예제를 살펴보겠습니다.

      Hugging Face의 Transformers 라이브러리와 NeMo Guardrails를 활용하여 안전한 언어 모델(LLM) 응답을 생성해 보겠습니다.

      from transformers import pipeline
      from nemoguardrails import Rails
      
      # Hugging Face의 LLM 로드 (Hugging Face 허브에서 무료 모델 사용)
      generator = pipeline("text-generation", model="gpt2")  # gpt2는 무료 모델 중 하나
      
      # NeMo Guardrails 로드
      rails = Rails(app_path="path/to/rules.yaml")
      
      # LLM 호출 함수 정의
      def llm_response(prompt):
          try:
              response = generator(prompt, max_length=50, num_return_sequences=1)
              return response[0]["generated_text"].strip()
          except Exception as e:
              return f"Error: {str(e)}"
      
      # 사용자 요청 처리 함수
      def process_user_input(user_input):
          # NeMo Guardrails를 사용해 요청 처리
          final_response = rails.generate(bot_input=user_input, llm_callable=llm_response)
          return final_response
      
      # 테스트 실행
      if __name__ == "__main__":
          # 사용자 요청 예시
          user_input ="가족 영화 추천해 줘"  # 입력 예시: 사용자 요청
          response = process_user_input(user_input)
          print("최종 응답:", response) 
      '''
      최종 응답: 가족 영화 추천 목록:
      1. Finding Nemo
      2. Toy Story
      3. Coco
      '''
      • 'gpt2'라는 무료 텍스트 생성 모델을 Hugging Face에서 로드하고, NeMo Guardrails의 규칙을 설정합니다.

      • 'llm_response' 함수는 주어진 프롬프트를 사용해 LLM에서 텍스트를 생성하며, 최대 길이와 응답 수를 제한합니다.

      • 'process_user_input' 함수는 사용자 입력을 NeMo Guardrails를 통해 처리하여 안전하고 적절한 응답을 생성합니다.

      • 테스트로 "가족 영화 추천해 줘"라는 예시 입력을 사용하여 응답을 생성하고 출력합니다.

      이 스크립트는 LLM의 출력을 NeMo Guardrails로 필터링하여 안전하고 적절한 응답을 보장하며, 실제 구현 시 'rules.yaml' 파일의 규칙에 따라 응답이 조정됩니다.

      요건은 계속 yaml에 추가 할 수 있는 구조입니다. 만약 사용자가 “ 잔인한 영화 추천해줘” 라고 한다면 모델은 잔인한 영화를 추천할 것입니다.

      이런 경우 yaml에 아래와 같이 룰을 추가합니다.

       conversation_rules:
        # 잔인한 영화 요청 차단
        - user: "잔인한 영화 추천해줘"
          bot: "죄송합니다. 잔인한 영화 추천은 도와드릴 수 없습니다."

      마무리

      엔비디아의 네모 가드레일은 llm의 입력과 출력에 관여하여 사용자가 yaml에 작성한 제한 조건을 이름처럼 막는 방법입니다.

      직관적인 방법으로 yaml에 원하는 정보를 넣는 방식으로 알아보았습니다.

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      SSunny 님의 최신 블로그

      더보기

      DEVOTEE 추천 블로그

      동영상 기고하기