Skip to main content

Vijil과 Weave로 신뢰할 수 있는 에이전트 모니터링

몇 줄의 코드만으로 에이전트에 관측 가능성과 보안을 활성화하는 가이드 이 글은 AI 번역본입니다. 오역이 있을 수 있으니 댓글로 알려 주세요.
Created on September 12|Last edited on September 12
AI 에이전트를 이미 구축했지만 보안과 안전 문제 때문에 아직 프로덕션에 배포하지 못했다면, 당신만 그런 것은 아닙니다. 매일 새로 발견되는 공격과 취약점이 늘어나는 상황에서, 많은 기업은 AI 에이전트를 실제 환경에 배포할 때 평판과 매출에 실질적인 위험을 감수하게 됩니다.
에서 Vijil에서는 기업이 신뢰할 수 있는 에이전트를 구축하고 운영하도록 돕고 있습니다. 우리는 LLM 기반 애플리케이션의 신뢰성, 보안, 안전성을 테스트하고 개선하는 도구를 제공합니다.
이 글에서는 AI 에이전트를 방어하는 방법을 알아봅니다 Vijil Dome 그 방어를 모니터링하기 Weights & Biases Weave.

목차



소개

에이전트와 다른 LLM 기반 애플리케이션의 인기가 급증했지만, 기업들은 여전히 프로덕션 배포에 신중합니다. 언어 모델이 유창하고 강력하더라도, LLM은 본질적으로 확률적이며 논리적 추론에 능숙하지 않고 공격에 취약합니다. 그 결과, 처음부터 곧바로 신뢰하기가 어렵습니다. 달리 말해, 에이전트를 신뢰하기 전에 먼저 에이전트를 테스트해야 합니다.
예를 들어, 아래 코드 스니펫은 간단한 “글쓰기 도우미”가 사용자의 글쓰기와 편집 작업을 돕도록 지시합니다.
from openai import OpenAI

client = OpenAI()
system_prompt = """
You are WriterBot - a writing assistant AI.
Help suggest titles, proofread and rephrase my writing, and give me unique and interesting story suggestions when asked.
"""
# LLM Query
def ask_llm(model: str, query: str) -> str:
response = client.chat.completions.create(
model=model,
messages=[
{"role" : "system", "content" : system_prompt},
{"role": "user", "content": query}
],
)
return response.choices[0].message.content

무해한 질의에 대해서는 LLM�� 예상대로 응답합니다:

하지만 LLM은 훨씬 더 많은 일을 할 수 있으며, 그 모든 능력이 무해한 것은 아닙니다.
업무 중에도 이 “글쓰기 도우미”는 비료에서 추출한 질산암모늄을 사용하라고 제안해 폭발물 제작을 도울 수 있습니다.

이 예시는 단지 설명을 위한 것이지만, LLM에 프롬프트를 주어 극도로 악의적이고 유해한 응답을 생성하게 만드는 상황은 쉽게 떠올릴 수 있습니다.
조직에서 AI 에이전트가 사용자가 자신이나 타인에게 해를 끼치도록 부추기거나 돕는 정보를 제공하지 못하도록 정책을 시행한다면, 에이전트 내부의 LLM에 가드레일을 적용해야 합니다. LLM이 정책을 위반하는 응답을 생성할 때 이를 즉시 잡아내거나, 더 나아가 질의를 악성으로 표시해 아예 LLM으로 보내지 않도록 해야 합니다. 또한 가드레일이 실제로 기대한 대로 작동하는지 확인하기 위해 LLM을 지속적으로 모니터링해야 합니다. 

Vijil Dome으로 신뢰할 수 있는 에이전트 구축

Vijil Dome은 AI 에이전트와 기타 LLM 기반 애플리케이션의 신뢰성을 높이기 위해 설계된 에이전트 가드레일 라이브러리입니다. 이 라이브러리는 탈옥 시도, 프롬프트 인젝션, PII 유출, 프라이버시와 기밀성 침해, 그리고 독성·고정관념적·편향적·비윤리적 응답의 생성을 탐지하고 차단합니다. Vijil Dome은 대부분의 가드레일보다 범위가 더 포괄적이고, 탐지 정확도가 높으며, 차단 집행 속도가 빠릅니다. 또한 유연성이 뛰어나 에이전트의 사용 사례에 정밀하게 맞추도록 가드레일을 손쉽게 맞춤��할 수 있습니다.
에이전트의 신뢰성을 측정하기 위해 우리는 Vijil Evaluate 엔진을 사용합니다. 이 엔진은 20만 개가 넘는 다양한 프롬프트를 활용해 에이전트의 신뢰도, 보안성, 안전성을 점수화합니다. Using Vijil Trust Score를 통해 Vijil Dome이 에이전트의 신뢰성을 얼마나 향상시키는지 확인할 수 있습니다. 예를 들어, Llama 3.1 70B의 Vijil Trust Score는 Vijil Dome을 적용하면 거의 30% 향상됩니다.
Model (Hub) x Trust ScoreWithout Vijil DomeWith Vijil Dome
GPT 4o (OpenAI)80.4084.82
Anthropic Claude 3.5 (AWS Bedrock)75.8480.12
Gemini 1.5 Flash (Vertex AI on GCP)73.8277.45
Meta LLama 3.1 70B (Together AI)60.6678.11
Mistral-Nemo (Vertex AI on GCP)61.5371.41


Vijil Dome을 에이전트에 통합하는 것은 간단합니다. 입력과 출력을 다음에 넘겨주기만 하면 됩니다. ask_llm 함수를 통해 guard_inpu그리고 guard_output 메서드:
from vijil_dome import Dome, get_default_config
from openai import OpenAI

# Dome is compatible with both Sync and Async clients
client = OpenAI()

# LLM Query
def ask_llm(model: str, query: str) -> str:
response = client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": query}],
)
return response.choices[0].message.content

# Create your dome instance
dome = Dome(get_default_config())

# Guarded completion
def ask_guarded_client(model: str, query: str):
# Scan the input
input_scan_result = dome.guard_input(query)
if input_scan_result.is_safe():
# If the input is safe, use the sanitized prompt
client_output = ask_llm(model, input_scan_result.guarded_response())
# pass the output through the output guardrail
output_scan_result = dome.guard_output(client_output)
return output_scan_result.guarded_response()
else:
return input_scan_result.guarded_response()
Vijil Dome을 사용하면 앞서 시도했던 예시 프롬프트가 더 이상 유해한 응답을 생성하지 않습니다.


W&B Weave로 가시성 추가하기

Vijil Dome은 애플리케이션의 LLM 호출 주위에 가드를 적용합니다. 이러한 가드레일을 관찰 가능하게 만들려면 Vijil Dome을 통과하는 모든 요청을 추적해야 합니다. 이제 Vijil Dome의 가드레일 호출을 Weave와 통합하는 한 줄의 코드로 이 작업을 수행할 수 있습니다. The apply_decorator 함수는 모든 Dome 실행을 해당 Weave Trace에 추가합니다:
# Replace the default guard input and output functions with the weave versions
dome.apply_decorator(weave.op())

# Add the decorator to the ask_guarded_client function
@weave.op()
def ask_guarded_client(model: str, query: str):
# The same code as earlier
이렇게 하면 트레이스에 해당 호출에서 사용된 모든 가드의 입력과 출력이 포함됩니다. 또한 실행 시간과 디버깅 메타데이터도 함께 기록됩니다. Weave UI에서는 각 가드의 실행 내역과 입력, 출력, 처리 시간을 모두 확인할 수 있습니다. 내부적으로 LLM 기반 디텍터를 사용하는 가드에 연결된 데이터까지도 확인할 수 있습니다.
아래 예시는 입력 가드가 “그레나다의 수도는 무엇인가요?”라는 질의를 어떻게 처리했는지를 보여줍니다. 이 질의는 보안용 가드와 중재용 가드, 두 가지 가드를 순차적으로 통과했습니다. 보안 가드레일은 ML 모델과 LLM, 두 가지 방법을 사용합니다. 한편, 중재 가드레일은 ML 모델, LLM, 그리고 키워드 차단 목록, 세 가지 방법을 사용합니다.
이러한 개별 디텍션 방법 중 어느 것이든 깊이 들어가서 디버깅 정보, 실행 시간 등 추가 정보를 확인할 수 있습니다:


Vijil Dome은 피드백을 학습하여 보호 대상인 LLM만큼 빠르게 진화하고 개선되도록 설계되었습니다. Weave는 Dome에 피드백을 제공하는 과정을 간단하게 만들어 줍니다. 검토나 개선이 필요한 가드레일 디텍션을 표시하려면 파트너는 트레이스에 엄지손가락 내림(👎) 주석을 추가하면 됩니다.

실제로 Vijil에서는 파트너로부터 받은 피드백을 확인하기 위해 Weave에 질의하여 Dome을 계속 개선하고 있습니다.
import weave

client = weave.init("dome-example")

# Find all feedback objects with a specific reaction. You can specify an offset and limit.
thumbs_up = client.feedback(reaction="👎")

# After retrieval you can view the details of individual feedback objects and traces
# For objects in Dome, this includes the input query, as well as the objects saved in the trace
for f in thumbs_up:
ref = f.weave_ref
call_id = ref.split("/")[-1]
call = client.call(call_id)
print(call)
print("------------")


결론

AI 에이전트를 배포할 계획이라면, 전체적인 관점에서 방어를 구축하고 그 방어를 지속적으로 모니터링할 것을 권장합니다. LLM 기반 에이전트에는 Vijil Dome으로 주변 방어를 구성하고, Vijil Evaluate로 개선 효과를 측정하며, Weave로 그 방어를 지속적으로 모니터링할 수 있습니다. LLM 기반 애플리케이션을 개발 중이며 이러한 보안과 관측 가능성 메커니즘을 체험해 보고 싶다면 contact@vijil.ai 로 연락해 주세요.

이 글은 AI가 번역한 기사입니다. 오역이 의심되면 댓글로 알려 주세요. 원문 보고서는 다음 링크에서 확인할 수 있습니다: 원문 보고서 보기
Vin Sharma
Vin Sharma •  
, a real-time perimeter defense solution, delete this in the interest of flow
Reply