openai API `max_completion_tokens` argument is ignored

Abierto Apto para principiantes
#1,907 0 comentarios 3 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
65/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Estancado
Stack tecnológico
python
Área
api, backend

Línea de trabajo

Examina el código del servidor que gestiona el endpoint de completions de chat compatible con OpenAI, probablemente en llama_cpp/server/app.py o en un archivo similar. Encuentra dónde se analizan los parámetros de la solicitud y dónde se usa max_tokens. Compáralo con cómo debería gestionarse max_completion_tokens. Consulta la especificación de OpenAI API para comprobar el nombre del parámetro. La corrección consiste en asegurarse de que max_completion_tokens se lea y se pase a la lógica de generación. Haz la prueba ejecutando el servidor y usando el script de cliente proporcionado para verificar que se respeta el límite de tokens.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Prerequisites

Please answer the following questions for yourself before submitting an issue.

  • I am running the latest code. Development is very rapid so there are no tagged versions as of now.
  • I carefully followed the README.md.
  • I searched using keywords relevant to my issue to make sure that I am creating a new issue that is not already open (or closed).
  • I reviewed the Discussions, and have a new bug or useful enhancement to share.

Current Behavior

I'm running llama-server with following command:

python3 -m llama_cpp.server --model models/mys/ggml_llava-v1.5-13b/ggml-model-q4_k.gguf --clip_model_path models/mys/ggml_llava-v1.5-13b/mmproj-model-f16.gguf --model_alias llava-v1.5-13b-q4_k --chat_format llava-1-5 --port 10322

(models downloaded from https://huggingface.co/mys/ggml_llava-v1.5-13b/tree/main)

When I call the server using openai python package:

from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:10322/v1", # "http://<Your api-server IP>:port"
    api_key = "sk-no-key-required"
)

chat_completion = client.chat.completions.create(
    model="models/mys/ggml_llava-v1.5-13b/ggml-model-q4_k.gguf",
    messages=[
        {"role": "user", "content": "Write a limerick about python exceptions"}
    ],
    max_tokens=3,
)
print(chat_completion.usage.completion_tokens)  # returns 3, ok.
print(chat_completion.choices[0].finish_reason)  # returns "length", ok.

chat_completion = client.chat.completions.create(
    model="models/mys/ggml_llava-v1.5-13b/ggml-model-q4_k.gguf",
    messages=[
        {"role": "user", "content": "Write a limerick about python exceptions"}
    ],
    max_completion_tokens=3,
)
print(chat_completion.usage.completion_tokens)  # returns much more than 3 (complete answer).
print(chat_completion.choices[0].finish_reason)   # returns "stop".

According to OpenAI API, max_completion_tokens argument is replacing the deprecated max_tokens argument.
It's seems that only max_tokens is not ignored by the server.

Environment and Context

llama_cpp installed with pip install llama-cpp-python[server]
print(llama_cpp.__version__): 0.3.6
print(openai.__version__): 1.59.7

Lenguaje dominante
Python
Estrellas
10.6k
Forks
1.5k
Merge medio
23 min
PR fusionados (30 d)
1

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de abetlen/llama-cpp-python

Todos los issues de abetlen/llama-cpp-python

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.