# GPT-OSS 20B

**GPT-OSS 20B** é um modelo de linguagem grande com 20 bilhões de parâmetros, projetado para geração de texto, conversação e várias tarefas de processamento de linguagem natural. Este modelo open-source oferece desempenho robusto para uma ampla gama de aplicações.

## Detalhes do modelo

| Categoria | Detalhes |
|----------|----------|
| **Nome do modelo** | GPT-OSS 20B |
| **Versão** | 20B |
| **Categoria do modelo** | Large Language Model (LLM) |
| **Tamanho** | 20B parâmetros |
| **Modelo HuggingFace** | [gpt-oss-20b](https://huggingface.co/openai/gpt-oss-20b) |
| **Endpoint compatível com a OpenAI** | [Chat API Overview](https://developers.openai.com/api/reference/overview) |
| **Licença** | [Apache 2.0](https://choosealicense.com/licenses/apache-2.0/) |

## Capacidades 

| Recurso | Detalhes |
|---------|--------|
| Tool Calling | ✅ |
| Tamanho do Contexto | 131k tokens |
| Suporta LoRA | ❌ |
| Dados de entrada | Texto |

## Uso 

### Chat Completion Básico

Este é um exemplo básico de chat completion usando este modelo:

```ts
curl http://localhost:8000/v1/chat/completions \
 -H "Content-Type: application/json" \
 -d '{
    "stream": true,
    "model": "gpt-oss-20b",
    "max_tokens": 1024,
    "messages": [
        {"role": "system", "content": "Você é um assistente útil."},
        {"role": "user", "content": "Liste as capitais europeias"}
    ]
}'
```

Resposta:

```ts
{"id":"chatcmpl-example","object":"chat.completion","created":1746821581,"model":"gpt-oss-20b","choices":[{"index":0,"message":{"role":"assistant","reasoning_content":null,"content":"Claro! Aqui está uma lista de algumas capitais europeias...","tool_calls":[]},"logprobs":null,"finish_reason":"stop","stop_reason":null}],"usage":{"prompt_tokens":9,"total_tokens":527,"completion_tokens":518,"prompt_tokens_details":null},"prompt_logprobs":null}
```

| Propriedade   | Tipo      | Descrição                                                       |
| ------------- | --------- | --------------------------------------------------------------- |
| `stream`      | `boolean` | Indica se deve transmitir a resposta em stream.                |
| `messages[]`  | `array`   | Array de objetos de mensagem.                                  |
| `messages[].role` | `string` | O papel do remetente da mensagem.                           |
| `messages[].content` | `string` | O conteúdo da mensagem.                                    |


### Exemplo de Tool Calling

```ts
curl http://localhost:8000/v1/chat/completions \
 -H "Content-Type: application/json" \
 -d '{
    "stream": true,
    "model": "gpt-oss-20b",
    "max_tokens": 1024,
    "messages": [
        {"role": "system", "content": "Você é um assistente útil com acesso a ferramentas."},
        {"role": "user", "content": "Qual é o clima em Londres?"}
    ],
    "tools": [
        {
            "type": "function",
            "function": {
                "name": "get_weather",
                "description": "Obter o clima atual para uma localização",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "location": {
                            "type": "string",
                            "description": "A cidade e estado"
                        }
                    },
                    "required": ["location"]
                }
            }
        }
    ]
}'
```
Resposta:

```ts   
{"id":"chatcmpl-tool-example","object":"chat.completion","created":1746821866,"model":"gpt-oss-20b","choices":[{"index":0,"message":{"role":"assistant","reasoning_content":null,"content":null,"tool_calls":[{"id":"chatcmpl-tool-fd3311e75aed4cbfbeb7244ced77379f","type":"function","function":{"name":"get_weather","arguments":"{\"location\": \"Londres\"}"}}]},"logprobs":null,"finish_reason":"tool_calls","stop_reason":null}],"usage":{"prompt_tokens":293,"total_tokens":313,"completion_tokens":20,"prompt_tokens_details":null},"prompt_logprobs":null}
```

### Uso Avançado com Parâmetros

Este exemplo mostra como usar o modelo com parâmetros adicionais:

```ts
const modelResponse = await Azion.AI.run("gpt-oss-20b", {
  "stream": true,
  "max_tokens": 1024,
  "temperature": 0.7,
  "top_p": 0.9,
  "messages": [
    {
      "role": "system",
      "content": "Você é um assistente útil que fornece explicações detalhadas."
    },
    {
      "role": "user",
      "content": "Explique o conceito de machine learning em termos simples."
    }
  ]
})
```

| Propriedade   | Tipo      | Descrição                                                       |
| ------------- | --------- | --------------------------------------------------------------- |
| `stream`      | `boolean` | Indica se deve transmitir a resposta em stream.                |
| `max_tokens`  | `integer` | Número máximo de tokens a serem gerados.                       |
| `temperature` | `number`  | Controla a aleatoriedade na saída (0.0 a 2.0).                 |
| `top_p`       | `number`  | Controla a diversidade via nucleus sampling (0.0 a 1.0).       |
| `messages[]`  | `array`   | Array de objetos de mensagem.                                  |
| `messages[].role` | `string` | O papel do remetente da mensagem.                           |
| `messages[].content` | `string` | O conteúdo da mensagem.                                    |

## Schema JSON

```json
{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "required": [
        "messages"
    ],
    "properties": {
        "messages": {
            "type": "array",
            "items": {
                "$ref": "#/components/schemas/Message"
            }
        },
        "temperature": {
            "type": "number",
            "minimum": 0,
            "maximum": 2
        },
        "top_p": {
            "type": "number",
            "minimum": 0,
            "maximum": 1,
            "default": 1
        },
        "n": {
            "type": "integer",
            "minimum": 1,
            "default": 1
        },
        "stream": {
            "type": "boolean",
            "default": false
        },
        "max_tokens": {
            "type": "integer",
            "minimum": 1
        },
        "presence_penalty": {
            "type": "number",
            "minimum": -2,
            "maximum": 2,
            "default": 0
        },
        "frequency_penalty": {
            "type": "number",
            "minimum": -2,
            "maximum": 2,
            "default": 0
        }
    },
    "components": {
        "schemas": {
            "Message": {
                "oneOf": [
                    {
                        "$ref": "#/components/schemas/SystemMessage"
                    },
                    {
                        "$ref": "#/components/schemas/UserMessage"
                    },
                    {
                        "$ref": "#/components/schemas/AssistantMessage"
                    }
                ]
            },
            "SystemMessage": {
                "type": "object",
                "required": [
                    "role",
                    "content"
                ],
                "properties": {
                    "role": {
                        "type": "string",
                        "enum": [
                            "system"
                        ]
                    },
                    "content": {
                        "$ref": "#/components/schemas/TextContent"
                    }
                }
            },
            "UserMessage": {
                "type": "object",
                "required": [
                    "role",
                    "content"
                ],
                "properties": {
                    "role": {
                        "type": "string",
                        "enum": [
                            "user"
                        ]
                    },
                    "content": {
                        "$ref": "#/components/schemas/TextContent"
                    }
                }
            },
            "AssistantMessage": {
                "type": "object",
                "required": [
                    "role",
                    "content"
                ],
                "properties": {
                    "role": {
                        "type": "string",
                        "enum": [
                            "assistant"
                        ]
                    },
                    "content": {
                        "$ref": "#/components/schemas/TextContent"
                    }
                }
            },
            "TextContent": {
                "type": "string",
                "description": "Conteúdo de texto fornecido como string"
            }
        }
    }
}
```