Pular para o conteúdo principal

Tutorial da API Grok Voice Transcribe 2.0: construa um transcritor de chamadas de suporte em tempo real

Aprenda a criar, em Python, um transcritor de chamadas de suporte em tempo real com a API Grok Voice Transcribe 2.0 e adicione diarização, Smart Turn e áudio telefônico 8 kHz.
Actualizado 5 de out. de 2026  · 12 min leer

Explore com IA

ChatGPTClaudePerplexity

O Grok Voice Transcribe 2.0 da SpaceXAI é um modelo de fala para texto. Neste tutorial da API Grok Voice Transcribe 2.0, você envia gravações via REST e áudio ao vivo por WebSocket. A API retorna texto, tempos por palavra, IDs opcionais de falantes e eventos de fim de turno; ela não responde ao interlocutor.

Uma chamada de suporte é bem mais desafiadora do que um único narrador em estúdio. Há pausas curtas, nomes pouco comuns, vários falantes e dados de contato ditados por uma linha de 8 kHz. Nosso projeto, chamado Qivora Sync, dá um fio condutor ao tutorial: um cliente relata falha na sincronização de arquivos, o agente coleta os contatos e um engenheiro de escalonamento entra na chamada. O mesmo cliente em Python lida primeiro com a gravação e depois com o áudio ao vivo.

Para fala para fala, quando o modelo responde diretamente ao interlocutor, veja nosso tutorial Grok Voice Think Fast 2.0. O código deste tutorial está no repositório no GitHub.

Resumo

Sem tempo? Aqui está o que a chamada mostrou.

  • POST /v1/stt processa áudio gravado e wss://api.x.ai/v1/stt processa áudio ao vivo, com controles compartilhados para diarização, termos-chave, preenchimentos e tratamento de áudio.

  • Um termo-chave corrigiu o nome de produto inventado, mas um viés de vocabulário muito forte puxou um eco sutil para esse nome em um teste com falante ao vivo.

  • Os rótulos de falante ficaram estáveis no áudio limpo, mas ficaram pouco confiáveis a 8 kHz.

  • A troca para árabe permaneceu em escrita árabe, e format=true corrigiu o número de telefone, mas só meio corrigiu o e-mail.

  • Na longa pausa no meio do número, o Smart Turn cruzou todos os limiares testados, então só ajustar o limiar não bastou.

Engenheiro associado de IA para cientistas de dados

Treine e faça o ajuste fino dos modelos de IA mais recentes para produção, incluindo LLMs como o Llama 3. Comece sua jornada para se tornar um engenheiro de IA hoje mesmo!
Explorar a Trilha

O que é o Grok Voice Transcribe 2.0?

O Grok Voice Transcribe 2.0 (grok-voice-transcribe-2.0) é o modelo de fala para texto da SpaceXAI. A rota REST transcreve um arquivo finalizado, enquanto o WebSocket lida com áudio ao vivo.

O anúncio do Grok Voice Transcribe 2.0 da SpaceXAI destaca chamadas telefônicas, múltiplos falantes, credenciais e fala multilíngue. Para comparações de benchmark, veja nosso panorama do Grok Voice Transcribe 2.0.

Construindo um transcritor de suporte em tempo real

O cenário controlado do Qivora Sync permanece fixo enquanto o áudio e as configurações da API mudam. A chamada inclui um nome de produto inventado, preenchimentos, troca de idioma, dados de contato ditados, uma pausa durante a digitação e um terceiro falante.

O pipeline da chamada de suporte Qivora Sync: três falantes entram no Grok Voice Transcribe 2.0 e saem como uma transcrição ao vivo com diarização

Três falantes viram uma transcrição ao vivo. Imagem do autor.

Criando a chamada com três falantes

O cenário controlado usa três vozes distintas do Grok Text to Speech API. Cada trecho de idioma é sintetizado separadamente e unido com ffmpeg para que os pontos de troca permaneçam fixos. A API também aceita language=auto; requisições separadas são uma escolha de design do experimento, não uma exigência da API.

Definindo a transcrição esperada

Antes da primeira requisição, defina o texto esperado, falantes, grafia do produto, dados do cliente, preenchimentos e pausas. Assim, cada configuração terá o mesmo alvo.

Configurando o Grok Voice Transcribe 2.0 em Python

Instale as dependências antes de enviar o áudio.

Pré-requisitos

Você precisa do Python 3.10 ou superior, de uma chave de API xAI e do ffmpeg para montar o áudio. Os clientes em Python usam requests, websockets e python-dotenv.

A documentação de Speech to Text informa que a versão 2.0 é o padrão quando você omite model, e que grok-voice-transcribe-1.0 chegou ao fim de vida em 2 de outubro de 2026. Ainda assim, eu fixaria o ID versionado.

Instalando dependências e montando o áudio

Clone o repositório, adicione sua chave ao .env e gere o áudio de exemplo:

git clone https://github.com/KhalidAbdelaty/grok-voice-transcribe-2.0.git
cd grok-voice-transcribe-2.0
pip install -r requirements.txt
cp .env.example .env    # depois cole sua chave no .env
python project/scripts/make_fixtures.py

O comando de setup cria o diálogo e os arquivos de áudio usados depois. Se você tiver sua própria gravação, pode pular esse comando.

Um .env escrito no Windows pode deixar um \r na chave, e o requests rejeita o header antes de algo chegar à SpaceXAI. Remova espaços/quebras da chave antes de usá-la no header de autorização.

Criando uma linha de base por transcrição em lote

A linha de base é o modelo sem nada ativado, para que cada mudança posterior tenha com o que comparar. A primeira requisição envia o arquivo e um modelo fixado:

import os
import requests
from dotenv import load_dotenv

load_dotenv()
api_key = os.environ["XAI_API_KEY"].strip()

with open("support_call.wav", "rb") as audio_file:
    response = requests.post(
        "https://api.x.ai/v1/stt",
        headers={"Authorization": f"Bearer {api_key}"},
        data=[("model", "grok-voice-transcribe-2.0")],
        files={"file": ("support_call.wav", audio_file, "audio/wav")},
    )

response.raise_for_status()
result = response.json()

A resposta traz text, language detectado, duration e um array words com tempos. A referência REST mostra confidence por palavra, mas esse campo não apareceu nas respostas em lote deste cenário. Trate-o como opcional e verifique cada resposta antes de usar. Coloque campos opcionais antes de file; campos depois podem ser ignorados.

Na linha de base, os preenchimentos foram removidos, o árabe ficou em escrita árabe e os dígitos ditos permaneceram separados. O nome de produto inventado saiu grafado errado de forma consistente.

Adicionando diarização, termos-chave e formatação

Uma transcrição de suporte precisa de rótulos de falante, grafia correta do produto e dados de contato utilizáveis. Cada ajuste é mais um campo no formulário:

data = [
    ("model", "grok-voice-transcribe-2.0"),
    ("diarize", "true"),         # um id de falante em cada palavra
    ("keyterm", "Qivora Sync"),  # repita o campo para mais termos
    ("language", "en"),          # exigido pelo format
    ("format", "true"),          # inverse text normalization
    ("filler_words", "false"),   # padrão; true mantém "uh" e "um"
]

Ative uma opção por vez no mesmo áudio. Comece pelos rótulos de falante.

Agrupando palavras em turnos de fala

Diarização de falantes atribui IDs numéricos, não nomes. Agrupe palavras consecutivas com o mesmo ID para formar os turnos:

def group_turns(words):
    turns = []
    for word in words:
        if turns and turns[-1]["speaker"] == word.get("speaker"):
            turns[-1]["words"].append(word["text"])
            turns[-1]["end"] = word["end"]
        else:
            turns.append({"speaker": word.get("speaker"), "start": word["start"],
                          "end": word["end"], "words": [word["text"]]})
    for turn in turns:
        turn["text"] = " ".join(turn.pop("words"))
    return turns

Em áudio limpo, cada turno conhecido manteve um ID consistente. Mapear nomes pela ordem de primeira aparição só funciona quando a ordem dos falantes já é conhecida; sistemas de produção precisam do próprio mapeamento.

Transcrição diarizada da chamada Qivora Sync mostrando três turnos de falantes separados com carimbos de tempo

Áudio limpo mantém rótulos de falante consistentes. Imagem do autor.

Usando viés por termo-chave para nomes de produto

O viés por termo-chave é uma dica por requisição, não treinamento. Passe keyterm=Qivora Sync (até 100 termos, 50 caracteres cada), e o modelo tende àquela grafia quando o áudio sustenta.

O termo-chave corrigiu o erro de grafia do nome do produto na linha de base sem alterar o restante da transcrição.

Em um teste à parte, com falante ao vivo, um vocabulário fortemente enviesado puxou um eco sutil para o termo-chave. Isso não significa que termos-chave criem texto falso sozinhos; significa que áudio ambíguo ainda precisa de checagem de eco.

Transcrevendo trocas entre inglês e árabe

Como a linha de base mostrou, o árabe do Khalid permaneceu em escrita árabe. O resultado foi o mesmo com detecção automática e com language=en, porque language define regras de formatação, não força um idioma de saída.

Formatando números de telefone e e-mails ditados

A linha de base manteve dígitos ditos de forma separada. A Inverse Text Normalization (ITN) transforma fala em escrita. format=true ativa isso e requer language, senão a requisição falha com 400.

O telefone virou uma sequência contínua de dígitos. O e-mail foi apenas parcialmente normalizado: a pontuação melhorou, mas o "at" falado e o domínio soletrado ainda precisaram de ajuste.

Esse resultado desigual frustra. ITN formata texto; não valida contatos. Eu validaria ambos os campos antes de armazenar.

A ITN também pode reescrever durações comuns como quantidades abreviadas. Na resposta formatada em lote deste cenário, apenas o text de nível superior foi normalizado; o array words manteve a forma falada.

Mantendo ou removendo palavras de preenchimento

Como a linha de base mostrou, preenchimentos são removidos de text e words por padrão. filler_words=true trouxe de volta os "uh" e "um" do Khalid nos pontos esperados. Deixe desligado para notas de suporte e ligado para registro verbatim de QA.

A saída em lote inclui falantes, vocabulário, formatação e controle de preenchimentos. Em seguida, envie o mesmo áudio como stream ao vivo.

Transmitindo o Grok Voice Transcribe 2.0 por WebSocket

A rota de streaming usa parâmetros de query em vez de mensagem de setup. Aguarde transcript.created, envie áudio binário bruto (sem base64) e finalize com {"type": "audio.done"}. Nosso tutorial do GPT Live Transcribe usa o mesmo padrão com outro modelo.

Comece entendendo os eventos e depois conecte o cliente.

Em lote, usa-se o format=true documentado com language=en. A documentação de streaming diz que language liga a ITN, mas, em uma sonda ao vivo, language=en sozinho não alterou a transcrição. A lista de query do WebSocket não inclui format, então este tutorial trata a ITN em streaming como comportamento a verificar, não como dependência.

Lendo eventos parciais e finais

Cada atualização de transcrição é um evento transcript.partial com dois booleanos. O texto intermediário ainda pode mudar. Um chunk final (is_final=true) trava cerca de 3 segundos de texto enquanto o turno permanece aberto, e um final de enunciado (speech_final=true) fecha o turno.

Fluxo de eventos de streaming: de transcript created passando por interim, chunk-final, utterance-final até transcript done

Os estados de streaming levam o texto à finalização. Imagem do autor.

Transmitindo áudio PCM 16 kHz em Python

Para streaming, reamostre a fonte para PCM mono 16 bits a 16 kHz antes. O cliente central envia blocos de 100 milissegundos em ritmo de tempo real enquanto outra tarefa recebe os eventos da transcrição:

import asyncio, json, os, wave
import websockets
from dotenv import load_dotenv 

load_dotenv()

url = ("wss://api.x.ai/v1/stt?model=grok-voice-transcribe-2.0"
       "&sample_rate=16000&encoding=pcm&interim_results=true&diarize=true")
headers = {"Authorization": f"Bearer {os.environ['XAI_API_KEY'].strip()}"}

async def stream_call(path):
    async with websockets.connect(url, additional_headers=headers) as ws:
        assert json.loads(await ws.recv())["type"] == "transcript.created"

        async def send():
            with wave.open(path, "rb") as wf:
                assert wf.getframerate() == 16000
                assert wf.getnchannels() == 1
                assert wf.getsampwidth() == 2
                while chunk := wf.readframes(1600):
                    await ws.send(chunk)
                    await asyncio.sleep(0.1)
            await ws.send(json.dumps({"type": "audio.done"}))

        async def receive():
            async for raw in ws:
                event = json.loads(raw)
                if event["type"] == "transcript.partial":
                    print(event["text"])
                elif event["type"] == "transcript.done":
                    break

        await asyncio.gather(send(), receive())

O texto intermediário cresceu cerca de a cada meio segundo. É uma medida local, não latência oficial.

Terminal mostrando legenda parcial atualizando até virar uma linha final da transcrição

Legendas parciais se consolidam na transcrição final. Imagem do autor.

Chunks finais congelam o texto sem fechar o turno. O Smart Turn controla quando speech_final fecha o turno.

Mantendo os chunks da transcrição em ordem

Exibir apenas o evento ativo faz as palavras anteriores desaparecerem após o final de cada chunk, porque o próximo interim recomeça a partir do áudio de entrada.

Guarde cada chunk travado, anexe o interim atual e deixe o final do enunciado substituir ambos.

Assim o texto cresce sem perder os chunks anteriores. Com o estado de exibição resolvido, as fronteiras de turno são o problema restante no streaming.

Usando o Smart Turn para detectar fim de turno

O Smart Turn avalia cada silêncio e estima se o falante terminou. Ele existe para o número do Khalid: "zero one zero, five five five, [pausa], one two three four", em que só o silêncio não distingue uma pausa de pensamento do fim.

Testando o limiar do Smart Turn

O limiar não é a confiança de transcrição nem o limiar de VAD. É a probabilidade de fim de turno que um silêncio precisa superar para speech_final disparar; abaixo dela, o turno fica aberto. Dois parâmetros de query definem isso:

params += [
    ("smart_turn", "0.7"),           # prob. de fim de turno necessária para fechar
    ("smart_turn_timeout", "3000"),  # fecha de qualquer forma após 3 s de silêncio
]

A documentação chama 0,5 de equilibrado, 0,7 de conservador para sequências numéricas e 0,9 de muito conservador. Neste cenário, pausas mais curtas que a janela padrão de endpointing não produziram uma decisão útil do Smart Turn. É um resultado observado, não uma regra de tempo documentada.

No teste de streaming, parar de enviar quadros de áudio não avançou o temporizador de silêncio observado. Continuar enviando silêncio digital permite que o Smart Turn feche o enunciado.

Estender a pausa durante a ditagem do número torna o comportamento visível. Pausas curtas ficam dentro de um turno, enquanto uma pausa longa divide o turno em todos os limiares quando a confiança supera os três ajustes.

Linha do tempo do enunciado com o número de telefone mostrando fala, pausas e a confiança de fim de turno em cada limiar

Pausas longas podem dividir a ditagem do número. Imagem do autor.

Chamadores humanos são menos previsíveis. Uma sequência curta de dígitos pode parecer concluída e, em seguida, o cliente continua.

Se o Smart Turn fechar durante a ditagem, aguarde um instante e una uma continuação antes de responder.

Definindo um timeout do Smart Turn

smart_turn_timeout fecha um turno após um silêncio fixo, mesmo quando o Smart Turn está inseguro. No stream rápido de três falantes, o Smart Turn agrupou vários turnos conhecidos antes de um timeout forçar o fechamento.

Se você já sabe onde os turnos acabam, envie {"type": "finalize"} em cada fronteira; caso contrário, combine Smart Turn com um timeout.

Com as fronteiras controladas, o mesmo interlocutor precisa sobreviver a uma linha de 8 kHz.

Transcrevendo áudio telefônico 8 kHz

Aqui, áudio em qualidade telefônica é G.711 mu-law de 8 kHz, gerado da mesma chamada:

ffmpeg -i support_call.wav -ar 8000 -ac 1 -f mulaw support_call_8k.raw

Áudio de telefonia bruto não tem contêiner, então defina audio_format=mulaw e sample_rate=8000 no formulário em lote, ou encoding=mulaw&sample_rate=8000 no socket. Verifique texto e rótulos de falante separadamente.

Comparando áudio limpo e telefônico

As conclusões sobre termos-chave, formatação e troca de idioma mudaram pouco a 8 kHz.

Os rótulos de falante ficaram menos confiáveis. A versão telefônica introduziu um ID extra de falante e atribuiu um turno final à pessoa errada. Só contar segmentos esconde ambos os erros.

A versão instável limita a banda do áudio entre 300–3400 Hz, codifica em mu-law 8 kHz e descarta cada pacote de 20 ms com probabilidade de 0,03. Uma semente fixa 7 mantém as mesmas falhas em cada reprodução.

Essa perda de pacotes não alterou muito a transcrição em inglês neste sample, e os dados de contato ditados permaneceram na ordem. Este resultado vale apenas para este sample.

A simulação telefônica estreita o áudio e perde pacotes. Imagem do autor.

Ajustando o VAD para áudio telefônico

A detecção de atividade de voz (VAD) decide se há fala no áudio. A documentação sugere reduzir vad_threshold para fala telefônica mais baixa, com risco de texto espúrio por ruído.

Reduzir vad_threshold não mudou nada no áudio telefônico limpo porque não havia fala baixa a recuperar. O resultado nulo apoia uma regra: diminua o limiar apenas quando a fala telefônica estiver sumindo.

Usando transcrição multicanal para separar falantes

Use um formulário em lote novo, sem diarize:

data = [
    ("model", "grok-voice-transcribe-2.0"),
    ("multichannel", "true"),
]

A API detecta a contagem de canais a partir de um WAV ou outro contêiner. Para áudio multicanal bruto, adicione ("channels", "3"); no WebSocket, entrada multicanal também requer contagem explícita de canais.

Envie o formulário com o arquivo multicanal pela requisição REST mostrada antes e depois leia result["channels"]. Cada item contém um índice, texto e palavras com tempos. No cenário controlado de três canais, cada canal continha apenas seu falante atribuído. Em streaming, o mesmo corte se aplica e os eventos trazem channel_index.

Eu usaria perna separada sempre que o sistema telefônico fornecer. Diferente da diarização na seção de áudio telefônico, uma divisão conhecida não infere falantes.

Montando o transcritor completo de suporte em Python

O cliente completo expõe um conjunto de configurações e depois monta o formulário REST ou a URL do WebSocket separadamente. As configurações compartilhadas cobrem diarização, termos-chave, preenchimentos, codificação de áudio e tratamento de turnos; a formatação segue as regras específicas do transporte vistas antes.

Aplique as configurações finais a uma gravação em qualidade telefônica e depois verifique grafia do produto, trocas de idioma, dados de contato e rótulos de falante separadamente. No cenário controlado, os checks de texto passaram enquanto um rótulo de falante ainda exigiu revisão. Salve as configurações e o mapeamento de falantes com cada transcrição para que comparações futuras usem o mesmo setup.

Explorando a demo completa de voice agent

O tutorial de transcrição de suporte termina nesse check final. O repositório também traz uma extensão de voice agent com respostas geradas, saída falada, interrupções e tratamento de eco.

No demo, Transcribe mantém o mesmo papel: produzir texto. Um modelo de linguagem escreve as respostas e o Grok TTS as fala.

A chamada ao vivo troca as rotas de áudio no meio da conversa. Vídeo do autor.

Limitações do Grok Voice Transcribe 2.0

Transcrições de suporte podem conter nomes, telefones e e-mails. O FAQ de segurança da SpaceXAI informa que armazena dados de API criptografados em repouso por 30 dias para auditoria de abuso. A SpaceXAI também diz que não treina com os dados sem permissão. Times elegíveis podem ativar Zero Data Retention no nível do time.

Mantenha a chave da API no seu servidor. A documentação de Speech-to-Text recomenda fazer proxy do WebSocket pelo seu backend.

Uma chamada controlada não representa todo sotaque, ambiente ou linha telefônica. Valide as configurações com áudio do ambiente-alvo antes de usar em produção.

Erros comuns e solução de problemas

A maioria das falhas aqui vem de formatação de áudio ou manejo do socket:

  • InvalidHeader ... return character(s) in header value é o \r do Windows na chave.

  • Um 400 pode indicar falta de file ou url, formato não suportado, áudio bruto sem sample_rate ou format=true sem language.

  • No teste de streaming, parar os quadros de áudio não avançou o temporizador de silêncio observado; continuar enviando silêncio digital permitiu que o turno fechasse.

  • cannot call recv while another coroutine is already running recv significa duas corrotinas lendo o mesmo socket. Dê a cada conexão um único leitor.

  • Nesta configuração no Windows, o processamento de áudio na entrada cortou sílabas baixas. Desativá-lo ou usar captura exclusiva corrigiu a entrada.

Se nenhum desses casos se aplicar, compare os eventos brutos com o áudio de origem para isolar a causa.

Preços do Grok Voice Transcribe 2.0

A página de preços da SpaceXAI lista transcrição a US$ 0,10 por hora via REST e US$ 0,20 por hora em streaming. O anúncio diz que diarização, timestamps e termos-chave estão incluídos. Calcule o custo pela duração do áudio, não pelo número de requisições.

Cada stream aberto cobra sua própria duração de áudio. Um segundo ouvinte adiciona custo de streaming e dobra os minutos de STT apenas quando ambos os streams recebem a mesma duração completa.

Considerações finais

Eu não avaliaria um transcritor de chamadas só com áudio limpo. A seção de áudio telefônico mostra o porquê.

A API retorna dados de transcrição; o cliente ainda é responsável pelo estado da conversa e pela validação. Além disso, mantenha o ID versionado do modelo. Trate os demais ajustes como ponto de partida e teste com o áudio-alvo.

As próximas extensões são entrada via telefone SIP, vocabulário por chamada e exportação para CRM. Se você quer um agente em vez de um transcritor, nosso tutorial da API Grok Voice Agent cobre esse caminho.

FAQs

O Grok Voice Transcribe 2.0 suporta transcrição em tempo real?

Sim, via WebSocket, e não só como PCM bruto. Um cliente com banda limitada pode transmitir com encoding=opus, cerca de 4 KB/s contra 48 KB/s do PCM de 24 kHz, desde que cada frame leve um pacote Opus. Opus é apenas mono, então não suporta streaming multicanal.

O Grok Voice Transcribe 2.0 suporta diarização de falantes?

Defina diarize=true em qualquer endpoint. Na resposta em streaming diarizada deste cenário, as palavras também incluíram um campo não documentado speaker_confidence. Eu não basearia lógica de aplicação nele. Trate IDs de falante como rótulos locais da requisição ou sessão, não como reconhecimento persistente de identidade.

O Grok Voice Transcribe 2.0 consegue transcrever vários idiomas em uma gravação?

A detecção automática pode preservar uma troca de idioma no meio da gravação sem dica. O parâmetro language controla a formatação para 25 idiomas listados, incluindo árabe (ar), então teste o idioma relevante com seu próprio áudio antes de depender de saída formatada.

Qual é a diferença entre Smart Turn e VAD?

VAD pergunta se há fala; o Smart Turn pergunta se a fala terminou. vad_threshold é 0,5 por padrão em lote e 0,08 no stream. endpointing é 400 ms por padrão e define o silêncio necessário antes de um enunciado poder fechar.

Posso transcrever uma gravação a partir de uma URL em vez de fazer upload de arquivo?

Use o campo url do endpoint em lote em vez de file. A SpaceXAI baixa a gravação do lado do servidor e, se a transferência falhar, retorna 502.


Khalid Abdelaty's photo
Author
Khalid Abdelaty
LinkedIn

Sou engenheiro de dados e criador de comunidades que trabalha com pipelines de dados, nuvem e ferramentas de IA, além de escrever tutoriais práticos e de alto impacto para o DataCamp e desenvolvedores iniciantes.

Temas
Inteligência Artificial
Agentes de IA

Aprenda IA com a DataCamp!

Programa

Associate AI Engineer para desenvolvedores

26 h
Aprenda a integrar IA em aplicações de software usando APIs e bibliotecas de código aberto. Comece hoje sua jornada para se tornar um AI Engineer!
Ver detalhesRight Arrow
Começar Curso
Ver maisRight Arrow
Relacionado

Tutorial

Guia para iniciantes no uso da API do ChatGPT

Este guia o orienta sobre os conceitos básicos da API ChatGPT, demonstrando seu potencial no processamento de linguagem natural e na comunicação orientada por IA.
Moez Ali's photo

Moez Ali

11 min

Tutorial

Como usar a API de conversão de texto em fala da OpenAI

A API TTS da OpenAI é um ponto de extremidade que permite que os usuários interajam com seu modelo de IA TTS que converte texto em linguagem falada com som natural.
Kurtis Pykes 's photo

Kurtis Pykes

12 min

Tutorial

Um guia para iniciantes na engenharia de prompts do ChatGPT

Descubra como fazer com que o ChatGPT forneça os resultados que você deseja, fornecendo a ele as entradas necessárias.
Matt Crabtree's photo

Matt Crabtree

6 min

Tutorial

Tutorial de chamada de função do OpenAI

Saiba como o novo recurso de Chamada de Função da OpenAI permite que os modelos GPT gerem saída JSON estruturada, resolvendo problemas comuns de desenvolvimento causados por saídas irregulares.
Abid Ali Awan's photo

Abid Ali Awan

8 min

Tutorial

Tutorial da API de assistentes da OpenAI

Uma visão geral abrangente da API Assistants com nosso artigo, que oferece uma análise aprofundada de seus recursos, usos no setor, orientação de configuração e práticas recomendadas para maximizar seu potencial em vários aplicativos de negócios.
Zoumana Keita 's photo

Zoumana Keita

14 min

Tutorial

Guia de torchchat do PyTorch: Configuração local com Python

Saiba como configurar o torchchat do PyTorch localmente com Python neste tutorial prático, que fornece orientação e exemplos passo a passo.
Ver MaisVer Mais