Dokumentacja interfejsu API REST modelu bazowego
Ten artykuł zawiera ogólne informacje o interfejsie API dla Databricks Foundation Model API i obsługiwanych modeli. Interfejsy API modelu foundation zostały zaprojektowane tak, aby były podobne do interfejsu API REST platformy OpenAI, aby ułatwić migrację istniejących projektów. Punkty końcowe z płatnością na zasadzie płatności za token i oprogramowaną przepustowością akceptują ten sam format żądania REST API.
punkty końcowe
Każdy model płatności za token ma jeden punkt końcowy, a użytkownicy mogą korzystać z tych punktów końcowych przy użyciu żądań HTTP POST. Punkty końcowe z zaprojektowaną przepustowością można utworzyć przy użyciu interfejsu API lub za pomocą interfejsu użytkownika usługi. Te punkty końcowe obsługują również wiele modeli na punkt końcowy na potrzeby testowania A/B, o ile oba obsługiwane modele uwidaczniają ten sam format interfejsu API. Na przykład oba modele są modelami czatów. Zobacz POST /api/2.0/serving-endpoints dla konfiguracji punktu końcowego parameters.
Żądania i odpowiedzi używają kodu JSON. Dokładna struktura JSON zależy od typu zadania punktu końcowego. Punkty końcowe czatu i uzupełniania obsługują odpowiedzi w formie strumieniowania.
Obciążenia rozliczane za token obsługują niektóre modele; zobacz Obsługiwane modele dla płatności za token, aby poznać te modele i akceptowane formaty interfejsu API.
Użycie
Odpowiedzi obejmują komunikat podrzędny usage
, który zgłasza liczbę tokenów w żądaniu i odpowiedzi. Format tego komunikatu podrzędnego jest taki sam we wszystkich typach zadań.
Pole | Typ | Opis |
---|---|---|
completion_tokens |
Liczba całkowita | Liczba wygenerowanych tokenów. Nie uwzględnianie w odpowiedziach z osadzaniem. |
prompt_tokens |
Liczba całkowita | Liczba tokenów z monitów wejściowych. |
total_tokens |
Liczba całkowita | Łączna liczba tokenów. |
W przypadku modeli takich jak llama-2-70b-chat
monit użytkownika jest przekształcany przy użyciu szablonu monitu przed przekazaniem go do modelu. W przypadku punktów końcowych płatności za token może zostać również dodany monit systemowy.
prompt_tokens
zawiera cały tekst dodany przez nasz serwer.
Zadanie czatowe
Zadania czatu są zoptymalizowane pod kątem wieloturnowych rozmów z użyciem modelu. Odpowiedź modelu zawiera następny komunikat assistant
w konwersacji. Zobacz POST /serving-endpoints/{name}/invocations w celu wykonywania zapytań dotyczących punktu końcowego parameters.
Żądanie czatu
Pole | Domyślny | Typ | Opis |
---|---|---|---|
messages |
ChatMessagelist | wymagane. Liczba list wiadomości reprezentujących bieżącą konwersację. | |
max_tokens |
null |
null , co oznacza brak limitlub liczbę całkowitą większą niż zero |
Maksymalna liczba tokenów do generate. |
stream |
true |
Boolean | Przesyłanie odpowiedzi do klienta w celu umożliwienia uzyskania częściowych wyników dla żądań. Jeśli ten parametr jest uwzględniony w żądaniu, odpowiedzi są wysyłane przy użyciu standardu zdarzeń wysyłanych przez serwer . |
temperature |
1.0 |
Liczba zmiennoprzecinkowa w [0,2] | Temperatura próbkowania. Wartość 0 jest deterministyczna i wyższa values wprowadza większą losowość. |
top_p |
1.0 |
Liczba zmiennoprzecinkowa w przedziale (0,1] | Próg prawdopodobieństwa używany do próbkowania jądra. |
top_k |
null |
null , co oznacza brak limitlub liczbę całkowitą większą niż zero |
Definiuje liczbę k najbardziej prawdopodobnych tokenów używanych do filtrowania top-k. Set tę wartość do 1, aby dane wyjściowe deterministyczne. |
stop |
[] | Ciąg lub List[ciąg] | Model przestaje generować kolejne tokeny, gdy napotkano jedną z sekwencji w stop . |
n |
1 | Liczba całkowita większa niż zero | Interfejs API zwraca n niezależnych uzupełnień czatu, gdy zostanie określony n . Zalecane w przypadku obciążeń, które generate wielu uzupełnień na tych samych danych wejściowych w celu uzyskania dodatkowej wydajności wnioskowania i oszczędności kosztów. Dostępne tylko dla punktów końcowych przydzielonej przepustowości. |
tool_choice |
none |
Ciąg lub ToolChoiceObject | Używane tylko w połączeniu z polem tools .
tool_choice obsługuje różne ciągi słów kluczowych, takie jak auto , required i none .
auto oznacza, że pozwalasz modelowi zdecydować, które (jeśli istnieje) narzędzie ma zastosowanie do użycia. W przypadku auto , jeśli model nie wierzy, że jakiekolwiek narzędzia w tools są istotne, model generuje standardowy komunikat asystenta zamiast wywołania narzędzia.
required oznacza, że model wybiera najbardziej odpowiednie narzędzie z tools i powinien generate wywołać narzędzie.
none oznacza, że model nie generate żadnych wywołań narzędzi i zamiast tego musi wykonać generate standardowy komunikat asystenta. Aby wymusić wywołanie narzędzia za pomocą określonego narzędzia zdefiniowanego w tools , użyj ToolChoiceObject . Jeśli domyślnie pole tools zostanie wypełnione tool_choice = "auto" . W przeciwnym razie pole tools przyjmuje wartość domyślną tool_choice = "none" |
tools |
null |
ToolObject |
list
tools , które model może wywołać. Obecnie function jest jedynym obsługiwanym typem tool i obsługiwane są maksymalnie 32 funkcje. |
response_format |
null |
ResponseFormatObject | Obiekt określający format, który musi zostać wygenerowany przez model. Akceptowane typy to text , json_schema lub json_object Ustawienie na { "type": "json_schema", "json_schema": {...} } włącza ustrukturyzowane dane wyjściowe, co zapewnia, że model jest zgodny z podanym schemaJSON.Ustawienie wartości { "type": "json_object" } gwarantuje, że odpowiedzi generowane przez model są prawidłowe w formacie JSON, ale nie gwarantuje, że odpowiedzi są zgodne z określonym schema. |
logprobs |
false |
Boolean | Ten parametr wskazuje, czy zapewniać informację o logarytmicznym prawdopodobieństwie próbkowanego tokenu. |
top_logprobs |
null |
Liczba całkowita | Ten parametr steruje liczbą najbardziej prawdopodobnych kandydatów na tokeny, dla których każde z kroków próbkowania zwraca logarytmiczne prawdopodobieństwa. Może być 0–20.
logprobs musi być true , jeśli jest używane to pole. |
ChatMessage
Pole | Typ | Opis |
---|---|---|
role |
Struna |
wymagane. Rola autora wiadomości. Może to być "system" , "user" , "assistant" lub "tool" . |
content |
Struna | Zawartość wiadomości. Wymagane dla zadań czatu, które nie obejmują wywołań narzędzi. |
tool_calls |
ToolCalllist |
list dla tool_calls wygenerowany przez model. Musi mieć role jako "assistant" i nie może mieć specyfikacji dla pola content . |
tool_call_id |
Struna | Gdy role jest "tool" , identyfikator skojarzony z ToolCall , na który odpowiada komunikat. Musi być pusty dla wszystkich innych opcji role . |
Rola system
może być używana tylko raz, jako pierwsza wiadomość w konwersacji. Zastępuje on domyślny monit systemowy modelu.
ToolCall
Sugestia akcji wywołania narzędzia przez model. Zobacz Funkcja wywołująca w usłudze Azure Databricks.
Pole | Typ | Opis |
---|---|---|
id |
Struna | wymagane. Unikatowa identifier dla tej sugestii wywołania narzędzia. |
type |
Struna |
wymagane. Tylko "function" jest obsługiwane. |
function |
ZakończenieWywołaniaFunkcji | wymagane. Wywołanie funkcji sugerowane przez model. |
FunctionCallCompletion
Pole | Typ | Opis |
---|---|---|
name |
Struna | Wymagane. Nazwa funkcji zalecanej przez model. |
arguments |
Obiekt | Wymagane. Argumenty funkcji jako serializowany słownik JSON. |
ToolChoiceObject
Zobacz Funkcja wywołująca w usłudze Azure Databricks.
Pole | Typ | Opis |
---|---|---|
type |
Struna |
wymagane. Typ narzędzia. Obecnie obsługiwana jest tylko "function" . |
function |
Obiekt |
wymagane. Obiekt definiujący, które narzędzie do wywołania formularza {"type": "function", "function": {"name": "my_function"}} where"my_function jest nazwą FunctionObject w polu tools . |
ToolObject
Zobacz Funkcja wywołująca w usłudze Azure Databricks.
Pole | Typ | Opis |
---|---|---|
type |
Struna |
wymagane. Typ narzędzia. Obecnie obsługiwana jest tylko function . |
function |
ObiektFunkcji | wymagane. Definicja funkcji skojarzona z narzędziem. |
FunctionObject
Pole | Typ | Opis |
---|---|---|
name |
Struna | wymagane. Nazwa funkcji do wywołania. |
description |
Obiekt | wymagane. Szczegółowy opis funkcji. Model używa tego opisu, aby zrozumieć istotność funkcji monitu i generate wywołania narzędzia z większą dokładnością. |
parameters |
Obiekt | Funkcja parameters akceptuje opisany jako prawidłowy obiekt JSON schema. Jeśli narzędzie jest wywoływane, to jego wywołanie odpowiada podanemu JSON schema. Pominięcie parameters definiuje funkcję bez żadnych parameters. Liczba properties jest ograniczona do 15 kluczy. |
strict |
Boolean | Czy włączyć przestrzeganie schema w sposób ścisły podczas generowania wywołania funkcji. Jeśli set do true , model jest zgodny z dokładnym schema zdefiniowanym w polu schema. Obsługiwany jest tylko podzbiór JSON schema, gdy tryb rygorystyczny jest true . |
ResponseFormatObject
Zobacz Strukturalne dane wyjściowe w usłudze Azure Databricks.
JsonSchemaObject
Zobacz Strukturalne dane wyjściowe w usłudze Azure Databricks.
Pole | Typ | Opis |
---|---|---|
name |
Struna | wymagane. Nazwa formatu odpowiedzi. |
description |
Struna | Opis formatu odpowiedzi używany przez model do określenia sposobu reagowania w tym formacie. |
schema |
Obiekt | wymagane. schema dla formatu odpowiedzi, opisane jako obiekt schema JSON. |
strict |
Boolean | Czy włączyć przestrzeganie ścisłe schema podczas generowania wyników. Jeśli set do true , model jest zgodny z dokładnym schema zdefiniowanym w polu schema. Obsługiwany jest tylko podzbiór JSON schema, gdy tryb rygorystyczny jest true . |
Odpowiedź na czat
Dla żądań bez przesyłania strumieniowego odpowiedzią jest pojedynczy obiekt zakończenia czatu. W przypadku żądań przesyłania strumieniowego odpowiedzią jest kombinacja text/event-stream
where, w której każde zdarzenie jest obiektem fragmentu ukończenia. Struktura najwyższego poziomu obiektów uzupełniania i fragmentów jest prawie identyczna: tylko choices
ma inny typ.
Pole | Typ | Opis |
---|---|---|
id |
Struna | Unikalne identifier dla zakończenia czatu. |
choices |
List[ChatCompletionChoice] lub List[ChatCompletionChunk] (przesyłanie strumieniowe) |
List tekstów ukończenia czatu.
n opcje są zwracane, jeśli parametr n został określony. |
object |
Struna | Typ obiektu. Równe "chat.completions" dla nie przesyłania strumieniowego lub "chat.completion.chunk" dla przesyłania strumieniowego. |
created |
Liczba całkowita | Moment wygenerowania ukończenia czatu w sekundach. |
model |
Struna | Wersja modelu używana do generate odpowiedzi. |
usage |
Użycie | Metadane użycia tokenu. Może nie być obecny w odpowiedziach strumieniowych. |
ChatCompletionChoice
Pole | Typ | Opis |
---|---|---|
index |
Liczba całkowita | Indeks wyboru w list wygenerowanych wyborów. |
message |
ChatMessage | Komunikat ukończenia czatu zwrócony przez model. Rola będzie assistant . |
finish_reason |
Struna | Przyczyna, dla którego model przestał generować tokeny. |
ChatCompletionChunk
Pole | Typ | Opis |
---|---|---|
index |
Liczba całkowita | Indeks wyboru w list wygenerowanych wyborów. |
delta |
ChatMessage | Część komunikatu ukończenia czatu z wygenerowanych strumieniowo odpowiedzi przez model. Zagwarantowano, że tylko pierwszy fragment zostanie wypełniony role . |
finish_reason |
Struna | Przyczyna, dla którego model przestał generować tokeny. Zostanie wypełniony tylko ostatni fragment. |
zadanie ukończenia
Zadania uzupełniania tekstu służą do generowania odpowiedzi na jeden monit. W przeciwieństwie do czatu to zadanie obsługuje dane wejściowe wsadowe: w jednym żądaniu można wysyłać wiele niezależnych monitów. Zobacz POST /serving-endpoints/{name}/invocations w celu wykonywania zapytań dotyczących punktu końcowego parameters.
Żądanie ukończenia
Odpowiedź na zakończenie
Pole | Typ | Opis |
---|---|---|
id |
Struna | Unikalne identifier do uzupełniania tekstu. |
choices |
CompletionChoice |
list uzupełniania tekstu. Dla każdego przekazanego monitu generowane są n opcje, gdy określono n . Domyślny n to 1. |
object |
Struna | Typ obiektu. Równe "text_completion" |
created |
Liczba całkowita | Czas wygenerowania ukończenia w sekundach. |
usage |
Użycie | Metadane użycia tokenu. |
CompletionChoice
Pole | Typ | Opis |
---|---|---|
index |
Liczba całkowita | Indeks monitu w żądaniu. |
text |
Struna | Wygenerowane ukończenie. |
finish_reason |
Struna | Przyczyna, dla którego model przestał generować tokeny. |
Zadanie osadzania
Zadania osadzania mapują ciągi wejściowe na wektory osadzania. Wiele danych wejściowych można wsadować razem w każdym żądaniu. Zobacz POST /serving-endpoints/{name}/invocations w celu wykonywania zapytań dotyczących punktu końcowego parameters.
Żądanie osadzania
Pole | Typ | Opis |
---|---|---|
input |
Ciąg lub List[ciąg] | wymagane. Tekst wejściowy do osadzenia. Może być ciągiem lub list ciągów. |
instruction |
Struna | Opcjonalna instrukcja do przekazania do modelu osadzania. |
Instrukcje są opcjonalne i wysoce specyficzne dla modelu. Na przykład autorzy BGE zalecają brak instrukcji podczas indeksowania fragmentów i zalecają użycie instrukcji "Represent this sentence for searching relevant passages:"
na potrzeby zapytań pobierania. Inne modele, takie jak Instructor-XL obsługują szeroką gamę ciągów instrukcji.
Odpowiedź osadzania
Pole | Typ | Opis |
---|---|---|
id |
Struna | Unikatowe identifier osadzania. |
object |
Struna | Typ obiektu. Równe "list" . |
model |
Struna | Nazwa modelu osadzania użytego do utworzenia osadzania. |
data |
ObiektOsadzania | Obiekt osadzania. |
usage |
Użycie | Metadane użycia tokenu. |
EmbeddingObject
Pole | Typ | Opis |
---|---|---|
object |
Struna | Typ obiektu. Równe "embedding" . |
index |
Liczba całkowita | Indeks osadzenia embedingu w list generowanych przez model. |
embedding |
List[zmiennoprzecinkowa] | Wektor osadzania. Każdy model zwróci wektor o stałym rozmiarze (1024 dla BGE-Large) |
Dodatkowe zasoby
interfejsy API modelu Databricks Foundation