Создание инструмента проверки обоснованности с помощью 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%.

Источник

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