Usando o OpenAI GPT no Synapse Analytics

O Azure OpenAI dificilmente precisa de uma introdução, mas para aqueles que conseguiram escapar de todas as novidades tecnológicas ultimamente, deixe-me dar uma breve visão geral. Além disso, o Azure OpenAI é um conjunto de modelos de processamento de linguagem natural (NLP) desenvolvido pela OpenAI. Ademais, os modelos podem ser usados ​​em uma ampla gama de aplicações, incluindo geração de texto, resumo e tradução. Por outro lado, a Microsoft oferece o Azure OpenAI como um Serviço Cognitivo do Azure, o que significa que ele vem com o mesmo conjunto de recursos dos serviços cognitivos existentes. Contudo, ele está disponível como uma API e oferece suporte à conectividade privada e ao Azure RBAC. Nesta postagem, será demonstrado como acessar os modelos GPT do Azure OpenAI de dentro do Synapse Spark.

A chave para acessar OpenAI do Synapse é SynapeML. Se você nunca ouviu falar do SynapseML, deveria realmente dar uma olhada! É uma biblioteca de código aberto e ajuda você a criar pipelines escalonáveis ​​de aprendizado de máquina. O SynapseML é construído na estrutura Apache Spark e fornece APIs para uma variedade de tarefas de aprendizado de máquina, incluindo análise de texto, visão, detecção de anomalias e muitas outras. Para saber mais sobre seus recursos, confira a página de documentação da Microsoft ou a página SynapseML github .

Um dos recursos do SynapseML  fornece APIs simples para serviços inteligentes pré-criados, como os serviços cognitivos do Azure. Como mencionei antes, o Azure OpenAI faz parte da pilha de serviços cognitivos, tornando-o acessível nos pools do Synapse Spark. Então é exatamente isso que vamos fazer!

Como fazer a configuração do Azure OpenAi no Synapse Spark?

Para usar o Azure OpenAI no Synapse Spark, usaremos três componentes. A configuração desses componentes está fora do escopo deste artigo.

  • Um espaço de trabalho do Synapse Analytics com um Spark Pool
  • Um serviço cognitivo OpenAI do Azure com modelo text-davinci-003 implantado
  • Azure Key vault para armazenar a chave da API OpenAI

Claro, vamos precisar de alguns dados para trabalhar. Eu quero fazer uma análise de sentimento em avaliações de restaurantes. Então, decidi pedir ao ChatGPT para me gerar alguns! Coloquei o resultado em um arquivo de texto delimitado e carreguei-o na conta ADLS principal do meu espaço de trabalho.

thumbnail image 1 of blog post titled 
	
	
	 
	
	
	
				
		
			
				
						
							Using OpenAI GPT in Synapse Analytics

O arquivo que carreguei no ADLS contém duas colunas, uma com nomes de restaurantes e outra com suas respectivas avaliações. Novamente, é importante observar que esses dados são gerados pelo ChatGPT e não são baseados em avaliações reais!

Para os interessados ​​em usar o Azure OpenAI e o Synapse Spark para gerar dados de teste, confira o vídeo mais recente.

thumbnail image 2 of blog post titled 
	
	
	 
	
	
	
				
		
			
				
						
							Using OpenAI GPT in Synapse Analytics

Assim que tivermos nossos dados e todos os componentes necessários configurados, é hora de começar a escrever algum código! Primeiro, precisamos definir algumas variáveis. Isso inclui o nome do seu serviço Azure OpenAI, o nome do modelo GPT implantado (neste caso, estou usando o modelo text-davinci-003) e o segredo que contém sua chave de API OpenAI. É importante garantir que a identidade gerenciada do seu Synapse Workspace tenha as permissões apropriadas para acessar o segredo!

from synapse.ml.core.platform import find_secret

# Fill in the following lines with your service information
service_name = "<myopenaiservice>" # Name of your OpenAI service
deployment_name = "<text-davinci-003>" # Name of your deployment in OpenAI
key = find_secret("<secretname>", "<keyvaultname>")  # replace this with your secret and keyvault

Em seguida, carregamos os dados em um dataframe e o exibimos para confirmar que tudo foi carregado conforme o esperado.

from pyspark.sql.types import *
from pyspark.sql.functions import *

df = spark.read.option('header', 'true') \
                .option('delimiter', '|') \
                .csv('abfss://demodata@adlsstorage.dfs.core.windows.net/RestaurantReview.csv')

display(df)
thumbnail image 3 of blog post titled 
	
	
	 
	
	
	
				
		
			
				
						
							Using OpenAI GPT in Synapse Analytics

Agora que temos nossos dados em um dataframe, podemos começar a trabalhar com eles. Para usar os modelos Azure OpenAI GPT, precisamos fornecer a eles instruções textuais ou prompts. O Azure OpenAI é um ótimo lugar para começar a desenvolver e testar esses prompts. O playground faz parte do Azure OpenAI Studio. Para acessar o playground, você precisará primeiro de um recurso Azure OpenAI. Abaixo você pode encontrar o prompt que foi usado no Synapse para classificar os comentários. Foi fornecido ao OpenAI três opções de classificação: Positivo, Negativo e Neutro.

thumbnail image 4 of blog post titled 
	
	
	 
	
	
	
				
		
			
				
						
							Using OpenAI GPT in Synapse Analytics

Todavia, isso se traduz no seguinte código pyspark. Ainda assim, foi gerado uma coluna chamada “prompt” e foi criado um dataframe para armazenar os resultados. Esta coluna será enviada para o Azure OpenAI como solicitação de classificação.

dfprompt = df.withColumn("prompt",\
                concat(lit("Classify the sentiment of following restaurant review. \n \
                Classifications: [Positive, Negative , Neutral] \n Review:\"\"\" ")\
                , col("Review")\
                ,lit("\"\"\"\nClassification:")))\
            

display(dfprompt)
thumbnail image 5 of blog post titled 
	
	
	 
	
	
	
				
		
			
				
						
							Using OpenAI GPT in Synapse Analytics

Em seguida, foi usado as bibliotecas SynapseML para aplicar o serviço de conclusão OpenAI ao dataframe. Assim sendo, foi criado um objeto OpenAICompletion, que servirá como um cliente distribuído. Ele usará as variáveis ​​que criamos anteriormente para definir as configurações de conexão. Além disso, as seguintes configurações são particularmente importantes:

  • setPromptCol: O nome da coluna que contém o prompt
  • setErrorCol: O nome da coluna que será criada para armazenar os erros retornados
  • setOutputCol: O nome da coluna que será criada para armazenar a resposta
from synapse.ml.cognitive import OpenAICompletion

completion = (
    OpenAICompletion()
    .setSubscriptionKey(key)
    .setDeploymentName(deployment_name)
    .setUrl("https://{}.openai.azure.com/".format(service_name))
    #.setMaxTokens(200)
    .setPromptCol("prompt")
    .setErrorCol("error")
    .setOutputCol("response")
)

Todavia, agora que configuramos o cliente OpenAICompletion, podemos começar a usá-lo. Por conseguinte, fazemos isso usando a função “transform” passando no dataframe com a coluna prompt como entrada. Ademais, isso criará duas colunas: “error”, que deve estar vazia, e “response”, que contém a resposta JSON de nossa chamada de API.

from pyspark.sql.functions import col

completed_df = completion.transform(dfprompt).cache()

display(completed_df)
thumbnail image 6 of blog post titled 
	
	
	 
	
	
	
				
		
			
				
						
							Using OpenAI GPT in Synapse Analytics

A única etapa restante é analisar o JSON e extrair dele a classificação de sentimento.

from pyspark.sql.functions import col

display(
    completed_df.select( 
        col('Restaurant'), 
        col('Review'), 
        col('response.choices.text').getItem(0).alias('openai_sentiment')     
    )
    
)
thumbnail image 7 of blog post titled 
	
	
	 
	
	
	
				
		
			
				
						
							Using OpenAI GPT in Synapse Analytics

Isso é tudo que você precisa fazer para começar a usar os modelos Azure OpenAI GPT no Synapse Spark! Ademais, os modelos GPT são incrivelmente versáteis e estou ansioso para ver que tipo de casos de uso você pode criar. Em resumo, se precisar de inspiração, confira os notebooks usados ​​no Synapse Espresso, todos disponíveis no Github . A saber, agora cabe a você começar a criar scripts e se divertir!

Arbit: Especialista em Azure Synapse Analytics!

Pode não ser parecer fácil gerar valor para seus dados, mas a Arbit, pode ajudá-lo. Há mais de 20 anos atuando com inteligência de dados, a Arbit possui especialistas para implementar as melhores soluções ao seu ambiente de negócios. Fale conosco agora mesmo

Deixe um comentário

O seu endereço de e-mail não será publicado.