Analizowanie recenzji klientów za pomocą interfejsu ai_generate_text()
OpenAI
Ważne
Ta funkcja jest dostępna w publicznej wersji zapoznawczej.
Ostrzeżenie
Funkcja ai_generate_text()
sztucznej inteligencji jest przestarzała. Usługa Databricks zaleca używanie ai_query z modelami zewnętrznymi.
W tym artykule pokazano, jak używać wbudowanej funkcji SQL usługi Databricks w celu sprawdzenia recenzji klientów i określenia, ai_generate_text()
czy należy wygenerować odpowiedź. Aby uzyskać więcej szczegółowych informacji na temat funkcji, zobacz AI Functions on Azure Databricks (Funkcje sztucznej inteligencji w usłudze Azure Databricks ).
Zestaw danych i polecenia w tym przewodniku pochodzą z pokazu Databricks Action Customer Reviews at Scale with Databricks SQL AI Functions (Przeglądy klientów usługi Databricks na dużą skalę za pomocą usługi SQL AI Functions usługi Databricks). W pokazie używane są fałszywe dane generowane przez platformę OpenAI, które naśladują opinie klientów dotyczące produktów spożywczych przesłanych do witryny internetowej handlu elektronicznego.
W tym przykładzie wykonasz następujące czynności:
- Podział tekstu przeglądu wolnego formularza klienta na jednostki składowe.
- Dla każdej jednostki określenie tonacji i określenie, czy odpowiedź jest wymagana z powrotem do klienta.
- Generowanie odpowiedzi z informacją o alternatywnych produktach, które mogą być zgodne z klientem.
Wymagania wstępne
- Jeśli chcesz uruchomić polecenia w tym przewodniku, potrzebujesz zestawu danych, aby go uruchomić. Możesz utworzyć fałszywy zestaw danych w notesie Generowanie fałszywych danych za pomocą usługi AI Functions .
- Polecenia SQL w tym przewodniku muszą być uruchamiane w edytorze zapytań SQL usługi Databricks. Nie można ich uruchamiać bezpośrednio w notesie usługi Azure Databricks przy użyciu klastrów interaktywnych.
- Funkcja
ai_generate_text()
jest dostępna tylko w publicznej wersji zapoznawczej w usługach SQL Warehouse pro lub bezserwerowych.- Aby zarejestrować się w publicznej wersji zapoznawczej, wypełnij i prześlij formularz rejestracji usługi AI Functions w publicznej wersji zapoznawczej.
- Klucz usługi Azure OpenAI.
- Zapisz klucz w wpisach tajnych usługi Databricks. W tym przykładzie klucz interfejsu API jest przechowywany w zakresie i wpisie tajnym
azure-openai
.tokens
Zobacz Konfigurowanie i zagadnienia dotyczące ai_generate_text().
Projekt monitu
Klucze do uzyskiwania przydatnych wyników z modelu GPT to:
- Zadając mu dobrze sformułowane pytanie.
- Konkretne informacje o typie oczekiwanej odpowiedzi.
Aby uzyskać wyniki w formularzu, który można łatwo przechowywać w tabeli, możesz poprosić model o zwrócenie wyniku w ciągu, który odzwierciedla JSON
reprezentację, i określić oczekiwany schemat.
Poniżej przedstawiono przykładowy monit dotyczący tego scenariusza:
Klient opuścił przegląd. Postępuj zgodnie z każdym, kto wydaje się niezadowolony.
Wyodrębnij wszystkie wymienione jednostki. Dla każdej jednostki:
- Klasyfikowanie tonacji jako ["POSITIVE","NEUTRAL","NEGATIVE"]
- Czy klient wymaga kontynuacji: Y czy N
- Przyczyna wymagania kontynuacji
Zwraca tylko kod JSON. Brak innego tekstu poza formatem JSON.
Format JSON:
{
"entities": [{
"entity_name": "entity_name",
"entity_type": "entity_type",
"entity_sentiment": "entity_sentiment",
"followup": "Y or N for follow up",
"followup_reason": "reason for followup"
}]
}
Przegląd:
<"insert_review_text_here">
Tworzenie funkcji SQL
Usługa Databricks zaleca oddzielenie pytań od szczegółowych funkcji SQL, dzięki czemu mogą być ponownie używane w innych scenariuszach w organizacji.
W tej sekcji utworzysz funkcje SQL, aby wyodrębnić szczegóły ai_generate_text()
wywołania od użytkowników końcowych i użyć tych funkcji jako interfejsu do interakcji z usługą Azure OpenAI.
Obsługa wywołań do usługi Azure OpenAI
Następująca funkcja prompt_handler()
otoki obsługuje wszystkie wywołania usługi Azure OpenAI. Klucz interfejsu API usługi Azure OpenAI jest przechowywany w kluczu tajnym usługi Databricks i można go odwołać z funkcją secret()
. Możesz również przekazać nazwę zasobu Usługi Azure OpenAI (resourceName
) i nazwę wdrożenia modelu (deploymentName
).
CREATE OR REPLACE FUNCTION PROMPT_HANDLER(prompt STRING)
RETURNS STRING
RETURN AI_GENERATE_TEXT(prompt,
"azure_openai/gpt-35-turbo",
"apiKey", SECRET("tokens", "azure-openai"),
"temperature", CAST(0.0 AS DOUBLE),
"deploymentName", "llmbricks",
"apiVersion", "2023-03-15-preview",
"resourceName", "llmbricks"
);
Analizowanie danych przeglądu klienta
Funkcja annotate_review()
dodawać adnotacje do przeglądu za pomocą jednostek, tonacji jednostek i określa, czy jest wymagana kontynuacja i dlaczego. Zwróć uwagę, że monit zwraca dobrze sformułowaną json
reprezentację, aby można było poinstruować funkcję o zwracaniu typu w celu łatwiejszego struct
wykonywania zapytań podrzędnych, takich jak wstawianie jej do tabeli delty.
CREATE OR REPLACE FUNCTION ANNOTATE_REVIEW(review STRING)
RETURNS STRUCT<entities: ARRAY<STRUCT<entity_name: STRING, entity_type: STRING, entity_sentiment: STRING, followup: STRING, followup_reason: STRING>>>
RETURN FROM_JSON(
PROMPT_HANDLER(CONCAT(
'A customer left a review. Follow up with anyone who appears unhappy.
Extract all entities mentioned. For each entity:
- classify sentiment as ["POSITIVE","NEUTRAL","NEGATIVE"]
- whether customer requires a follow-up: Y or N
- reason for requiring followup
Return JSON ONLY. No other text outside the JSON. JSON format:
{
entities: [{
"entity_name": <entity name>,
"entity_type": <entity type>,
"entity_sentiment": <entity sentiment>,
"followup": <Y or N for follow up>,
"followup_reason": <reason for followup>
}]
}
Review:
', review)),
"STRUCT<entities: ARRAY<STRUCT<entity_name: STRING, entity_type: STRING, entity_sentiment: STRING, followup: STRING, followup_reason: STRING>>>"
);
Możesz przekazać dane z zestawu danych przeglądów klientów, aby zobaczyć, jak annotate_review()
funkcja klasyfikuje bezpłatne przeglądy klientów.
SELECT review_body,
ANNOTATE_REVIEW(review_body) AS review_annotated
FROM dbdemos.openai_demo.fake_reviews
WHERE product_category = "Grocery"
LIMIT 3;
Generowanie odpowiedzi przy użyciu zaleceń
Po przejrzeniu odpowiedzi klientów możesz użyć generate_response()
funkcji , aby wygenerować odpowiedź na klienta w oparciu o ich skargę i uwzględnić zalecenia dotyczące alternatywnych produktów do wypróbowania.
CREATE OR REPLACE FUNCTION GENERATE_RESPONSE(product STRING, entity STRING, reason STRING)
RETURNS STRING
RETURN PROMPT_HANDLER(
CONCAT("What alternative products can you recommend for ", product,
" when a customer had a complaint about ", entity, " because ", reason,
"Give me a response in the tone of an empathetic message back to the customer; only provide the body")
);
Poniższe polecenie generuje przykładową odpowiedź na wiadomość dla recenzji klienta w sprawie country choice snacking cookies.
SELECT GENERATE_RESPONSE("Country Choice Snacking Cookies", "cookies", "Quality issue") AS customer_response
Zapytania adhoc
Zapytania ad hoc można również tworzyć przy użyciu nowo utworzonej prompt_handler()
funkcji.
Na przykład możesz zainteresować się zrozumieniem, czy przegląd omawia napoje.
SELECT review_id,
PROMPT_HANDLER(
CONCAT(
"Does this review discuss beverages? Answer Y or N only, no explanations or notes. Review: ", review_body)
) AS discusses_beverages,
review_body
FROM dbdemos.openai_demo.fake_reviews
WHERE review_id IN ("R9LEFDWWXPDEY", "R27UON10EV9FSV", "R299ZTEFIAHRQD")
ORDER BY discusses_beverages DESC;