Skip to main content

Streamlining the process of multi-prompting LLMs with chains

Project description

flowchat

A Python library for building clean and efficient multi-step prompt chains. It is built on top of OpenAI's Python API.

Flowchat is designed around the idea of a chain. Each chain can start with a system prompt .anchor(), and then add chain links of messages with .link().

Once a chain has been built, a response from the LLM can be pulled with .pull().

You can optionally log the chain's messages and responses with .log(). This is useful for debugging and understanding the chain's behavior. Remember to call .log() before .unhook() though! Unhooking resets the current chat conversation of the chain.

However, the thing that makes flowchat stand out is the idea of chaining together responses, one chain after another. The chain's previous response can be accessed in the next chain with a lambda function in the next .link(). This allows for a more natural conversation flow, and allows for more complex conversations to be built. For example, in the examples folder, the chain for creating a natural language cli is actually fairly simple!

Installation

pip install flowchat

Usage

chain = (
    Chain(model="gpt-3.5-turbo")
    .anchor("You are a historian.")
    .link("What is the capital of France?")
    .pull().log().unhook()

    .link(lambda desc: f"Extract the city in this statement (one word):\n{desc}")
    .pull().log().unhook()

    .anchor("You are an expert storyteller.")
    .link(lambda city: f"Design a basic three-act point-form short story about {city}.")
    .pull(max_tokens=512).log().unhook()

    .anchor("You are a novelist. Your job is to write a novel about a story that you have heard.")
    .link(lambda storyline: f"Briefly elaborate on the first act of the storyline: {storyline}")
    .pull(max_tokens=256, model="gpt-4-1106-preview").log().unhook()

    .link(lambda act: f"Summarize this act in around three words:\n{act}")
    .pull(model="gpt-4")
    .log_tokens()
)

print(f"Result: {chain.last()}") # >> "Artist's Dream Ignites"

This project is under a MIT license.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

flowchat-0.1.3.tar.gz (5.3 kB view details)

Uploaded Source

File details

Details for the file flowchat-0.1.3.tar.gz.

File metadata

  • Download URL: flowchat-0.1.3.tar.gz
  • Upload date:
  • Size: 5.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.3

File hashes

Hashes for flowchat-0.1.3.tar.gz
Algorithm Hash digest
SHA256 48091c7103b4b940e8d25c479570080e5b5ecff08f27ab31f9a206eea08a5f13
MD5 fab97dcf2e1cd39dea10b83960b4af35
BLAKE2b-256 c03be8df1375932d6ca175a3ba50e2d2a974bd3aa1eca242c5116df93e49a152

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page