Pular para o conteúdo principal

O que é o Codestral da Mistral? Principais recursos, casos de uso e limitações

O Codestral é o primeiro modelo de IA generativo de peso aberto da Mistral AI projetado para tarefas de geração de código, automatizando o preenchimento, a geração e o teste de código em várias linguagens.
Actualizado 29 de jul. de 2024  · 8 min de leitura

A geração de código é um aspecto cada vez mais importante do desenvolvimento de software moderno. A Mistral AI entrou recentemente nesse domínio com o Codestral, seu primeiro modelo de código.

Neste artigo, apresentaremos uma visão geral abrangente do Codestral, explorando seus recursos e funcionalidades.

Também compartilharei insights de minha experiência prática com o modelo, incluindo exemplos de como o utilizei para gerar código.

Se você quiser saber mais sobre o Mistral, confira este guia abrangente para trabalhar com o modelo grande do Mistral.

O que é Codestral?

O Codestral é um modelo de IA generativo de peso aberto, projetado especificamente para tarefas de geração de código. "Peso aberto" significa que os parâmetros aprendidos do modelo estão disponíveis gratuitamente para pesquisa e uso não comercial, permitindo maior acessibilidade e personalização.

O Codestral oferece aos desenvolvedores uma maneira flexível de escrever e interagir com o código por meio de uma instrução compartilhada e um ponto de extremidade da API de conclusão. Isso significa que podemos fornecer ao Codestral instruções em linguagem natural ou trechos de código, e ele pode gerar saídas de código correspondentes.

A capacidade exclusiva do Codestral de entender tanto o código quanto a linguagem natural faz dele uma ferramenta versátil para tarefas como conclusão de código, geração de código a partir de descrições de linguagem natural e até mesmo para responder a perguntas sobre trechos de código. Isso abre uma ampla gama de possibilidades para a criação de ferramentas baseadas em IA que podem otimizar nosso fluxo de trabalho de desenvolvimento.

Principais recursos do Codestral

O Codestral oferece vários recursos notáveis que aprimoram sua utilidade para a geração de códigos. Vamos dar uma olhada mais de perto.

Fluência em mais de 80 linguagens de programação

Um dos recursos mais impressionantes da Codestral é sua proficiência em mais de 80 linguagens de programação. Esse amplo espectro de suporte a linguagens inclui não apenas linguagens populares como Python, Java, C, C++ e JavaScript, mas também se estende a linguagens mais especializadas usadas em domínios específicos ou para tarefas de nicho (como Swift ou Fortran).

Essa fluência abrangente significa que o Codestral pode ser um recurso valioso para projetos que envolvem vários idiomas ou para equipes em que os desenvolvedores trabalham com idiomas diferentes. Quer estejamos trabalhando em um projeto de ciência de dados em Python, criando um aplicativo da Web com JavaScript ou lidando com uma tarefa de programação de sistemas em C++, a Codestral pode se adaptar às nossas necessidades e fornecer suporte à geração de código em um conjunto diversificado de linguagens.

Geração de código

A função principal do Codestral é a geração de códigos. Seu objetivo é simplificar nosso fluxo de trabalho de codificação automatizando tarefas como conclusão de funções de código, geração de casos de teste e preenchimento de segmentos de código ausentes.

O mecanismo fill-in-the-middle foi projetado para ajudar você a trabalhar com bases de código complexas ou linguagens desconhecidas. Se forem eficazes, esses recursos poderão liberar tempo para projetos de alto nível e solução de problemas, levando a ciclos de desenvolvimento mais rápidos e maior confiabilidade do código.

Peso aberto

Um aspecto notável do Codestral é sua natureza de peso aberto. Isso significa que os parâmetros aprendidos do modelo podem ser acessados livremente para pesquisa e uso não comercial.

Essa acessibilidade aberta promove um ambiente colaborativo, permitindo que desenvolvedores e pesquisadores façam experiências com o modelo, ajustem-no para tarefas específicas e contribuam para seu desenvolvimento contínuo.

Essa abertura não apenas democratiza o acesso a recursos avançados de geração de código, mas também incentiva a transparência e a inovação na comunidade de IA.

Desempenho e eficiência

A Mistral AI afirma que o Codestral estabelece um novo padrão de desempenho e latência na geração de código, superando outros modelos em determinados benchmarks. Sua grande janela de contexto (32k tokens) aumenta potencialmente sua capacidade de lidar com tarefas de conclusão de código de longo alcance.

Vamos discutir o desempenho e a eficiência em mais detalhes na próxima seção.

Comparação codestral com outros modelos

Para entender melhor os recursos do Codestral, vamos comparar seu desempenho com outros modelos de geração de código importantes. As seções a seguir se aprofundarão em resultados específicos de benchmark e destacarão as principais diferenças.

Janela de contexto

Vamos começar analisando esses resultados:

Janela de contexto maior do Codestral

O Codestral se destaca por seu desempenho superior em tarefas de conclusão de código de longo alcance (RepoBench), provavelmente devido à sua janela de contexto maior de 32 mil tokens. Essa janela maior permite que você considere mais códigos ao redor, o que leva a previsões melhores. O Codestral também se destaca no benchmark HumanEval em Python, demonstrando sua capacidade de gerar códigos precisos.

Embora o Codestral tenha um bom desempenho em áreas específicas, outros modelos, como o DeepSeek Coder, se destacam em diferentes benchmarks (MBPP).

Apesar de ser um dos menores modelos de LLM em comparação com outros, o desempenho do Codestral é frequentemente melhor ou, pelo menos, comparável ao de modelos muito maiores, como o Llama 3 70B, em todas as linguagens de programação, tanto na geração de códigos quanto em tarefas de preenchimento de intermediários.

Desempenho de preenchimento do meio

Vamos agora dar uma olhada no desempenho do preenchimento do meio (FIM):

Comparação de desempenho de preenchimento do meio codestral

O Codestral 22B demonstra um desempenho significativamente maior em todas as três linguagens de programação (Python, JavaScript e Java) e na média geral da FIM em comparação com o DeepSeek Coder 33B. Isso sugere a eficácia do Codestral em compreender o contexto do código e preencher com precisão os segmentos de código ausentes.

No entanto, o benchmark compara apenas o desempenho do Codestral com o DeepSeek Coder 33B e não inclui dados do CodeLlama 70B ou do Llama 3 70B. Isso limita o escopo da comparação e as conclusões que podem ser tiradas com relação ao desempenho do Codestral em relação a outros modelos.

HumanEval

O benchmark HumanEval mede a precisão da geração de código testando a capacidade dos modelos de gerar código que passe em testes de unidade escritos por humanos com base em descrições de funções. Vamos ver agora como o Codestral se compara a outros modelos no benchmark HumanEval:

Referência Codestral HumanEval

A Codestral demonstra o melhor desempenho em Python, bash, Java e PHP. Enquanto outros modelos se destacam em diferentes idiomas, o desempenho médio geral do Codestral lidera, demonstrando sua forte capacidade de gerar códigos precisos em vários idiomas.

Casos de uso codestral

Os diversos recursos da Codestral se prestam a várias aplicações práticas no ciclo de vida do desenvolvimento de software. Vamos explorar alguns dos principais casos de uso em que a Codestral pode causar um impacto significativo.

Conclusão e geração de código

O Codestral se destaca no preenchimento e na geração de códigos, um de seus principais casos de uso. Os desenvolvedores podem utilizar o Codestral para sugerir conclusões de código com base no contexto circundante, permitindo uma codificação mais rápida e precisa.

Além disso, o Codestral pode gerar trechos inteiros de código a partir de descrições ou instruções em linguagem natural, simplificando ainda mais o processo de desenvolvimento e aumentando a produtividade.

Aqui está um exemplo rápido do que eu pedi ao Codestral para gerar:

prompt = "Please write me a function that adds up two numbers"
data = {
    "model": "codestral-latest",
    "messages": [
        {
            "role": "user",
            "content": prompt
        }
    ],
    "temperature": 0
}

response = call_chat_instruct_endpoint(api_key, data)

Chamando a API Codestral

Geração de testes unitários

O Codestral também simplifica a geração de testes unitários para o código existente. Esse recurso economiza tempo e esforço valiosos dos desenvolvedores, automatizando o processo de geração de testes. Consequentemente, ele ajuda a melhorar a qualidade do código e reduz a probabilidade de bugs, garantindo que os projetos de software permaneçam robustos e passíveis de manutenção.

Pedi ao Codestral que gerasse um teste unitário simples para a função gerada acima:

prompt = """
Sure, here is a simple function in Python that adds up two numbers:

```python
def add_two_numbers(num1, num2):
    return num1 + num2

You can use this function like this:
result = add_two_numbers(5, 3)
print(result)  # Outputs: 8

This function takes two arguments, num1 and num2, and returns their sum.
def test_add_two_numbers():
"""

suffix = ""

data = {
    "model": "codestral-latest",
    "prompt": prompt,
    "suffix": suffix,
    "temperature": 0
}

response = call_fim_endpoint(api_key, data)

Chamando a API Codestral

Tradução e refatoração de código

Os recursos multilíngues do Codestral vão além da geração de códigos. Ele pode traduzir códigos entre diferentes linguagens de programação, permitindo que os desenvolvedores trabalhem com bases de código existentes escritas em linguagens desconhecidas.

Além disso, a Codestral pode ajudar a refatorar o código para melhorar a legibilidade e a manutenção, garantindo que os projetos sigam as práticas recomendadas e os padrões de codificação.

Pedi à Codestral que traduzisse o código Python acima para JavaScript:

prompt = """
Please translate the following Python code to Javascript:

```python
def add_two_numbers(num1, num2):
    return num1 + num2

You can use this function like this:
result = add_two_numbers(5, 3)
print(result)  # Outputs: 8

This function takes two arguments, num1 and num2, and returns their sum.
"""

suffix = ""

data = {
    "model": "codestral-latest",
    "prompt": prompt,
    "suffix": suffix,
    "temperature": 0
}

response = call_fim_endpoint(api_key, data)

Assistência interativa de código

Os desenvolvedores podem interagir com o Codestral para obter assistência na depuração, entender códigos desconhecidos e encontrar soluções ideais para problemas de codificação. Essa assistência interativa é particularmente valiosa para os desenvolvedores que trabalham em projetos complexos ou que estão aprendendo novas linguagens e estruturas de programação, fornecendo-lhes suporte e orientação durante toda a jornada de desenvolvimento.

Como começar a usar o Codestral

A Codestral nos oferece várias maneiras de usá-la:

  • Interface de conversação do Le Chat: Uma versão instruída do Codestral pode ser acessada por meio da interface de conversação gratuita da Mistral AI, o Le Chat, que nos permite interagir naturalmente com o modelo.
  • Download e teste diretos: Você pode fazer o download do modelo Codestral da Hugging Face para fins de pesquisa e teste sob a licença Mistral AI Non-Production License.
  • Ponto de extremidade dedicado: Um ponto de extremidade específico (codestral.mistral.ai) está disponível, especialmente para aqueles que integram o Codestral em seus IDEs. Esse ponto de extremidade tem chaves de API pessoais e limites de taxa separados, atualmente gratuitos para um período beta.
  • Integração da plataforma: O Codestral está integrado à La Plateforme da Mistral AI, onde podemos criar aplicativos e acessar o modelo por meio do endpoint padrão da API (api.mistral.ai), cobrado por token. Isso é adequado para pesquisas, consultas em lote ou desenvolvimento de aplicativos de terceiros.
  • Integrações com ferramentas de desenvolvedor: O Codestral está integrado a várias ferramentas para aumentar a produtividade do desenvolvedor, incluindo LlamaIndex e LangChain para criar aplicativos agênticos, e Continue.dev e Tabnine para ambientes VSCode e JetBrains.

Limitações de codificação

Embora o Codestral seja promissor em várias tarefas de geração de código, é importante reconhecermos suas limitações:

  1. Desempenho de referência: Embora o Codestral tenha um bom desempenho em determinados benchmarks, o desempenho no mundo real pode variar dependendo da complexidade da tarefa e da linguagem de programação específica. Recomenda-se que você faça testes completos em seu próprio ambiente antes de confiar totalmente nele na produção.
  2. Janela de contexto limitada (em alguns casos): Embora o Codestral tenha uma janela de contexto de 32k tokens para conclusão de código de longo alcance, certos casos de uso podem exigir um contexto ainda maior para que você compreenda totalmente as complexidades da nossa base de código.
  3. Possível viés: Como acontece com qualquer modelo de IA treinado em um código existente, o Codestral pode herdar vieses presentes nos dados de treinamento. Isso pode levar à geração de códigos que, inadvertidamente, perpetuam padrões ou práticas indesejáveis.
  4. Tecnologia em evolução: O Codestral ainda é um modelo relativamente novo, e seus recursos e limitações provavelmente evoluirão à medida que ele for sendo desenvolvido e aperfeiçoado. É essencial que nos mantenhamos atualizados com as últimas pesquisas e lançamentos para tomar as decisões mais bem informadas sobre seu uso.

Conclusão

O Codestral tem o potencial de liberar nosso tempo para a resolução de problemas mais complexos e para o trabalho de design, automatizando tarefas como o preenchimento de código e a geração de testes.

Embora seu impacto total ainda esteja para ser visto, a Codestral é um desenvolvimento que vale a pena acompanhar enquanto exploramos o futuro da IA no desenvolvimento de software.

Se você quiser saber mais sobre IA, confira este programa de seis cursos sobre Fundamentos de IA.

Perguntas frequentes sobre o Codestral

O Codestral está disponível para uso comercial?

A Mistral AI oferece soluções empresariais para empresas interessadas em aproveitar o Codestral para aplicativos comerciais. Entre em contato com a equipe de vendas para obter mais informações.

O Codestral pode ser ajustado para tarefas ou domínios específicos?

Sim, o Codestral é um modelo de peso aberto, o que significa que seus pesos são acessíveis para ajuste fino em conjuntos de dados personalizados para adaptá-lo a tarefas ou domínios específicos.

Quanto custa o Codestral?

A Codestral oferece uma versão beta gratuita com limitações. Os planos pagos incluem faturamento por token e soluções empresariais com preços personalizados.

Temas

Saiba mais sobre IA com estes cursos!

curso

Generative AI for Business

1 hr
6.7K
Learn the role Generative Artificial Intelligence plays today and will play in the future in a business environment.
Ver DetalhesRight Arrow
Iniciar Curso
Ver maisRight Arrow
Relacionado

blog

O que é o Mistral Large 2? Como funciona, casos de uso e muito mais

O Mistral Large 2 é o modelo de idioma mais recente da Mistral AI, competindo com modelos como GPT-4o, Llama 3.1 e Claude 3 Opus.
Ryan Ong's photo

Ryan Ong

8 min

An avian AI exits its cage

blog

12 Alternativas de código aberto ao GPT-4

GPT-4 alternativas de código aberto que podem oferecer desempenho semelhante e exigem menos recursos computacionais para serem executadas. Esses projetos vêm com instruções, fontes de código, pesos de modelos, conjuntos de dados e interface de usuário do chatbot.
Abid Ali Awan's photo

Abid Ali Awan

9 min

blog

Anunciando a série de codificação conjunta "Torne-se um desenvolvedor de IA

Comece a trabalhar com a IA generativa nesta nova série de código-along. Gratuito por tempo limitado.
DataCamp Team's photo

DataCamp Team

4 min

blog

Os 11 melhores assistentes de codificação de IA em 2024

Explore os melhores assistentes de codificação, incluindo ferramentas de código aberto, gratuitas e comerciais que podem aprimorar sua experiência de desenvolvimento.
Abid Ali Awan's photo

Abid Ali Awan

8 min

blog

O que é um modelo generativo?

Os modelos generativos usam o aprendizado de máquina para descobrir padrões nos dados e gerar novos dados. Saiba mais sobre sua importância e aplicações em IA.
Abid Ali Awan's photo

Abid Ali Awan

11 min

blog

Os 7 principais geradores de vídeo com IA para 2024 com vídeos de exemplo

Descubra os principais geradores de vídeo com IA disponíveis atualmente, incluindo RunwayML, Synthesia, Colossyan, Pictory, DeepBrain AI, Invideo e os altamente esperados Sora e Veo da DeepMind.
Dr Ana Rojo-Echeburúa's photo

Dr Ana Rojo-Echeburúa

9 min

See MoreSee More