Question answering

Interfejs Semantic Retrieval API udostępnia usługę hostowaną do odpowiadania na pytania, która umożliwia tworzenie systemów Retrieval-Augmented Generation (RAG) z wykorzystaniem infrastruktury Google.

Metoda: models.generateAnswer

Generuje wiarygodną odpowiedź z modela na podstawie danych wejściowych GenerateAnswerRequest.

Punkt końcowy

post https://generativelanguage.googleapis.com/v1beta/{model=models/*}:generateAnswer

Parametry ścieżki

model string

Wymagane. Nazwa Model, której należy użyć do wygenerowania odpowiedzi opartej na faktach.

Format: model=models/{model}. Ma ona postać models/{model}.

Treść żądania

Treść żądania zawiera dane o następującej strukturze:

Fields
contents[] object (Content)

Wymagane. Treść bieżącej rozmowy z Model. W przypadku zapytań jednokierunkowych jest to jedno pytanie, na które należy udzielić odpowiedzi. W przypadku zapytań wieloetapowych jest to powtarzalne pole zawierające historię rozmowy i ostatnie Content na liście z pytaniem.

Uwaga: usługa models.generateAnswer obsługuje tylko zapytania w języku angielskim.

answerStyle enum (AnswerStyle)

Wymagane. Styl, w jakim mają być zwracane odpowiedzi.

safetySettings[] object (SafetySetting)

Opcjonalnie: Lista unikalnych wystąpień SafetySetting do blokowania niebezpiecznych treści.

Będzie to wymagane w przypadku znaczników GenerateAnswerRequest.contentsGenerateAnswerResponse.candidate. W przypadku każdego typu SafetyCategory nie powinno być więcej niż 1 ustawienia. Interfejs API będzie blokować wszystkie treści i odpowiedzi, które nie spełniają wartości granicznych określonych przez te ustawienia. Ta lista zastępuje domyślne ustawienia każdego SafetyCategory określonego w safetySettings. Jeśli na liście nie ma podanego SafetySetting dla danego SafetyCategory, interfejs API użyje domyślnego ustawienia bezpieczeństwa dla tej kategorii. Obsługiwane są kategorie szkodliwych treści HARM_CATEGORY_HATE_SPEECH, HARM_CATEGORY_SEXUALLY_EXPLICIT, HARM_CATEGORY_DANGEROUS_CONTENT i HARM_CATEGORY_HARASSMENT. Szczegółowe informacje o dostępnych ustawieniach bezpieczeństwa znajdziesz w przewodniku. Zapoznaj się też z wytycznymi dotyczącymi bezpieczeństwa, aby dowiedzieć się, jak uwzględniać kwestie bezpieczeństwa w aplikacji wykorzystującej AI.

grounding_source Union type
Źródła, na których opiera się odpowiedź. grounding_source może być tylko jednym z tych elementów:
inlinePassages object (GroundingPassages)

Fragmenty tekstu podane w zgłoszeniu.

semanticRetriever object (SemanticRetrieverConfig)

Treści pobrane z zasobów utworzonych za pomocą interfejsu Semantic Retriever API.

temperature number

Opcjonalnie: Określa losowość danych wyjściowych.

Wartości muszą mieścić się w zakresie [0,0,1,0]. Wartość zbliżona do 1,0 spowoduje, że odpowiedzi będą bardziej zróżnicowane i kreatywne, a wartość zbliżona do 0,0 spowoduje, że model będzie zwykle generować bardziej bezpośrednie odpowiedzi. W przypadku przypadków użycia polegających na udzielaniu odpowiedzi na pytania z atrybucją zalecamy zwykle niską temperaturę (~0,2).

Treść odpowiedzi

Odpowiedź modelu na pytanie o oparcie w faktach.

W przypadku powodzenia treść żądania zawiera dane o następującej strukturze:

Pola
answer object (Candidate)

Odpowiedź modelu kandydującego.

Uwaga: model zawsze próbuje podać wiarygodną odpowiedź, nawet jeśli jest mało prawdopodobne, że można ją uzyskać na podstawie podanych fragmentów. W takim przypadku może zostać podana odpowiedź o niskiej jakości lub nieodpowiadająca tematowi, a także uzyskać niski answerableProbability.

answerableProbability number

Tylko dane wyjściowe. Szacowana przez model prawdopodobieństwo, że odpowiedź jest prawidłowa i oparta na tekstach wejściowych.

Niska wartość answerableProbability wskazuje, że odpowiedź może nie być oparta na źródłach.

Gdy answerableProbability jest niski, możesz:

  • wyświetlić użytkownikowi komunikat o treść „Nie możemy odpowiedzieć na to pytanie”;
  • sięgnąć po ogólny model LLM, który odpowiada na pytanie na podstawie ogólnej wiedzy; Wartość progowa i charakter takich rozwiązań zastępczych zależą od konkretnych przypadków użycia. 0.5 to dobry próg początkowy.
inputFeedback object (InputFeedback)

Tylko dane wyjściowe. Informacje dotyczące danych wejściowych użytych do udzielenia odpowiedzi na pytanie, a nie odpowiedzi wygenerowanej przez model.

Dane wejściowe mogą być podane w jednym z tych formatów:

  • Pytanie określone przez ostatni wpis w pliku GenerateAnswerRequest.content
  • historia rozmowy określona przez inne wpisy w GenerateAnswerRequest.content
  • Źródła umocowania (GenerateAnswerRequest.semantic_retriever lub GenerateAnswerRequest.inline_passages)
Zapis JSON
{
  "answer": {
    object (Candidate)
  },
  "answerableProbability": number,
  "inputFeedback": {
    object (InputFeedback)
  }
}

GroundingPassages

powtarzająca się lista fragmentów tekstu;

Pola
passages[] object (GroundingPassage)

Lista fragmentów.

Zapis JSON
{
  "passages": [
    {
      object (GroundingPassage)
    }
  ]
}

GroundingPassage

Fragment tekstu zawarty w ramach konfiguracji uziemienia.

Pola
id string

Identyfikator fragmentu tekstu służący do przypisania tego fragmentu w odpowiedziach opartych na danych.

content object (Content)

Treść fragmentu.

Zapis JSON
{
  "id": string,
  "content": {
    object (Content)
  }
}

SemanticRetrieverConfig

Konfiguracja służąca do pobierania treści wprowadzających z Corpus lub Document utworzonych za pomocą interfejsu Semantic Retriever API.

Pola
source string

Wymagane. Nazwa zasobu do pobrania. Przykład: corpora/123 lub corpora/123/documents/abc.

query object (Content)

Wymagane. Zapytanie służące do dopasowywania Chunk w danym zasobie na podstawie podobieństwa.

metadataFilters[] object (MetadataFilter)

Opcjonalnie: Filtry do wybierania z zasosobu Document lub Chunk.

maxChunksCount integer

Opcjonalnie: Maksymalna liczba odpowiednich Chunk do pobrania.

minimumRelevanceScore number

Opcjonalnie: Minimalna ocena trafności dla odnalezionych odpowiednich Chunk.

Zapis JSON
{
  "source": string,
  "query": {
    object (Content)
  },
  "metadataFilters": [
    {
      object (MetadataFilter)
    }
  ],
  "maxChunksCount": integer,
  "minimumRelevanceScore": number
}

AnswerStyle

Styl odpowiedzi opartych na faktach.

Wartości w polu enum
ANSWER_STYLE_UNSPECIFIED Nieokreślony styl odpowiedzi.
ABSTRACTIVE Krótki, ale abstrakcyjny styl.
EXTRACTIVE bardzo krótki i wyciągający esencję styl;
VERBOSE szczegółowy styl z dodatkowymi informacjami; Odpowiedź może mieć format zdania, akapitu, kilku akapitów lub punktów.

InputFeedback

Informacje dotyczące danych wejściowych użytych do udzielenia odpowiedzi na pytanie, a nie odpowiedzi wygenerowanej przez model.

Pola
safetyRatings[] object (SafetyRating)

Oceny bezpieczeństwa danych wejściowych. W każdej kategorii może być maksymalnie 1 ocena.

blockReason enum (BlockReason)

Opcjonalnie: Jeśli jest ustawiona, oznacza, że dane wejściowe zostały zablokowane i nie zwracają żadnych kandydatów. Przeformułuj dane wejściowe.

Zapis JSON
{
  "safetyRatings": [
    {
      object (SafetyRating)
    }
  ],
  "blockReason": enum (BlockReason)
}

BlockReason

Określa powód zablokowania danych wejściowych.

Wartości w polu enum
BLOCK_REASON_UNSPECIFIED Wartość domyślna. Ta wartość nie jest używana.
SAFETY Dane wejściowe zostały zablokowane ze względów bezpieczeństwa. Sprawdź safetyRatings, aby dowiedzieć się, która kategoria bezpieczeństwa spowodowała blokadę.
OTHER Dane zostały zablokowane z innych powodów.