GithubHelp home page GithubHelp logo

schneiderfelipe / chat-splitter Goto Github PK

View Code? Open in Web Editor NEW
2.0 1.0 0.0 22 KB

Split chat messages by maximum chat completion token count

Home Page: https://schneiderfelipe.github.io/posts/chat-splitter-first-release/

License: MIT License

Rust 100.00%
openai tiktoken ai artificial-intelligence chat chatgpt gpt-4 nlp split text

chat-splitter's Introduction

chat-splitter

Build Status Latest Version Documentation

For more information, please refer to the blog announcement.

When utilizing the async_openai Rust crate, it is crucial to ensure that you do not exceed the maximum number of tokens specified by OpenAI's chat models.

chat-splitter categorizes chat messages into 'outdated' and 'recent' messages, allowing you to split them based on both the maximum message count and the maximum chat completion token count. The token counting functionality is provided by tiktoken_rs.

Usage

Here's a basic example:

// Get all your previously stored chat messages...
let mut stored_messages = /* get_stored_messages()? */;

// ...and split into 'outdated' and 'recent',
// where 'recent' always fits the context size.
let (outdated_messages, recent_messages) =
    ChatSplitter::default().split(&stored_messages);

For a more detailed example, see examples/chat.rs.

Contributing

Contributions to chat-splitter are welcome! If you find a bug or have a feature request, please submit an issue. If you'd like to contribute code, please feel free to submit a pull request.

License: MIT

chat-splitter's People

Contributors

schneiderfelipe avatar sweep-ai[bot] avatar

Stargazers

 avatar  avatar

Watchers

 avatar

chat-splitter's Issues

Support pruning chat messages

Receive a closure Fn(&M, &[M]) -> bool receiving the oldest message and all the next ones and indicating whether a single oldest message should be pruned. Call it and prune accordingly until it returns false or the total messages in the split is empty. Pruning here means advancing the split position by one unit.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.