Skip to main content

A Python package for managing programming tasks.

Project description

programmer

programmer is a command-line based AI programmer, that will help you get stuff done.

programmer has direct access to your machine, it can run commands, and read and write files, without safety checks. You have been warned!

Demo

Quickstart

pip install programmer
programmer 

Examples

  • "What processes are listening on port 4512?" ... "ok, please kill them"
  • "What's in frog.jpg?"
  • "Write a function to determine if a tic-tac-toe game is won in a file called tictactoe.py. also write unit tests, and iterate until they pass."
  • "Fix all the type errors in this project"

Usage

Just

programmer

Alternatively:

programmer prompt <initial_prompt>

To resume from an earlier state:

programmer --state <state_ref>

Tracking

Programmer is designed to get better over time. For that we need to track trajectories, identify good and bad ones to add to Evaluations (like unit tests for AI), and then iterate on programmer's prompts and architecture to improve against the Evaluations.

By default all trajectories are logged to .programmer/weave.db. You can turn on cloud logging with programmer settings set weave_logging cloud. Trajectories will be saved to Weave at wandb.ai

You can turn on git tracking with programmer settings set git_tracking on to get programmer to track all of its work in "programmer-*" branches. Each git state will be associated with the Weave trajectories, and you can browse the diffs with programmer ui

UI

Run

programmer ui

to run the local streamlit UI. This should work with either weave_logging:cloud or weave_logging:local, but there are some bugs with local mode at the moment.

Programmer UI screenshot

Weave UI

When weave_logging is set to "cloud" you can use the Weave UI at wandb.ai to browse traces.

Settings

Settings are stored in .programmer/settings

programmer settings set weave_logging

  • off: no logging
  • local: log to local sqlite db
  • cloudd: log to weave cloud at wandb.ai

programmer settings set git_tracking

  • off: no git tracking
  • on: programmer with make programmer-* branches and track changes

Improving programmer

programmer is designed to be improved using weave, our toolkit for AI application development. What does this mean?

  • you can browse traces and evals in the Weave UI at https://wandb.ai
  • programmer can resume from earlier states, with the --state argument
  • programmer will log all of your interactions to a local sqlite database, or the central Weave service.
  • This data can be used to improve programmer over time, by building Evaluations, fine-tuning, and other techniques.

To run the evaluation:

python evaluate.py

roadmap

  • weave server tracking
  • git state tracking
  • basic trajectory UI
  • user-annotation of good and bad behaviors
  • eval generation

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

programmer-0.1.8.tar.gz (23.5 kB view details)

Uploaded Source

Built Distribution

programmer-0.1.8-py3-none-any.whl (27.3 kB view details)

Uploaded Python 3

File details

Details for the file programmer-0.1.8.tar.gz.

File metadata

  • Download URL: programmer-0.1.8.tar.gz
  • Upload date:
  • Size: 23.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.5

File hashes

Hashes for programmer-0.1.8.tar.gz
Algorithm Hash digest
SHA256 bf96d15064e0e38716ea5c9ac9e60c07d06ed77bedc321b45555ca4e209495cb
MD5 4b6ab418e29207c8031be2fedad2e7d9
BLAKE2b-256 b4d0af383f5dcf2b092721fc4a6dcce4b7868af7199a7c4c5e63dc446e108e09

See more details on using hashes here.

File details

Details for the file programmer-0.1.8-py3-none-any.whl.

File metadata

  • Download URL: programmer-0.1.8-py3-none-any.whl
  • Upload date:
  • Size: 27.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.5

File hashes

Hashes for programmer-0.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 40ce7077ac5fdc8c9f7590ca1eea9dba0f49d653f17d24c07055da55fc7e5bf0
MD5 c01c8c42bce0d16068ac5fa0750a853f
BLAKE2b-256 32e9a4d934cad896a2e208131f62ebefca4496d01cb04cba5d0aebe2abc8c70f

See more details on using hashes here.

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