Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Analizuj recenzje klientów za pomocą
Ważne
Ta funkcja jest dostępna w publicznej wersji zapoznawczej.
Ostrzeżenie
Funkcja ai_generate_text() sztucznej inteligencji jest przestarzała. Databricks zaleca używanie ai_query z zewnętrznymi modelami.
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 informacji na temat funkcji, zobacz Stosowanie AI na danych za pomocą funkcji AI w usłudze Azure Databricks.
Zestaw danych i polecenia w tym przewodniku pochodzą z bloga Databricks Action Customer Reviews at Scale with Databricks SQL AI Functions.
Ten przykład przeprowadzi Cię przez:
- Podział tekstu recenzji klienta w formie dowolnej na jego składowe jednostki.
- Dla każdej jednostki określenie tonacji i określenie, czy odpowiedź jest wymagana z powrotem do klienta.
- Generowanie odpowiedzi o alternatywnych produktach, które mogą zadowolić klienta.
Wymagania wstępne
- Jeśli chcesz wykonać polecenia zawarte w tym przewodniku, potrzebujesz zestawu danych, na którym będą one uruchamiane. Dowiedz się, jak generować syntetyczne dane.
- 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
tokensi tajemnicyazure-openai. Zobacz Ustawienia i zagadnienia dotycząceai_generate_text().
Projektowanie promptów
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 zostawił recenzję. Skontaktuj się z kimkolwiek, kto wydaje się niezadowolony.
Wyodrębnij wszystkie wymienione jednostki. Dla każdej jednostki:
- Klasyfikowanie nastroju jako ["POZYTYWNY","NEUTRALNY","NEGATYWNY"]
- 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 sekrecie usługi Databricks i można się do niego odwołać za pomocą funkcji 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"
);
Analiza danych opinii klientów
Funkcja annotate_review() adnotuje przegląd jednostkami, sentymentami jednostek oraz określa, czy wymagana jest kontynuacja i dlaczego. Zwróć uwagę, że monit zwraca dobrze sformułowaną reprezentację json, dzięki czemu możesz instruować funkcję, aby zwracała typ struct ułatwiający późniejsze zapytania, takie jak wstawianie go do tabeli Delta.
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 z opiniami klientów, aby zobaczyć, jak funkcja annotate_review() klasyfikuje nieustrukturyzowane opinie 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ść na temat recenzji klienta dotyczącej Country Choice Snacking Cookies.
SELECT GENERATE_RESPONSE("Country Choice Snacking Cookies", "cookies", "Quality issue") AS customer_response
Zapytania ad-hoc
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;