Создание инструмента проверки обоснованности с помощью Upstage API и LangChain

Сервис Upstage’s Groundedness Check предоставляет мощный API для проверки того, что ответы, сгенерированные искусственным интеллектом, основаны на надёжных исходных материалах. Отправка пар «контекст-ответ» в конечную точку Upstage позволяет мгновенно определить, поддерживает ли предоставленный контекст данный ответ, и получить оценку достоверности этого обоснования. В этом руководстве мы покажем, как использовать основные возможности Upstage, включая однократную проверку, пакетную обработку и мультидоменное тестирование, чтобы гарантировать, что наши системы искусственного интеллекта создают достоверный и заслуживающий доверия контент в различных предметных областях.

Установка необходимых компонентов

“`python
!pip install -qU langchain-core langchain-upstage

import os
import json
from typing import List, Dict, Any
from langchain_upstage import UpstageGroundednessCheck

os.environ[“UPSTAGEAPIKEY”] = “Use Your API Key Here”
“`

Мы устанавливаем последнюю версию LangChain и пакет интеграции с Upstage, импортируем необходимые модули Python для обработки данных и вводим ключ API Upstage в среду для аутентификации всех последующих запросов на проверку обоснованности.

Класс AdvancedGroundednessChecker

“`python
class AdvancedGroundednessChecker:
“””Advanced wrapper for Upstage Groundedness Check with batch processing and analysis”””

def init(self):
self.checker = UpstageGroundednessCheck()
self.results = []

def check_single(self, context: str, answer: str) -> Dict[str, Any]:
“””Check groundedness for a single context-answer pair”””
request = {“context”: context, “answer”: answer}
response = self.checker.invoke(request)

result = {
“context”: context,
“answer”: answer,
“grounded”: response,
“confidence”: self.extractconfidence(response)
}
self.results.append(result)
return result

def batchcheck(self, testcases: List[Dict[str, str]]) -> List[Dict[str, Any]]:
“””Process multiple test cases”””
batch_results = []
for case in test_cases:
result = self.check_single(case[“context”], case[“answer”])
batch_results.append(result)
return batch_results

def extractconfidence(self, response) -> str:
“””Extract confidence level from response”””
if hasattr(response, ‘lower’):
if ‘grounded’ in response.lower():
return ‘high’
elif ‘not grounded’ in response.lower():
return ‘low’
return ‘medium’

def analyze_results(self) -> Dict[str, Any]:
“””Analyze batch results”””
total = len(self.results)
grounded = sum(1 for r in self.results if ‘grounded’ in str(r[‘grounded’]).lower())

return {
“total_checks”: total,
“grounded_count”: grounded,
“notgroundedcount”: total – grounded,
“accuracy_rate”: grounded / total if total > 0 else 0
}
“`

Класс AdvancedGroundednessChecker оборачивает API обоснованности Upstage в простой, многократно используемый интерфейс, который позволяет нам запускать как одиночные, так и пакетные проверки контекста и ответов, накапливая результаты. Он также включает вспомогательные методы для извлечения метки достоверности из каждого ответа и вычисления общих статистических данных об точности по всем проверкам.

Примеры проверок

“`python
checker = AdvancedGroundednessChecker()

print(“=== Test Case 1: Height Discrepancy ===”)
result1 = checker.check_single(
context=”Mauna Kea is an inactive volcano on the island of Hawai’i.”,
answer=”Mauna Kea is 5,207.3 meters tall.”
)
print(f”Result: {result1[‘grounded’]}”)

print(“\n=== Test Case 2: Correct Information ===”)
result2 = checker.check_single(
context=”Python is a high-level programming language created by Guido van Rossum in 1991. It emphasizes code readability and simplicity.”,
answer=”Python was made by Guido van Rossum & focuses on code readability.”
)
print(f”Result: {result2[‘grounded’]}”)

print(“\n=== Test Case 3: Partial Information ===”)
result3 = checker.check_single(
context=”The Great Wall of China is approximately 13,000 miles long and took over 2,000 years to build.”,
answer=”The Great Wall of China is very long.”
)
print(f”Result: {result3[‘grounded’]}”)

print(“\n=== Test Case 4: Contradictory Information ===”)
result4 = checker.check_single(
context=”Water boils at 100 degrees Celsius at sea level atmospheric pressure.”,
answer=”Water boils at 90 degrees Celsius at sea level.”
)
print(f”Result: {result4[‘grounded’]}”)
“`

Мы запускаем четыре отдельные проверки обоснованности, охватывающие фактическую ошибку в высоте, правильное утверждение, расплывчатое частичное совпадение и противоречивое утверждение, используя AdvancedGroundednessChecker. Он печатает каждый результат Upstage, чтобы проиллюстрировать, как служба отмечает обоснованные и необоснованные ответы в различных сценариях.

Пакетная обработка

“`python
print(“\n=== Batch Processing Example ===”)
test_cases = [
{
“context”: “Shakespeare wrote Romeo and Juliet in the late 16th century.”,
“answer”: “Romeo and Juliet was written by Shakespeare.”
},
{
“context”: “The speed of light is approximately 299,792,458 meters per second.”,
“answer”: “Light travels at about 300,000 kilometers per second.”
},
{
“context”: “Earth has one natural satellite called the Moon.”,
“answer”: “Earth has two moons.”
}
]

batchresults = checker.batchcheck(test_cases)
for i, result in enumerate(batch_results, 1):
print(f”Batch Test {i}: {result[‘grounded’]}”)
“`

Выполняем серию пакетных проверок обоснованности на заранее определённых тестовых примерах, печатаем отдельные суждения Upstage, а затем вычисляем и отображаем общие показатели точности.

Многодоменное тестирование

“`python
def createtestreport(checker_instance):
“””Generate a detailed test report”””
report = {
“summary”: checkerinstance.analyzeresults(),
“detailedresults”: checkerinstance.results,
“recommendations”: []
}

accuracy = report[“summary”][“accuracy_rate”]
if accuracy < 0.7:
report[“recommendations”].append(“Consider reviewing answer generation process”)
if accuracy > 0.9:
report[“recommendations”].append(“High accuracy – system performing well”)

return report

print(“\n=== Final Test Report ===”)
report = createtestreport(checker)
print(f”Overall Performance: {report[‘summary’][‘accuracy_rate’]:.2%}”)
print(“Recommendations:”, report[“recommendations”])
“`

Определяем вспомогательную функцию createtestreport, которая компилирует все накопленные проверки обоснованности в сводный отчёт, включая общую точность и индивидуальные рекомендации. Затем печатаем окончательные показатели производительности вместе с кратким обзором ключевых демонстраций руководства.

С помощью Upstage’s Groundedness Check мы получаем масштабируемое, независимое от предметной области решение для проверки фактов в реальном времени и оценки достоверности. Независимо от того, проверяем ли мы отдельные утверждения или обрабатываем большие пакеты ответов, Upstage предоставляет чёткие суждения о том, обоснованы ли ответы, и метрики достоверности, которые позволяют нам отслеживать показатели точности и генерировать действенные отчёты о качестве. Интегрируя этот сервис в наш рабочий процесс, мы можем повысить надёжность выходных данных, генерируемых искусственным интеллектом, и поддерживать строгие стандарты фактической целостности во всех приложениях.

Вопросы по тексту статьи:

1. Какие основные возможности предоставляет сервис Upstage’s Groundedness Check?

Ответ: сервис Upstage’s Groundedness Check предоставляет API для проверки обоснованности ответов, сгенерированных искусственным интеллектом. Он позволяет мгновенно определить, поддерживает ли предоставленный контекст данный ответ, и получить оценку достоверности этого обоснования.

2. Какие методы включает класс AdvancedGroundednessChecker?

Ответ: класс AdvancedGroundednessChecker включает методы для одиночной и пакетной проверки контекста и ответов, накопления результатов, извлечения метки достоверности из каждого ответа и вычисления общих статистических данных об точности по всем проверкам.

3. Какие примеры проверок приведены в статье?

Ответ: в статье приведены примеры проверок, охватывающие фактическую ошибку в высоте, правильное утверждение, расплывчатое частичное совпадение и противоречивое утверждение.

4. Как выполняется пакетная обработка в примере из статьи?

Ответ: пакетная обработка выполняется путём создания серии тестовых примеров, которые затем передаются в метод batch_check класса AdvancedGroundednessChecker. Результаты проверки выводятся на печать, а затем вычисляются и отображаются общие показатели точности.

5. Какие рекомендации можно дать на основе многодоменного тестирования?

Ответ: на основе многодоменного тестирования можно дать рекомендации по пересмотру процесса генерации ответов, если точность ниже 70%, или подтвердить, что система работает хорошо, если точность выше 90%.

Источник

Оставьте комментарий