23.06.15
DEVOTEE를 활성화 시키면
지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.
버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.
| 컨텐츠 유형 | 제목 | 저장일 | 삭제 |
|---|
본인인증 로그인에 실패하였습니다.
회원이 아니시거나 본인인증 등록이
완료되지 않은 사용자입니다.
NeMo Guardrails는 NVIDIA가 개발한 오픈 소스 툴킷으로, 대규모 언어 모델(LLM)을 사용하는 AI 애플리케이션의 안전성과 유용성을 보장하기 위해 설계되었습니다.
이 툴킷은 AI가 비윤리적이거나 유해한 콘텐츠를 생성하지 않도록 제한하며, 특정 비즈니스 규칙을 따르도록 제어할 수 있습니다.
사용자는 YAML 또는 Python 파일을 통해 대화 규칙(Rails)을 정의하고, 이를 기반으로 AI 응답을 필터링하거나 수정할 수 있습니다.
Amazon Bedrock에서 AI 안전 기능으로도 제공합니다.
관련정보
간단한 네모 가드레일 사용 방법에 대해 알아보겠습니다.
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: 5models: 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: 10Hugging Face 모델 기반 설정은 엔진에 허깅페이스를 넣어주고 허깅페이스에서 지원하는 모델을 넣습니다.
models:
- type: main
engine: huggingface
model: gpt2
parameters:
temperature: 0.9
max_tokens: 512
app:
settings:
max_turns: 7엔진 및 모델 이름 일치: 엔진(engine)과 모델(model)의 이름은 지원되는 플랫폼의 정확한 모델 이름이어야 합니다.
파라미터 설정 유효성: 사용 중인 엔진에 따라 지원되지 않는 파라미터를 지정하면 에러가 발생할 수 있습니다.
환경 변수 활용: 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에 원하는 정보를 넣는 방식으로 알아보았습니다.
DEVOTEE를 활성화 시키면
지금 작성한 댓글에 AI가 댓글을 달아줍니다.