Skip to content

The stop parameter in openai API doesn't work since v0.2.5 #1048

Open

Description

@llama-assistant

Since version v0.2.5, it seems the stop parameter in openai api is directly set conv.stop_str, rather than from request.
https://github.com/lm-sys/FastChat/blob/v0.2.5/fastchat/serve/api.py#L134

In version v0.2.3, it works when set in the request.
https://github.com/lm-sys/FastChat/blob/v0.2.3/fastchat/serve/api.py#L125

The stop parameter is a key when it works with ReAct in langchain, seems quite important to enable.

Activity

  1. merrymercy commented on May 8, 2023

    @merrymercy
    Member

    Thanks for reporting this. Could you send a pull request to fix it?

  2. jstzwj commented on May 8, 2023

    @jstzwj
    Contributor

    Fixed in #818.

  3. llama-assistant commented on May 9, 2023

    @llama-assistant
    Author

    @jstzwj Thanks for the fix, happy to see it in next version.

  4. mingfang commented on May 19, 2023

    @mingfang
    Contributor

    In the openai_api_server, stop works for non-streaming completions, but not for streaming.

    The problem is the unwanted stop sequence gets streamed out before stopping.
    https://github.com/lm-sys/FastChat/blob/main/fastchat/serve/openai_api_server.py#L518

    As a result, this breaks LangChain ReAct agents

  5. merrymercy commented on May 20, 2023

    @merrymercy
    Member

    @andy-yang-1 does the new PR (#1246) fix this?
    @mingfang If not, could you contribute a PR to fix it?

  6. mingfang commented on May 20, 2023

    @mingfang
    Contributor

    I tested the PR locally and it has the same problem.
    @merrymercy do you think this problem should be fixed in
    https://github.com/andy-yang-1/FastChat/blob/langchain-support/fastchat/serve/inference.py#L51
    so that it doesn't emit the stop sequence?

  7. andy-yang-1 commented on May 20, 2023

    @andy-yang-1
    Collaborator

    @merrymercy My PR didn't fix the problem, how can we solve it?

  8. merrymercy commented on May 20, 2023

    @merrymercy
    Member

    We handle the stop string here https://github.com/andy-yang-1/FastChat/blob/fae4087bbb6f7979b61f2e0c2912d77547a5c659/fastchat/serve/inference.py#L164-L175,
    I think it will correctly delete the stop sequence finally. Does it occur during the middle of the streaming?

  9. mingfang commented on May 20, 2023

    @mingfang
    Contributor

    The problem happens when the previous generate token is the partial beginning of the stop sequence.
    It will not match the entire stop sequence until the next few tokens.
    As a result the partial stop sequence is stream the client, causing ReAct to fail.

  10. mingfang commented on May 20, 2023

    @mingfang
    Contributor

    @merrymercy
    This is my PR with the stop detection fix
    #1392

  11. Chessing234 commented on Jun 2, 2026

    @Chessing234

    The partial-stop suffix check is fixed in #3883 so streaming should no longer emit prefixes like Obs before the full stop string.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions