Skip to content

ahoymarcus/azure-openai-api-kernel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 

Repository files navigation

Azure OpenAI API and Semantic Kernel

De acordo com a documentação da Microsoft, a API de chamada para a Azure OpenAI Service funcionaria a partir da interação de três camadas:

  1. Control Plane: esta camada tem um contexto que se assemelha a todos os demais painéis de controles para serviços da Azure OpenAI, de modo que por meio dela seria possível realizar tarefas como criar recursos e instanciar modelos.
  2. Data Plane - authoring: já o contexto dessa camada da API estaria relacionado com tarefas como Fine-Tunning, File-Upload, Ingestion Jobs, Batch, etc.
  3. Data Plane - inference: finalmente, nesta camada a API dispões capacidades para tarefas relacionadas com as Completions, Chat Completions, Embeddings, Speech/Whisper, Dall-e, Assistants, etc.

Assim, por meio dessas três camadas da especificação da API do Azure OpenAI todos os modelos, todos os recursos e todas as capacidades do serviço poderiam ser alcançados pelos desenvolvedores.

Autenticação na API

Em termos de autenticação há dois métodos:

  1. Autenticação pela API Key: neste caso a api-key é inserida na header da chamada.
  2. Autenticação por meio do Microsoft ID: segundo a documentação este método é um pouco mais complexo e exige a formatação do ID da Microsoft para a construção do header das chamadas.

"You can authenticate an API call using a Microsoft Entra token. Authentication tokens are included in a request as the Authorization header. The token provided must be preceded by Bearer, for example Bearer YOUR_AUTH_TOKEN."
Azure OpenAI Service REST API reference

Exemplo de Interação com a API do Azure OpenAI

Tip

Exemplo de uma URL de chamada para um recurso: POST https://{endpoint}/openai/deployments/{deployment-id}/completions?api-version=2024-10-21

E por meio da estrutura de um JSON é possível transmitir parâmetros para o prompt com o qual interagimos:

{
 "prompt": [
  "tell me a joke about mango"
 ],
 "max_tokens": 32,
 "temperature": 1.0,
 "n": 1
}

Acima podemos ver a passagem de um parámetro para o prompt, bem como parâmetros relacionados à estruturação da resposta por parte do modelo de IA.

Assim, por meio do parâmetro max_tokes o desenvolvedor pode especificar o número máximo de tokes gastos para um resposta, enquanto por meio da temperature ele define o percentual probabilístico ou determinístico das respostas, enquanto que em n é definido o número de compleitions que o desenvolvedor espera receber na resposta.

As repostas às chamada também são recebidas por meio de JSON de forma que é possível ao desenvolvedor construir a sua saída para o usuário de acordo com a escolha dos campos recebidos pela estrutura de JSON.

Outros parâmetros possíveis seriam:

  • Top-p
  • Presence/Frequence penalties, etc.

Desenvolvimento e Linguagens

A API da Azure OpenAI possui bibliotecas especiais chamadas de Assistants (ou Assistentes) que visam para auxiliar na preparação das chamadas e na personalização dos modelos, e que podem ser usadas nas seguintes linguagens:

  • Python
  • Go
  • Java
  • JavaScript: deprecated
  • C#

Abaixo temos Um exemplo da criação de um Assistente com a linguagem Python:

from openai import AzureOpenAI
    
client = AzureOpenAI(
    api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
    api_version="2024-08-01-preview",
    azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT")
    )

assistant = client.beta.assistants.create(
  instructions="You are an AI assistant that can write code to help answer math questions",
  model="<REPLACE WITH MODEL DEPLOYMENT NAME>", # replace with model deployment name. 
  tools=[{"type": "code_interpreter"}]
)

Introdução ao Semantic Kernel

A documentação da Microsoft define o Semantic Kernel como um kit de desenvolvimento leve e open-source destinado a facilitar a criação de agents e para a integração aos modelos de IA a partir de códigos pelas linguagens C#, Python ou Java.

"Microsoft and other Fortune 500 companies are already leveraging Semantic Kernel because it’s flexible, modular, and observable. Backed with security enhancing capabilities like telemetry support, and hooks and filters so you’ll feel confident you’re delivering responsible AI solutions at scale."
Introduction to Semantic Kernel

Imagem representativa do Semantic Kernel

Em termos práticos, o semantic kernel funcionaria como um middleware para facilitar o processo da construção de código modular e também para facilitar as tarefas de estender recursos, como, por exemplo, das especificações para o 365 Copilot*.

Ademais, a documentação acrescenta também que por se tratar de uma funcionalidade amplamente integrada à API, o semantic kernel ofereceria ao desenvolvedor uma extraordinária flexibilidade para alcançar "all of the services and plugins necessary to run both native code and AI services", além de capaz de ser usado por praticamente todos os componentes da SDK para trazer funcionalidades aos agentes criados:

"This is extremely powerful, because it means you as a developer have a single place where you can configure, and most importantly monitor, your AI agents. Take for example, when you invoke a prompt from the kernel. When you do so, the kernel will...\

  1. Select the best AI service to run the prompt.\
  2. Build the prompt using the provided prompt template.\
  3. Send the prompt to the AI service.\
  4. Receive and parse the response.\
  5. And finally return the response from the LLM to your application."
    Introduction to Semantic Kernel

A figura abaixo traz exemplos dos recursos e das capacidades que o semantic kernel disponibiliza aos desenvolvedores:

Imagem representando as capacidades de funções e de plugins do semantic kernel

E abaixo temos uma lista dos serviços já disponibilizados pelo semantic kernel, ainda que nem todos os serviços estejam plenamente implantados em cada uma das linguagens de programação especificadas:

  1. Chat Complition
  2. Text Generation
  3. Embedding Generation (Experimental)
  4. Text-to-Image (Experimental)
  5. Image-to-Text (Experimental)
  6. Text-to-Audio (Experimental)
  7. Audio-to-Text (Experimental)
  8. Realtime (Experimental)
  • Referências:
  1. Azure OpenAI Service REST API reference
  2. Introduction to Semantic Kernel

My Courses and Bootcamps at DIO:

Hello there, my name is Marcus Richa and I would like to present here some of my personal experiences within the the DIO educational platform!

  • Linux Experience - bootcamp 44h - Fev. 2025 (Certificado)
  • Microsoft AI for Tech - OpenAI Services - em andamento.

Links:

About

Repositório para a aula Azure OpenAI API e Semantic Kernel da DIO

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published