Skip to content

Latest commit

 

History

History
667 lines (464 loc) · 29.2 KB

File metadata and controls

667 lines (464 loc) · 29.2 KB

Construindo Aplicações de Geração de Texto

Construindo Aplicações de Geração de Texto

(Clique na imagem acima para assistir ao vídeo desta lição)

Você já viu até agora, através deste currículo, que há conceitos principais como prompts e até uma disciplina inteira chamada "engenharia de prompts". Muitas ferramentas com as quais você pode interagir, como ChatGPT, Office 365, Microsoft Power Platform e mais, permitem que você use prompts para realizar algo.

Para adicionar tal experiência a um aplicativo, você precisa entender conceitos como prompts, conclusões e escolher uma biblioteca para trabalhar. É exatamente isso que você aprenderá neste capítulo.

Introdução

Neste capítulo, você irá:

  • Aprender sobre a biblioteca openai e seus conceitos principais.
  • Construir um aplicativo de geração de texto usando openai.
  • Entender como usar conceitos como prompt, temperatura e tokens para construir um aplicativo de geração de texto.

Objetivos de aprendizado

Ao final desta lição, você será capaz de:

  • Explicar o que é um aplicativo de geração de texto.
  • Construir um aplicativo de geração de texto usando openai.
  • Configurar seu aplicativo para usar mais ou menos tokens e também alterar a temperatura, para um resultado variado.

O que é um aplicativo de geração de texto?

Normalmente, quando você constrói um aplicativo, ele tem algum tipo de interface, como a seguinte:

  • Baseado em comandos. Aplicativos de console são típicos onde você digita um comando e ele executa uma tarefa. Por exemplo, git é um aplicativo baseado em comandos.
  • Interface de usuário (UI). Alguns aplicativos têm interfaces gráficas (GUIs) onde você clica em botões, insere texto, seleciona opções e mais.

Aplicativos de Console e UI são limitados

Compare com um aplicativo baseado em comandos onde você digita um comando:

  • É limitado. Você não pode simplesmente digitar qualquer comando, apenas aqueles que o aplicativo suporta.
  • Específico de linguagem. Alguns aplicativos suportam muitos idiomas, mas por padrão o aplicativo é construído para um idioma específico, mesmo que você possa adicionar suporte a mais idiomas.

Benefícios dos aplicativos de geração de texto

Então, como um aplicativo de geração de texto é diferente?

Em um aplicativo de geração de texto, você tem mais flexibilidade, não está limitado a um conjunto de comandos ou um idioma específico de entrada. Em vez disso, você pode usar linguagem natural para interagir com o aplicativo. Outro benefício é que, porque você já está interagindo com uma fonte de dados que foi treinada em um vasto corpus de informações, enquanto um aplicativo tradicional pode ser limitado ao que está em um banco de dados.

O que posso construir com um aplicativo de geração de texto?

Há muitas coisas que você pode construir. Por exemplo:

  • Um chatbot. Um chatbot respondendo perguntas sobre tópicos, como sua empresa e seus produtos, pode ser uma boa combinação.
  • Auxiliar. LLMs são ótimos em coisas como resumir texto, obter insights de texto, produzir texto como currículos e mais.
  • Assistente de código. Dependendo do modelo de linguagem que você usa, você pode construir um assistente de código que te ajuda a escrever código. Por exemplo, você pode usar um produto como GitHub Copilot assim como ChatGPT para te ajudar a escrever código.

Como posso começar?

Bem, você precisa encontrar uma maneira de integrar com um LLM, o que geralmente envolve as seguintes duas abordagens:

  • Usar uma API. Aqui você está construindo requisições web com seu prompt e obtendo texto gerado de volta.
  • Usar uma biblioteca. Bibliotecas ajudam a encapsular as chamadas de API e torná-las mais fáceis de usar.

Bibliotecas/SDKs

Existem algumas bibliotecas bem conhecidas para trabalhar com LLMs como:

  • openai, esta biblioteca facilita a conexão com seu modelo e envio de prompts.

Depois, há bibliotecas que operam em um nível mais alto como:

  • Langchain. Langchain é bem conhecido e suporta Python.
  • Semantic Kernel. Semantic Kernel é uma biblioteca da Microsoft que suporta as linguagens C#, Python e Java.

Primeiro aplicativo usando openai

Vamos ver como podemos construir nosso primeiro aplicativo, quais bibliotecas precisamos, quanto é necessário e assim por diante.

Instalar openai

Existem muitas bibliotecas por aí para interagir com OpenAI ou Azure OpenAI. É possível usar várias linguagens de programação como C#, Python, JavaScript, Java e mais. Escolhemos usar a biblioteca openai Python, então usaremos pip para instalá-la.

pip install openai

Criar um recurso

Você precisa realizar os seguintes passos:

Localizar chave API e endpoint

Neste ponto, você precisa informar à sua biblioteca openai qual chave API usar. Para encontrar sua chave API, vá para a seção "Keys and Endpoint" do seu recurso Azure OpenAI e copie o valor "Key 1".

Keys and Endpoint resource blade in Azure Portal

Agora que você copiou esta informação, vamos instruir as bibliotecas a usá-la.

Note

Vale a pena separar sua chave API do seu código. Você pode fazer isso usando variáveis de ambiente.

  • Defina a variável de ambiente OPENAI_API_KEY to your API key. export OPENAI_API_KEY='sk-...'

Configuração do Azure

Se você estiver usando Azure OpenAI, aqui está como configurar:

openai.api_type = 'azure'
openai.api_key = os.environ["OPENAI_API_KEY"]
openai.api_version = '2023-05-15'
openai.api_base = os.getenv("API_BASE")

Acima, estamos configurando o seguinte:

  • api_type to azure. This tells the library to use Azure OpenAI and not OpenAI.
  • api_key, this is your API key found in the Azure Portal.
  • api_version, this is the version of the API you want to use. At the time of writing, the latest version is 2023-05-15.
  • api_base, this is the endpoint of the API. You can find it in the Azure Portal next to your API key.

[!NOTE] > os.getenv is a function that reads environment variables. You can use it to read environment variables like OPENAI_API_KEY and API_BASE. Set these environment variables in your terminal or by using a library like dotenv.

Generate text

The way to generate text is to use the Completion class. Aqui está um exemplo:

prompt = "Complete the following: Once upon a time there was a"

completion = openai.Completion.create(model="davinci-002", prompt=prompt)
print(completion.choices[0].text)

No código acima, criamos um objeto de conclusão e passamos o modelo que queremos usar e o prompt. Então imprimimos o texto gerado.

Conclusões de chat

Até agora, você viu como estamos usando Completion to generate text. But there's another class called ChatCompletion, que é mais adequado para chatbots. Aqui está um exemplo de uso:

import openai

openai.api_key = "sk-..."

completion = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=[{"role": "user", "content": "Hello world"}])
print(completion.choices[0].message.content)

Mais sobre esta funcionalidade em um capítulo próximo.

Exercício - seu primeiro aplicativo de geração de texto

Agora que aprendemos como configurar e configurar o openai, é hora de construir seu primeiro aplicativo de geração de texto. Para construir seu aplicativo, siga estes passos:

  1. Crie um ambiente virtual e instale openai:

    python -m venv venv
    source venv/bin/activate
    pip install openai

    [!NOTE] Se você estiver usando Windows, digite venv\Scripts\activate instead of source venv/bin/activate.

    [!NOTE] Locate your Azure OpenAI key by going to https://portal.azure.com/ and search for Open AI and select the Open AI resource and then select Keys and Endpoint and copy the Key 1 value.

  2. Crie um arquivo app.py e dê a ele o seguinte código:

    import openai
    
    openai.api_key = "<replace this value with your open ai key or Azure OpenAI key>"
    
    openai.api_type = 'azure'
    openai.api_version = '2023-05-15'
    openai.api_base = "<endpoint found in Azure Portal where your API key is>"
    deployment_name = "<deployment name>"
    
    # add your completion code
    prompt = "Complete the following: Once upon a time there was a"
    messages = [{"role": "user", "content": prompt}]
    
    # make completion
    completion = openai.chat.completions.create(model=deployment_name, messages=messages)
    
    # print response
    print(completion.choices[0].message.content)

    [!NOTE] Se você estiver usando Azure OpenAI, precisa definir o api_type to azure and set the api_key para sua chave Azure OpenAI.

    Você deve ver uma saída como a seguinte:

     very unhappy _____.
    
    Once upon a time there was a very unhappy mermaid.
    

Diferentes tipos de prompts, para diferentes coisas

Agora você viu como gerar texto usando um prompt. Você até tem um programa funcionando que pode modificar e alterar para gerar diferentes tipos de texto.

Prompts podem ser usados para todo tipo de tarefas. Por exemplo:

  • Gerar um tipo de texto. Por exemplo, você pode gerar um poema, perguntas para um quiz etc.
  • Buscar informações. Você pode usar prompts para buscar informações como o seguinte exemplo 'O que significa CORS no desenvolvimento web?'.
  • Gerar código. Você pode usar prompts para gerar código, por exemplo, desenvolvendo uma expressão regular usada para validar e-mails ou por que não gerar um programa inteiro, como um aplicativo web?

Um caso de uso mais prático: um gerador de receitas

Imagine que você tem ingredientes em casa e quer cozinhar algo. Para isso, você precisa de uma receita. Uma maneira de encontrar receitas é usar um motor de busca ou você poderia usar um LLM para fazer isso.

Você poderia escrever um prompt assim:

"Mostre-me 5 receitas para um prato com os seguintes ingredientes: frango, batatas e cenouras. Por receita, liste todos os ingredientes usados"

Dado o prompt acima, você pode obter uma resposta semelhante a:

1. Roasted Chicken and Vegetables:
Ingredients:
- 4 chicken thighs
- 2 potatoes, cut into cubes
- 2 carrots, cut into cubes
- 2 tablespoons olive oil
- 2 cloves garlic, minced
- 1 teaspoon dried thyme
- 1 teaspoon dried oregano
- Salt and pepper, to taste

2. Chicken and Potato Stew:
Ingredients:
- 2 tablespoons olive oil
- 1 onion, diced
- 2 cloves garlic, minced
- 2 chicken breasts, cut into cubes
- 2 potatoes, cut into cubes
- 2 carrots, cut into cubes
- 1 teaspoon dried oregano
- 1 teaspoon dried thyme
- 1 cup chicken broth
- Salt and pepper, to taste

3. Chicken and Potato Bake:
Ingredients:
- 2 tablespoons olive oil
- 2 chicken breasts, cut into cubes
- 2 potatoes, cut into cubes
- 2 carrots, cut into cubes
- 1 onion, diced
- 2 cloves garlic, minced
- 1 teaspoon dried oregano
- 1 teaspoon dried thyme
- 1 cup chicken broth
- Salt and pepper, to taste

4. Chicken and Potato Soup:
Ingredients:
- 2 tablespoons olive oil
- 1 onion, diced
- 2 cloves garlic, minced
- 2 chicken breasts, cut into cubes
- 2 potatoes, cut into cubes
- 2 carrots, cut into cubes
- 1 teaspoon dried oregano
- 1 teaspoon dried thyme
- 4 cups chicken broth
- Salt and pepper, to taste

5. Chicken and Potato Hash:
Ingredients:
- 2 tablespoons olive oil
- 2 chicken breasts, cut into cubes
- 2 potatoes, cut into cubes
- 2 carrots, cut into cubes
- 1 onion, diced
- 2 cloves garlic, minced
- 1 teaspoon dried oregano

Este resultado é ótimo, eu sei o que cozinhar. Neste ponto, o que poderia ser melhorias úteis são:

  • Filtrar ingredientes que eu não gosto ou sou alérgico.
  • Produzir uma lista de compras, caso eu não tenha todos os ingredientes em casa.

Para os casos acima, vamos adicionar um prompt adicional:

"Por favor, remova receitas com alho, pois sou alérgico, e substitua por outra coisa. Além disso, produza uma lista de compras para as receitas, considerando que eu já tenho frango, batatas e cenouras em casa."

Agora você tem um novo resultado, a saber:

1. Roasted Chicken and Vegetables:
Ingredients:
- 4 chicken thighs
- 2 potatoes, cut into cubes
- 2 carrots, cut into cubes
- 2 tablespoons olive oil
- 1 teaspoon dried thyme
- 1 teaspoon dried oregano
- Salt and pepper, to taste

2. Chicken and Potato Stew:
Ingredients:
- 2 tablespoons olive oil
- 1 onion, diced
- 2 chicken breasts, cut into cubes
- 2 potatoes, cut into cubes
- 2 carrots, cut into cubes
- 1 teaspoon dried oregano
- 1 teaspoon dried thyme
- 1 cup chicken broth
- Salt and pepper, to taste

3. Chicken and Potato Bake:
Ingredients:
- 2 tablespoons olive oil
- 2 chicken breasts, cut into cubes
- 2 potatoes, cut into cubes
- 2 carrots, cut into cubes
- 1 onion, diced
- 1 teaspoon dried oregano
- 1 teaspoon dried thyme
- 1 cup chicken broth
- Salt and pepper, to taste

4. Chicken and Potato Soup:
Ingredients:
- 2 tablespoons olive oil
- 1 onion, diced
- 2 chicken breasts, cut into cubes
- 2 potatoes, cut into cubes
- 2 carrots, cut into cubes
- 1 teaspoon dried oregano
- 1 teaspoon dried thyme
- 4 cups chicken broth
- Salt and pepper, to taste

5. Chicken and Potato Hash:
Ingredients:
- 2 tablespoons olive oil
- 2 chicken breasts, cut into cubes
- 2 potatoes, cut into cubes
- 2 carrots, cut into cubes
- 1 onion, diced
- 1 teaspoon dried oregano

Shopping List:
- Olive oil
- Onion
- Thyme
- Oregano
- Salt
- Pepper

Essas são suas cinco receitas, sem alho mencionado e você também tem uma lista de compras considerando o que já tem em casa.

Exercício - construir um gerador de receitas

Agora que jogamos um cenário, vamos escrever código para corresponder ao cenário demonstrado. Para fazer isso, siga estes passos:

  1. Use o arquivo app.py existente como ponto de partida

  2. Localize a variável prompt e altere seu código para o seguinte:

    prompt = "Show me 5 recipes for a dish with the following ingredients: chicken, potatoes, and carrots. Per recipe, list all the ingredients used"

    Se você agora executar o código, deve ver uma saída semelhante a:

    -Chicken Stew with Potatoes and Carrots: 3 tablespoons oil, 1 onion, chopped, 2 cloves garlic, minced, 1 carrot, peeled and chopped, 1 potato, peeled and chopped, 1 bay leaf, 1 thyme sprig, 1/2 teaspoon salt, 1/4 teaspoon black pepper, 1 1/2 cups chicken broth, 1/2 cup dry white wine, 2 tablespoons chopped fresh parsley, 2 tablespoons unsalted butter, 1 1/2 pounds boneless, skinless chicken thighs, cut into 1-inch pieces
    -Oven-Roasted Chicken with Potatoes and Carrots: 3 tablespoons extra-virgin olive oil, 1 tablespoon Dijon mustard, 1 tablespoon chopped fresh rosemary, 1 tablespoon chopped fresh thyme, 4 cloves garlic, minced, 1 1/2 pounds small red potatoes, quartered, 1 1/2 pounds carrots, quartered lengthwise, 1/2 teaspoon salt, 1/4 teaspoon black pepper, 1 (4-pound) whole chicken
    -Chicken, Potato, and Carrot Casserole: cooking spray, 1 large onion, chopped, 2 cloves garlic, minced, 1 carrot, peeled and shredded, 1 potato, peeled and shredded, 1/2 teaspoon dried thyme leaves, 1/4 teaspoon salt, 1/4 teaspoon black pepper, 2 cups fat-free, low-sodium chicken broth, 1 cup frozen peas, 1/4 cup all-purpose flour, 1 cup 2% reduced-fat milk, 1/4 cup grated Parmesan cheese
    
    -One Pot Chicken and Potato Dinner: 2 tablespoons olive oil, 1 pound boneless, skinless chicken thighs, cut into 1-inch pieces, 1 large onion, chopped, 3 cloves garlic, minced, 1 carrot, peeled and chopped, 1 potato, peeled and chopped, 1 bay leaf, 1 thyme sprig, 1/2 teaspoon salt, 1/4 teaspoon black pepper, 2 cups chicken broth, 1/2 cup dry white wine
    
    -Chicken, Potato, and Carrot Curry: 1 tablespoon vegetable oil, 1 large onion, chopped, 2 cloves garlic, minced, 1 carrot, peeled and chopped, 1 potato, peeled and chopped, 1 teaspoon ground coriander, 1 teaspoon ground cumin, 1/2 teaspoon ground turmeric, 1/2 teaspoon ground ginger, 1/4 teaspoon cayenne pepper, 2 cups chicken broth, 1/2 cup dry white wine, 1 (15-ounce) can chickpeas, drained and rinsed, 1/2 cup raisins, 1/2 cup chopped fresh cilantro
    

    NOTE, seu LLM é não determinístico, então você pode obter resultados diferentes cada vez que executar o programa.

    Ótimo, vamos ver como podemos melhorar as coisas. Para melhorar as coisas, queremos garantir que o código seja flexível, para que ingredientes e número de receitas possam ser melhorados e alterados.

  3. Vamos mudar o código da seguinte maneira:

    no_recipes = input("No of recipes (for example, 5): ")
    
    ingredients = input("List of ingredients (for example, chicken, potatoes, and carrots): ")
    
    # interpolate the number of recipes into the prompt an ingredients
    prompt = f"Show me {no_recipes} recipes for a dish with the following ingredients: {ingredients}. Per recipe, list all the ingredients used"

    Executando o código para um teste, poderia parecer assim:

    No of recipes (for example, 5): 3
    List of ingredients (for example, chicken, potatoes, and carrots): milk,strawberries
    
    -Strawberry milk shake: milk, strawberries, sugar, vanilla extract, ice cubes
    -Strawberry shortcake: milk, flour, baking powder, sugar, salt, unsalted butter, strawberries, whipped cream
    -Strawberry milk: milk, strawberries, sugar, vanilla extract
    

Melhorar adicionando filtro e lista de compras

Agora temos um aplicativo funcionando capaz de produzir receitas e é flexível, pois depende de entradas do usuário, tanto no número de receitas quanto nos ingredientes usados.

Para melhorar ainda mais, queremos adicionar o seguinte:

  • Filtrar ingredientes. Queremos ser capazes de filtrar ingredientes que não gostamos ou somos alérgicos. Para realizar essa alteração, podemos editar nosso prompt existente e adicionar uma condição de filtro ao final dele assim:

    filter = input("Filter (for example, vegetarian, vegan, or gluten-free): ")
    
    prompt = f"Show me {no_recipes} recipes for a dish with the following ingredients: {ingredients}. Per recipe, list all the ingredients used, no {filter}"

    Acima, adicionamos {filter} ao final do prompt e também capturamos o valor do filtro do usuário.

    Um exemplo de entrada ao executar o programa agora pode parecer assim:

    No of recipes (for example, 5): 3
    List of ingredients (for example, chicken, potatoes, and carrots): onion,milk
    Filter (for example, vegetarian, vegan, or gluten-free): no milk
    
    1. French Onion Soup
    
    Ingredients:
    
    -1 large onion, sliced
    -3 cups beef broth
    -1 cup milk
    -6 slices french bread
    -1/4 cup shredded Parmesan cheese
    -1 tablespoon butter
    -1 teaspoon dried thyme
    -1/4 teaspoon salt
    -1/4 teaspoon black pepper
    
    Instructions:
    
    1. In a large pot, sauté onions in butter until golden brown.
    2. Add beef broth, milk, thyme, salt, and pepper. Bring to a boil.
    3. Reduce heat and simmer for 10 minutes.
    4. Place french bread slices on soup bowls.
    5. Ladle soup over bread.
    6. Sprinkle with Parmesan cheese.
    
    2. Onion and Potato Soup
    
    Ingredients:
    
    -1 large onion, chopped
    -2 cups potatoes, diced
    -3 cups vegetable broth
    -1 cup milk
    -1/4 teaspoon black pepper
    
    Instructions:
    
    1. In a large pot, sauté onions in butter until golden brown.
    2. Add potatoes, vegetable broth, milk, and pepper. Bring to a boil.
    3. Reduce heat and simmer for 10 minutes.
    4. Serve hot.
    
    3. Creamy Onion Soup
    
    Ingredients:
    
    -1 large onion, chopped
    -3 cups vegetable broth
    -1 cup milk
    -1/4 teaspoon black pepper
    -1/4 cup all-purpose flour
    -1/2 cup shredded Parmesan cheese
    
    Instructions:
    
    1. In a large pot, sauté onions in butter until golden brown.
    2. Add vegetable broth, milk, and pepper. Bring to a boil.
    3. Reduce heat and simmer for 10 minutes.
    4. In a small bowl, whisk together flour and Parmesan cheese until smooth.
    5. Add to soup and simmer for an additional 5 minutes, or until soup has thickened.
    

    Como você pode ver, qualquer receita com leite foi filtrada. Mas, se você for intolerante à lactose, pode querer filtrar receitas com queijo também, então há uma necessidade de ser claro.

  • Produzir uma lista de compras. Queremos produzir uma lista de compras, considerando o que já temos em casa.

    Para esta funcionalidade, poderíamos tentar resolver tudo em um prompt ou poderíamos dividir em dois prompts. Vamos tentar a última abordagem. Aqui estamos sugerindo adicionar um prompt adicional, mas para que funcione, precisamos adicionar o resultado do primeiro prompt como contexto ao segundo prompt.

    Localize a parte do código que imprime o resultado do primeiro prompt e adicione o seguinte código abaixo:

    old_prompt_result = completion.choices[0].message.content
    prompt = "Produce a shopping list for the generated recipes and please don't include ingredients that I already have."
    
    new_prompt = f"{old_prompt_result} {prompt}"
    messages = [{"role": "user", "content": new_prompt}]
    completion = openai.Completion.create(engine=deployment_name, messages=messages, max_tokens=1200)
    
    # print response
    print("Shopping list:")
    print(completion.choices[0].message.content)

    Observe o seguinte:

    1. Estamos construindo um novo prompt adicionando o resultado do primeiro prompt ao novo prompt:

      new_prompt = f"{old_prompt_result} {prompt}"
    2. Fazemos uma nova solicitação, mas também considerando o número de tokens que pedimos no primeiro prompt, então desta vez dizemos max_tokens é 1200.

      completion = openai.Completion.create(engine=deployment_name, prompt=new_prompt, max_tokens=1200)

      Executando este código, agora chegamos ao seguinte resultado:

      No of recipes (for example, 5): 2
      List of ingredients (for example, chicken, potatoes, and carrots): apple,flour
      Filter (for example, vegetarian, vegan, or gluten-free): sugar
      
      
      -Apple and flour pancakes: 1 cup flour, 1/2 tsp baking powder, 1/2 tsp baking soda, 1/4 tsp salt, 1 tbsp sugar, 1 egg, 1 cup buttermilk or sour milk, 1/4 cup melted butter, 1 Granny Smith apple, peeled and grated
      -Apple fritters: 1-1/2 cups flour, 1 tsp baking powder, 1/4 tsp salt, 1/4 tsp baking soda, 1/4 tsp nutmeg, 1/4 tsp cinnamon, 1/4 tsp allspice, 1/4 cup sugar, 1/4 cup vegetable shortening, 1/4 cup milk, 1 egg, 2 cups shredded, peeled apples
      Shopping list:
      -Flour, baking powder, baking soda, salt, sugar, egg, buttermilk, butter, apple, nutmeg, cinnamon, allspice
      

Melhore sua configuração

O que temos até agora é um código que funciona, mas há alguns ajustes que devemos fazer para melhorar ainda mais. Algumas coisas que devemos fazer são:

  • Separar segredos do código, como a chave API. Segredos não pertencem ao código e devem ser armazenados em um local seguro. Para separar segredos do código, podemos usar variáveis de ambiente e bibliotecas como python-dotenv to load them from a file. Here's how that would look like in code:

    1. Create a .env file com o seguinte conteúdo:

      OPENAI_API_KEY=sk-...

      Nota, para Azure, você precisa definir as seguintes variáveis de ambiente:

      OPENAI_API_TYPE=azure
      OPENAI_API_VERSION=2023-05-15
      OPENAI_API_BASE=<replace>

      No código, você carregaria as variáveis de ambiente assim:

      from dotenv import load_dotenv
      
      load_dotenv()
      
      openai.api_key = os.environ["OPENAI_API_KEY"]
  • Uma palavra sobre o comprimento dos tokens. Devemos considerar quantos tokens precisamos para gerar o texto que queremos. Tokens custam dinheiro, então onde possível, devemos tentar ser econômicos com o número de tokens que usamos. Por exemplo, podemos formular o prompt para que possamos usar menos tokens?

    Para alterar os tokens usados, você pode usar o parâmetro max_tokens. Por exemplo, se você quiser usar 100 tokens, faria:

    completion = client.chat.completions.create(model=deployment, messages=messages, max_tokens=100)
  • Experimentando com temperatura. Temperatura é algo que não mencionamos até agora, mas é um contexto importante para como nosso programa funciona. Quanto maior o valor da temperatura, mais aleatório será o resultado. Por outro lado, quanto menor o valor da temperatura, mais previsível será o resultado. Considere se você quer variação no seu resultado ou não.

    Para alterar a temperatura, você pode usar o parâmetro temperature. Por exemplo, se quiser usar uma temperatura de 0.5, faria:

    completion = client.chat.completions.create(model=deployment, messages=messages, temperature=0.5)

    Nota, quanto mais próximo de 1.0, mais variado será o resultado.

Tarefa

Para esta tarefa, você pode escolher o que construir.

Aqui estão algumas sugestões:

  • Ajuste o aplicativo gerador de receitas para melhorá-lo ainda mais. Brinque com valores de temperatura e os prompts para ver o que você pode criar.
  • Construa um "companheiro de estudo". Este aplicativo deve ser capaz de responder perguntas sobre um tópico, por exemplo, Python, você poderia ter prompts como "O que é um certo tópico em Python?", ou você poderia ter um prompt que diz, mostre-me o código para um certo tópico etc.
  • Bot de história, faça a história ganhar vida, instrua o bot a interpretar um certo personagem histórico e faça perguntas sobre sua vida e tempos.

Solução

Companheiro de estudo

Abaixo está um prompt inicial, veja como você pode usá-lo e ajustá-lo ao seu gosto.

- "You're an expert on the Python language

    Suggest a beginner lesson for Python in the following format:

    Format:
    - concepts:
    - brief explanation of the lesson:
    - exercise in code with solutions"

Bot de história

Aqui estão alguns prompts que você poderia estar usando:

- "You are Abe Lincoln, tell me about yourself in 3 sentences, and respond using grammar and words like Abe would have used"
- "You are Abe Lincoln, respond using grammar and words like Abe would have used:

   Tell me about your greatest accomplishments, in 300 words"

Verificação de conhecimento

O que o conceito de temperatura faz?

  1. Ele controla o quão aleatório é o resultado.
  2. Ele controla o quão grande é a resposta.
  3. Ele controla quantos tokens são usados.

🚀 Desafio

Ao trabalhar na tarefa, tente variar a temperatura, tente configurá-la para 0, 0.5 e 1. Lembre-se de que 0 é o menos variado e 1 é o mais, qual valor funciona melhor para seu aplicativo?

Ótimo trabalho! Continue seu aprendizado

Após completar esta lição, confira nossa coleção de aprendizado de IA generativa para continuar aprimorando seu conhecimento em IA generativa!

Vá para a Lição 7, onde veremos como construir aplicativos de chat!

Aviso Legal:
Este documento foi traduzido usando o serviço de tradução por IA Co-op Translator. Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritária. Para informações críticas, é recomendada a tradução profissional por um humano. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações errôneas decorrentes do uso desta tradução.