Guardrails API

Checks Guardrails API พร้อมใช้งานในเวอร์ชันอัลฟ่าใน เวอร์ชันตัวอย่างแบบจำกัดผู้ใช้งานแล้ว ขอสิทธิ์เข้าถึงเวอร์ชันตัวอย่างแบบจำกัดผู้ใช้งานโดยใช้แบบฟอร์มแสดงความสนใจ

Guardrails API เป็น API ที่ช่วยให้คุณตรวจสอบได้ว่าข้อความอาจเป็นอันตรายหรือไม่ปลอดภัย คุณสามารถใช้ API นี้ในแอปพลิเคชัน GenAI เพื่อป้องกันไม่ให้ผู้ใช้พบเนื้อหาที่เป็นอันตรายที่อาจเป็นอันตราย

วิธีใช้ Guardrails

ใช้ Checks Guardrails กับอินพุตและเอาต์พุตของ GenAI เพื่อตรวจหาและลดข้อความที่ละเมิดนโยบาย

แผนภาพแสดงวิธีใช้ Guardrails API ในแอป AI

เหตุผลที่ควรใช้ Guardrails

บางครั้ง LLM อาจสร้างเนื้อหาที่อาจเป็นอันตรายหรือไม่เหมาะสม การผสานรวม Guardrails API เข้ากับแอปพลิเคชัน GenAI มีความสำคัญอย่างยิ่งในการรับประกันการใช้โมเดลภาษาขนาดใหญ่ (LLM) อย่างมีความรับผิดชอบและปลอดภัยยิ่งขึ้น โดยจะช่วยลดความเสี่ยงที่เกี่ยวข้องกับเนื้อหาที่สร้างขึ้นด้วยการกรองเอาต์พุตที่อาจเป็นอันตรายออกไปหลากหลายประเภท ซึ่งรวมถึงภาษาที่ไม่เหมาะสม ข้อความที่เลือกปฏิบัติ และเนื้อหาที่อาจก่อให้เกิดอันตราย ซึ่งไม่เพียงแต่ปกป้องผู้ใช้เท่านั้น แต่ยังช่วยปกป้องชื่อเสียงของแอปพลิเคชันและส่งเสริมความไว้วางใจในกลุ่มเป้าหมายด้วย Guardrails ให้คุณสร้างแอปพลิเคชัน GenAI ที่ทั้งล้ำสมัยและปลอดภัยยิ่งขึ้นด้วยการให้ความสำคัญกับความปลอดภัยและความรับผิดชอบ

เริ่มต้นใช้งาน

คู่มือนี้จะอธิบายวิธีการใช้ Guardrails API เพื่อตรวจหาและกรองเนื้อหาที่ไม่เหมาะสมในแอปพลิเคชัน API มีนโยบายที่ฝึกไว้ล่วงหน้าหลากหลายรายการที่สามารถระบุเนื้อหาที่อาจเป็นอันตรายประเภทต่างๆ ได้ เช่น วาจาสร้างความเกลียดชัง ความรุนแรง และเนื้อหาเกี่ยวกับเรื่องเพศอย่างโจ่งแจ้ง นอกจากนี้ คุณยังปรับแต่งลักษณะการทำงานของ API ได้ด้วยการตั้งค่าเกณฑ์สำหรับแต่ละนโยบาย

ข้อกำหนดเบื้องต้น

  1. โปรเจ็กต์ที่อยู่ในระบบคลาวด์ของ Google ต้องได้รับการอนุมัติสำหรับ Checks AI Safety เวอร์ชันตัวอย่างแบบจำกัดผู้ใช้งาน หากยังไม่ได้ดำเนินการ โปรดขอสิทธิ์เข้าถึงโดยใช้ แบบฟอร์มแสดงความสนใจ
  2. เปิดใช้ Checks API
  3. ตรวจสอบว่าคุณส่งคำขอที่ได้รับอนุญาตได้โดยใช้ คู่มือการให้สิทธิ์

นโยบายที่รองรับ

ชื่อนโยบาย คำอธิบายของนโยบาย ค่า Enum ของ API ประเภทนโยบาย
เนื้อหาที่เป็นอันตราย เนื้อหาที่อำนวยความสะดวก ส่งเสริม หรืออนุญาตให้เข้าถึงสินค้า บริการ และกิจกรรมที่เป็นอันตราย DANGEROUS_CONTENT
การชักชวนให้ส่งและเปิดเผย PII เนื้อหาที่ชักชวนให้ส่งหรือเปิดเผยข้อมูลส่วนบุคคลที่ละเอียดอ่อนหรือข้อมูลของบุคคล PII_SOLICITING_RECITING
การคุกคาม เนื้อหาที่เป็นอันตราย ข่มขู่ กลั่นแกล้ง หรือละเมิดบุคคลอื่น HARASSMENT
เกี่ยวกับเรื่องเพศอย่างโจ่งแจ้ง เนื้อหาที่มีลักษณะเกี่ยวกับเรื่องเพศอย่างโจ่งแจ้ง SEXUALLY_EXPLICIT
วาจาสร้างความเกลียดชัง เนื้อหาที่โดยทั่วไปถือว่าเป็นวาจาสร้างความเกลียดชัง HATE_SPEECH
ข้อมูลทางการแพทย์ ไม่อนุญาตให้แสดงเนื้อหาที่อำนวยความสะดวก ส่งเสริม หรืออนุญาตให้เข้าถึงคำแนะนำหรือคำแนะนำทางการแพทย์ที่เป็นอันตราย MEDICAL_INFO
ความรุนแรงและเนื้อหาน่าหวาดกลัว เนื้อหาที่มีคำอธิบายความรุนแรงและ/หรือเนื้อหาน่าหวาดกลัวที่สมจริงโดยไม่จำเป็น VIOLENCE_AND_GORE
ลามกอนาจารและคำหยาบคาย ไม่อนุญาตให้แสดงเนื้อหาที่มีภาษาหยาบโลน หยาบคาย หรือไม่เหมาะสม OBSCENITY_AND_PROFANITY

ข้อมูลโค้ด

Python

ติดตั้งไคลเอ็นต์ Google API Python โดยเรียกใช้ pip install google-api-python-client


  import logging
  from google.oauth2 import service_account
  from googleapiclient.discovery import build

  SECRET_FILE_PATH = 'path/to/your/secret.json'

  credentials = service_account.Credentials.from_service_account_file(
      SECRET_FILE_PATH, scopes=['https://www.googleapis.com/auth/checks']
  )

  service = build('checks', 'v1alpha', credentials=credentials)

  request = service.aisafety().classifyContent(
      body={
          'input': {
              'textInput': {
                  'content': 'Mix, bake, cool, frost, and enjoy.',
                  'languageCode': 'en',
              }
          },
          'policies': [
              {'policyType': 'DANGEROUS_CONTENT'}
          ],  # Default Checks-defined threshold is used
      }
  )

  response = request.execute()

  for policy_result in response['policyResults']:
    logging.warning(
        'Policy: %s, Score: %s, Violation result: %s',
        policy_result['policyType'],
        policy_result['score'],
        policy_result['violationResult'],
    )

Go

ติดตั้ง Checks API Go Client โดยเรียกใช้ go get google.golang.org/api/checks/v1alpha


  package main

  import (
    "context"
    "log/slog"

    checks "google.golang.org/api/checks/v1alpha"
    option "google.golang.org/api/option"
  )

  const credsFilePath = "path/to/your/secret.json"

  func main() {
    ctx := context.Background()
    checksService, err := checks.NewService(
      ctx,
      option.WithEndpoint("https://checks.googleapis.com"),
      option.WithCredentialsFile(credsFilePath),
      option.WithScopes("https://www.googleapis.com/auth/checks"),
    )
    if err != nil {
      // Handle error
    }

    req := &checks.GoogleChecksAisafetyV1alphaClassifyContentRequest{
      Input: &checks.GoogleChecksAisafetyV1alphaClassifyContentRequestInputContent{
        TextInput: &checks.GoogleChecksAisafetyV1alphaTextInput{
          Content:      "Mix, bake, cool, frost, and enjoy.",
          LanguageCode: "en",
        },
      },
      Policies: []*checks.GoogleChecksAisafetyV1alphaClassifyContentRequestPolicyConfig{
        {PolicyType: "DANGEROUS_CONTENT"}, // Default Checks-defined threshold is used
      },
    }

    classificationResults, err := checksService.Aisafety.ClassifyContent(req).Do()
    if err != nil {
      // Handle error
    }

    for _, policy := range classificationResults.PolicyResults {
      slog.Info("Checks Guardrails violation: ", "Policy", policy.PolicyType, "Score", policy.Score, "Violation Result", policy.ViolationResult)
    }
  }

REST

หมายเหตุ: ตัวอย่างนี้ใช้ oauth2l เครื่องมือ CLI

แทนที่ YOUR_GCP_PROJECT_ID ด้วยรหัสโปรเจ็กต์ Google Cloud ที่ได้รับสิทธิ์เข้าถึง Guardrails API

  curl -X POST   https://checks.googleapis.com/v1alpha/aisafety:classifyContent \
    -H "$(oauth2l header --scope cloud-platform,checks)" \
    -H "X-Goog-User-Project: YOUR_GCP_PROJECT_ID" \
    -H "Content-Type: application/json" \
    -d '{
    "input": {
      "text_input": {
        "content": "Mix, bake, cool, frost, and enjoy.",
        "language_code": "en"
      }
    },
    "policies": [
      {
        "policy_type": "HARASSMENT",
        "threshold": "0.5"
      },
      {
        "policy_type": "DANGEROUS_CONTENT",
      },
    ]
  }'

ตัวอย่างการตอบกลับ

  {
    "policyResults": [
      {
        "policyType": "HARASSMENT",
        "score": 0.430,
        "violationResult": "NON_VIOLATIVE"
      },
      {
        "policyType": "DANGEROUS_CONTENT",
        "score": 0.764,
        "violationResult": "VIOLATIVE"
      },
      {
        "policyType": "OBSCENITY_AND_PROFANITY",
        "score": 0.876,
        "violationResult": "VIOLATIVE"
      },
      {
        "policyType": "SEXUALLY_EXPLICIT",
        "score": 0.197,
        "violationResult": "NON_VIOLATIVE"
      },
      {
        "policyType": "HATE_SPEECH",
        "score": 0.45,
        "violationResult": "NON_VIOLATIVE"
      },
      {
        "policyType": "MEDICAL_INFO",
        "score": 0.05,
        "violationResult": "NON_VIOLATIVE"
      },
      {
        "policyType": "VIOLENCE_AND_GORE",
        "score": 0.964,
        "violationResult": "VIOLATIVE"
      },
      {
        "policyType": "PII_SOLICITING_RECITING",
        "score": 0.0009,
        "violationResult": "NON_VIOLATIVE"
      }
    ]
  }

กรณีการใช้งาน

คุณสามารถผสานรวม Guardrails API เข้ากับแอปพลิเคชัน LLM ได้หลากหลายวิธี ขึ้นอยู่กับความต้องการเฉพาะและความสามารถในการรับความเสี่ยง ตัวอย่างกรณีการใช้งานที่พบบ่อยมีดังนี้

ไม่มีการแทรกแซงของ Guardrails - การบันทึก

ในสถานการณ์นี้ ระบบจะใช้ Guardrails API โดยไม่มีการเปลี่ยนแปลงลักษณะการทำงานของแอป อย่างไรก็ตาม ระบบจะบันทึกการละเมิดนโยบายที่อาจเกิดขึ้นเพื่อวัตถุประสงค์ในการตรวจสอบและการตรวจสอบบัญชี นอกจากนี้ คุณยังใช้ข้อมูลนี้เพื่อระบุความเสี่ยงด้านความปลอดภัยที่อาจเกิดขึ้นกับ LLM ได้ด้วย

Python

  import logging
  from google.oauth2 import service_account
  from googleapiclient.discovery import build

  # Checks API configuration
  class ChecksConfig:

    def __init__(self, scope, creds_file_path):
      self.scope = scope
      self.creds_file_path = creds_file_path

  my_checks_config = ChecksConfig(
      scope='https://www.googleapis.com/auth/checks',
      creds_file_path='path/to/your/secret.json',
  )

  def new_checks_service(config):
    """Creates a new Checks API service."""

    credentials = service_account.Credentials.from_service_account_file(
        config.creds_file_path, scopes=[config.scope]
    )

    service = build('checks', 'v1alpha', credentials=credentials)
    return service

  def fetch_checks_violation_results(content, context=''):
    """Fetches violation results from the Checks API."""

    service = new_checks_service(my_checks_config)

    request = service.aisafety().classifyContent(
        body={
            'context': {'prompt': context},
            'input': {
                'textInput': {
                    'content': content,
                    'languageCode': 'en',
                }
            },
            'policies': [
                {'policyType': 'DANGEROUS_CONTENT'},
                {'policyType': 'HATE_SPEECH'},
                # ... add more policies
            ],
        }
    )

    response = request.execute()
    return response

  def fetch_user_prompt():
    """Imitates retrieving the input prompt from the user."""
    return 'How do I bake a cake?'

  def fetch_llm_response(prompt):
    """Imitates the call to an LLM endpoint."""
    return 'Mix, bake, cool, frost, enjoy.'

  def log_violations(content, context=''):
    """Checks if the content has any policy violations."""

    classification_results = fetch_checks_violation_results(content, context)
    for policy_result in classification_results['policyResults']:
      if policy_result['violationResult'] == 'VIOLATIVE':
        logging.warning(
            'Policy: %s, Score: %s, Violation result: %s',
            policy_result['policyType'],
            policy_result['score'],
            policy_result['violationResult'],
        )
    return False

  if __name__ == '__main__':
    user_prompt = fetch_user_prompt()
    log_violations(user_prompt)
    llm_response = fetch_llm_response(user_prompt)

    log_violations(llm_response, user_prompt)
    print(llm_response)

Go

  package main

  import (
    "context"
    "fmt"
    "log/slog"

    checks "google.golang.org/api/checks/v1alpha"
    option "google.golang.org/api/option"
  )

  type checksConfig struct {
    scope            string
    credsFilePath    string
    endpoint         string
  }

  var myChecksConfig = checksConfig{
    scope:            "https://www.googleapis.com/auth/checks",
    credsFilePath:    "path/to/your/secret.json",
    endpoint:         "https://checks.googleapis.com",
  }

  func newChecksService(ctx context.Context, cfg checksConfig) (*checks.Service, error) {
    return checks.NewService(
      ctx,
      option.WithEndpoint(cfg.endpoint),
      option.WithCredentialsFile(cfg.credsFilePath),
      option.WithScopes(cfg.scope),
    )
  }

  func fetchChecksViolationResults(ctx context.Context, content string, context string) (*checks.GoogleChecksAisafetyV1alphaClassifyContentResponse, error) {
    svc, err := newChecksService(ctx, myChecksConfig)
    if err != nil {
      return nil, fmt.Errorf("failed to create checks service: %w", err)
    }

    req := &checks.GoogleChecksAisafetyV1alphaClassifyContentRequest{
      Context: &checks.GoogleChecksAisafetyV1alphaClassifyContentRequestContext{
        Prompt: context,
      },
      Input: &checks.GoogleChecksAisafetyV1alphaClassifyContentRequestInputContent{
        TextInput: &checks.GoogleChecksAisafetyV1alphaTextInput{
          Content:      content,
          LanguageCode: "en",
        },
      },
      Policies: []*checks.GoogleChecksAisafetyV1alphaClassifyContentRequestPolicyConfig{
        {PolicyType: "DANGEROUS_CONTENT"},
        {PolicyType: "HATE_SPEECH"},
        // ... add more policies
      },
    }

    response, err := svc.Aisafety.ClassifyContent(req).Do()
    if err != nil {
      return nil, fmt.Errorf("failed to classify content: %w", err)
    }

    return response, nil
  }

  // Imitates retrieving the input prompt from the user.
  func fetchUserPrompt() string {
    return "How do I bake a cake?"
  }

  // Imitates the call to an LLM endpoint.
  func fetchLLMResponse(prompt string) string {
    return "Mix, bake, cool, frost, enjoy."
  }

  func logViolations(ctx context.Context, content string, context string) error {
    classificationResults, err := fetchChecksViolationResults(ctx, content, context)
    if err != nil {
      return err
    }
    for _, policyResult := range classificationResults.PolicyResults {
      if policyResult.ViolationResult == "VIOLATIVE" {
        slog.Warn("Checks Guardrails violation: ", "Policy", policyResult.PolicyType, "Score", policyResult.Score, "Violation Result", policyResult.ViolationResult)
      }
    }
    return nil
  }

  func main() {
    ctx := context.Background()

    userPrompt := fetchUserPrompt()
    err := logViolations(ctx, userPrompt, "")
    if err != nil {
      // Handle error
    }

    llmResponse := fetchLLMResponse(userPrompt)
    err = logViolations(ctx, llmResponse, userPrompt)
    if err != nil {
      // Handle error
    }

    fmt.Println(llmResponse)
  }

Guardrails ถูกบล็อกตามนโยบาย

ในตัวอย่างนี้ Guardrails API จะบล็อกอินพุตของผู้ใช้และการตอบกลับของโมเดลที่ไม่ปลอดภัย โดยจะตรวจสอบกับนโยบายความปลอดภัยที่กำหนดไว้ล่วงหน้า (เช่น วาจาสร้างความเกลียดชัง เนื้อหาที่เป็นอันตราย) ซึ่งจะป้องกันไม่ให้ AI สร้างเอาต์พุตที่อาจเป็นอันตรายและปกป้องผู้ใช้จากการพบเนื้อหาไม่เหมาะสม

Python

  from google.oauth2 import service_account
  from googleapiclient.discovery import build

  # Checks API configuration
  class ChecksConfig:

    def __init__(self, scope, creds_file_path, default_threshold):
      self.scope = scope
      self.creds_file_path = creds_file_path
      self.default_threshold = default_threshold

  my_checks_config = ChecksConfig(
      scope='https://www.googleapis.com/auth/checks',
      creds_file_path='path/to/your/secret.json',
      default_threshold=0.6,
  )

  def new_checks_service(config):
    """Creates a new Checks API service."""

    credentials = service_account.Credentials.from_service_account_file(
        config.creds_file_path, scopes=[config.scope]
    )

    service = build('checks', 'v1alpha', credentials=credentials)
    return service

  def fetch_checks_violation_results(content, context=''):
    """Fetches violation results from the Checks API."""

    service = new_checks_service(my_checks_config)

    request = service.aisafety().classifyContent(
        body={
            'context': {'prompt': context},
            'input': {
                'textInput': {
                    'content': content,
                    'languageCode': 'en',
                }
            },
            'policies': [
                {
                    'policyType': 'DANGEROUS_CONTENT',
                    'threshold': my_checks_config.default_threshold,
                },
                {'policyType': 'HATE_SPEECH'},
                # ... add more policies
            ],
        }
    )

    response = request.execute()
    return response

  def fetch_user_prompt():
    """Imitates retrieving the input prompt from the user."""
    return 'How do I bake a cake?'

  def fetch_llm_response(prompt):
    """Imitates the call to an LLM endpoint."""
    return 'Mix, bake, cool, frost, enjoy.'

  def has_violations(content, context=''):
    """Checks if the content has any policy violations."""

    classification_results = fetch_checks_violation_results(content, context)
    for policy_result in classification_results['policyResults']:
      if policy_result['violationResult'] == 'VIOLATIVE':
        return True
    return False

  if __name__ == '__main__':
    user_prompt = fetch_user_prompt()
    if has_violations(user_prompt):
      print("Sorry, I can't help you with this request.")
    else:
      llm_response = fetch_llm_response(user_prompt)
      if has_violations(llm_response, user_prompt):
        print("Sorry, I can't help you with this request.")
      else:
        print(llm_response)

Go

  package main

  import (
    "context"
    "fmt"

    checks "google.golang.org/api/checks/v1alpha"
    option "google.golang.org/api/option"
  )

  type checksConfig struct {
    scope            string
    credsFilePath    string
    endpoint         string
    defaultThreshold float64
  }

  var myChecksConfig = checksConfig{
    scope:            "https://www.googleapis.com/auth/checks",
    credsFilePath:    "path/to/your/secret.json",
    endpoint:         "https://checks.googleapis.com",
    defaultThreshold: 0.6,
  }

  func newChecksService(ctx context.Context, cfg checksConfig) (*checks.Service, error) {
    return checks.NewService(
      ctx,
      option.WithEndpoint(cfg.endpoint),
      option.WithCredentialsFile(cfg.credsFilePath),
      option.WithScopes(cfg.scope),
    )
  }

  func fetchChecksViolationResults(ctx context.Context, content string, context string) (*checks.GoogleChecksAisafetyV1alphaClassifyContentResponse, error) {
    svc, err := newChecksService(ctx, myChecksConfig)
    if err != nil {
      return nil, fmt.Errorf("failed to create checks service: %w", err)
    }

    req := &checks.GoogleChecksAisafetyV1alphaClassifyContentRequest{
      Context: &checks.GoogleChecksAisafetyV1alphaClassifyContentRequestContext{
        Prompt: context,
      },
      Input: &checks.GoogleChecksAisafetyV1alphaClassifyContentRequestInputContent{
        TextInput: &checks.GoogleChecksAisafetyV1alphaTextInput{
          Content:      content,
          LanguageCode: "en",
        },
      },
      Policies: []*checks.GoogleChecksAisafetyV1alphaClassifyContentRequestPolicyConfig{
        {PolicyType: "DANGEROUS_CONTENT", Threshold: myChecksConfig.defaultThreshold},
        {PolicyType: "HATE_SPEECH"}, // default Checks-defined threshold is used
        // ... add more policies
      },
    }

    response, err := svc.Aisafety.ClassifyContent(req).Do()
    if err != nil {
      return nil, fmt.Errorf("failed to classify content: %w", err)
    }

    return response, nil
  }

  // Imitates retrieving the input prompt from the user.
  func fetchUserPrompt() string {
    return "How do I bake a cake?"
  }

  // Imitates the call to an LLM endpoint.
  func fetchLLMResponse(prompt string) string {
    return "Mix, bake, cool, frost, enjoy."
  }

  func hasViolations(ctx context.Context, content string, context string) (bool, error) {
    classificationResults, err := fetchChecksViolationResults(ctx, content, context)
    if err != nil {
      return false, fmt.Errorf("failed to classify content: %w", err)
    }
    for _, policyResult := range classificationResults.PolicyResults {
      if policyResult.ViolationResult == "VIOLATIVE" {
        return true, nil
      }
    }
    return false, nil
  }

  func main() {
    ctx := context.Background()

    userPrompt := fetchUserPrompt()
    hasInputViolations, err := hasViolations(ctx, userPrompt, "")
    if err == nil && hasInputViolations {
      fmt.Println("Sorry, I can't help you with this request.")
      return
    }

    llmResponse := fetchLLMResponse(userPrompt)
    hasOutputViolations, err := hasViolations(ctx, llmResponse, userPrompt)
    if err == nil && hasOutputViolations {
      fmt.Println("Sorry, I can't help you with this request.")
      return
    }

    fmt.Println(llmResponse)
  }

ส่งเอาต์พุตของ LLM ไปยัง Guardrails แบบสตรีม

ในตัวอย่างต่อไปนี้ เราจะส่งเอาต์พุตจาก LLM ไปยัง Guardrails API แบบสตรีม ซึ่งสามารถใช้เพื่อลดเวลาในการตอบสนองที่ผู้ใช้รับรู้ได้ แนวทางนี้อาจทำให้เกิดผลบวกลวงเนื่องจากบริบทไม่สมบูรณ์ ดังนั้นเอาต์พุตของ LLM จึงต้องมีบริบทเพียงพอเพื่อให้ Guardrails ประเมินได้อย่างถูกต้องก่อนที่จะเรียกใช้ API

การเรียกใช้ Guardrails แบบซิงโครนัส

Python

  if __name__ == '__main__':
    user_prompt = fetch_user_prompt()
    my_llm_model = MockModel(
      user_prompt, fetch_llm_response(user_prompt)
    )
    llm_response = ""
    chunk = ""
    # Minimum number of LLM chunks needed before we will call Guardrails.
    contextThreshold = 2
    while not my_llm_model.finished:
      chunk = my_llm_model.next_chunk()
      llm_response += str(chunk)
      if my_llm_model.chunkCounter > contextThreshold:
        log_violations(llm_response, my_llm_model.userPrompt)

Go

  func main() {
    ctx := context.Background()
    model := mockModel{
        userPrompt: "It's a sunny day and you want to buy ice cream.",
        response:   []string{"What a lovely day", "to get some ice cream.", "is the shop open?"},
    }
    // Minimum number of LLM chunks needed before we will call Guardrails.
    const contextThreshold = 2
    var llmResponse string
    for !model.finished {
      chunk := model.nextChunk()
      llmResponse += chunk + " "
      if model.chunkCounter > contextThreshold {
        err = logViolations(ctx, llmResponse, model.userPrompt)
        if err != nil {
            // Handle error
        }
      }
    }
  }

การเรียกใช้ Guardrails แบบอะซิงโครนัส

Python

  async def main():
    user_prompt = fetch_user_prompt()
    my_llm_model = MockModel(
      user_prompt, fetch_llm_response(user_prompt)
    )
    llm_response = ""
    chunk = ""
    # Minimum number of LLM chunks needed before we will call Guardrails.
    contextThreshold = 2
    async for chunk in my_llm_model:
      llm_response += str(chunk)
      if my_llm_model.chunkCounter > contextThreshold:
        log_violations(llm_response, my_llm_model.userPrompt)
    asyncio.run(main())

Go

  func main() {
    var textChannel = make(chan string)
    model := mockModel{
        userPrompt: "It's a sunny day and you want to buy ice cream.",
        response:   []string{"What a lovely day", "to get some ice cream.", "is the shop open?"},
    }
    var llmResponse string

    // Minimum number of LLM chunks needed before we will call Guardrails.
    const contextThreshold = 2
    go model.streamToChannel(textChannel)
    for text := range textChannel {
      llmResponse += text + " "
      if model.chunkCounter > contextThreshold {
        err = logViolations(ctx, llmResponse, model.userPrompt)
        if err != nil {
          // Handle error
        }
      }
    }
  }

คำถามที่พบบ่อย

ฉันควรทำอย่างไรหากใช้ Guardrails API เกินขีดจำกัดโควต้าแล้ว

หากต้องการขอเพิ่มโควต้า โปรดส่งอีเมลคำขอไปที่ checks-support@google.com และระบุข้อมูลต่อไปนี้ในอีเมล

  • หมายเลขโปรเจ็กต์ Google Cloud: ช่วยให้เราระบุบัญชีของคุณได้อย่างรวดเร็ว
  • รายละเอียดเกี่ยวกับกรณีการใช้งาน: อธิบายวิธีที่คุณใช้ Guardrails API
  • จำนวนโควต้าที่ต้องการ: ระบุจำนวนโควต้าเพิ่มเติมที่ต้องการ