人間中心的で一貫した全体プログラム合成。あなた自身のパーソナルジュニア開発者です。
ものを構築するものを構築しましょう! あらゆる状況で、すべての開発者のための
smol dev
これは「ジュニア開発者」エージェント(別名 smol dev)であり、以下のいずれかを行います:
- 製品仕様を与えると、あなた用に完全なコードベースをスキャフォールドします
- あなた自身のアプリ内に smol developer を持つための基本的なビルディングブロックを提供します。
create-react-app や create-nextjs-app のような特定の、硬い、ワンショットスターターを作成・保守する代わりに、これは基本的には create-anything-app です。あなたが smol dev と緊密なループで scaffolding プロンプトを開発します。
成功した最初の v0 リリースの後、smol developer はさらに小さく書き直され、ライブラリからインポート可能になりました!
# install
git clone https://github.com/smol-ai/developer.git
cd developer
poetry install # install dependencies. pip install poetry if you need
# run
python main.py "a HTML/JS/CSS Tic Tac Toe Game" # defaults to gpt-4-0613
# python main.py "a HTML/JS/CSS Tic Tac Toe Game" --model=gpt-3.5-turbo-0613
# other cli flags
python main.py --prompt prompt.md # for longer prompts, move them into a markdown file
python main.py --prompt prompt.md --debug True # for debuggingこれにより、smol developer の元のバージョンに従って、人間がループ内でアプリを開発できます。
プロンプトエンジニアリングではなく、プロンプトでエンジニアリングする
prompt.md のデモ例は、AI 対応だが依然として堅牢な人間の開発者中心のワークフローの可能性を示しています:
- 人間が構築したいアプリのための基本的なプロンプトを書きます
main.pyがコードを生成します- 人間がコードを実行/読みます
- 人間は以下ができます:
- プロンプトの不完全な部分を発見した時点で、簡単にプロンプトに追加します
- 手動でコードを実行してエラーを特定します
- GitHub issue を提出するのと同じように、エラーをプロンプトに貼り付けます
- 追加のサポートが必要な場合、コードベース全体を読んで具体的なコード変更の提案をする
debugger.pyを使用できます
幸せになるまでループします。AI は価値を加える限り使用されます。それがあなたの邪魔になったら、smol junior developer からコードベースを引き継ぎます。気軽に、何の問題もなく。(smol-dev に既存のコードベースを引き継がせ、独自のプロンプトをブートストラップさせることもできますが、それは将来の方向性です)
このように、このリポジトリのクローンを使用して、アプリのプロトタイプ/開発ができます。
これは smol developer v1 の新機能です!自分のプロジェクトに smol developer を追加できます。
pip install smol_devmain.py の内容を見ることで、自分のアプリでこれらの関数とプロンプトをどのように使用できるかについての「ドキュメント」として確認できます。
from smol_dev.prompts import plan, specify_file_paths, generate_code_sync
prompt = "a HTML/JS/CSS Tic Tac Toe Game"
shared_deps = plan(prompt) # returns a long string representing the coding plan
# do something with the shared_deps plan if you wish, for example ask for user confirmation/edits and iterate in a loop
file_paths = specify_file_paths(prompt, shared_deps) # returns an array of strings representing the filenames it needs to write based on your prompt and shared_deps. Relies on OpenAI's new Function Calling API to guarantee JSON.
# do something with the filepaths if you wish, for example display a plan
# loop through file_paths array and generate code for each file
for file_path in file_paths:
code = generate_code_sync(prompt, shared_deps, file_path) # generates the source code of each file
# do something with the source code of the file, eg. write to disk or display in UI
# there is also an async `generate_code()` version of thisAPI モード(Agent Protocol 経由)
サーバーを起動するには、以下を実行してください。
poetry run apiまたは
python smol_dev/api.pyその後、以下のコマンドのいずれかを使用して API を呼び出せます。
タスクを作成する には以下を実行してください。
curl --request POST \
--url http://localhost:8000/agent/tasks \
--header 'Content-Type: application/json' \
--data '{
"input": "Write simple script in Python. It should write '\''Hello world!'\'' to hi.txt"
}'次のようなレスポンスが返されます。
{"input":"Write simple script in Python. It should write 'Hello world!' to hi.txt","task_id":"d2c4e543-ae08-4a97-9ac5-5f9a4459cb19","artifacts":[]}タスクの 1 ステップを実行する には、前のリクエストから取得した task_id をコピーして、以下を実行してください。
curl --request POST \
--url http://localhost:8000/agent/tasks/<task-id>/stepsまたは、Python クライアントライブラリ を使用することもできます。
from agent_protocol_client import AgentApi, ApiClient, TaskRequestBody
...
prompt = "Write simple script in Python. It should write 'Hello world!' to hi.txt"
async with ApiClient() as api_client:
# Create an instance of the API class
api_instance = AgentApi(api_client)
task_request_body = TaskRequestBody(input=prompt)
task = await api_instance.create_agent_task(
task_request_body=task_request_body
)
task_id = task.task_id
response = await api_instance.execute_agent_task_step(task_id=task_id)
...-
6分のビデオデモ(申し訳ありません。オーディオが高速化されています。Twitterの最適化を目指していたのですが、悪い判断でした)
- これはオリジナルの smol developer デモでした。プロンプトから、APIキーをリクエストして保存し、ポップアップウィンドウを生成し、ページコンテンツを読み取り送信し、Anthropic Claude で任意のウェブサイトを有用に要約する Chrome 拡張機能へ移行し、入力の長さに基づいて100kまでのモデルに切り替えます。
- プロンプトは prompt.md に位置し、/exampleChromeExtension を出力します。
-
smol-plugin- ChatGPT プラグインへのプロンプト(ツイート、フォーク)
-
-
7分のビデオ:Smol AI Developer - 単一のプロンプトで完全なコードベースを構築 プロンプトから完全に動作するOpenAI CLI Pythonアプリを生成します
-
12分のビデオ:SMOL AI - ワンクリックで大規模アプリをAGIで開発 40分で$9で驚くほど複雑なReact/Node/MongoDBのフルスタックアプリをスキャフォルドします
より多くの例を積極的に探しています。あなたのものをPRしてください!
例が少なくて申し訳ありません。それがイライラしていることは分かっていますが、こんなに多くの皆さんに対応する準備ができていませんでした lol
代替実装やその他のスタックへのデプロイ戦略を送ってください!
- JS/TS: https://github.com/PicoCreator/smol-dev-js smol-dev の純粋な JS バリアント。プロンプトを通じてさらに小さい段階的な変更を可能にします(spec2code 全体をやりたくない場合)。任意のプロジェクトにライブで プラグインでき、より良く、または悪くなります。
- C#/Dotnet: https://github.com/colhountech/smol-ai-dotnet C# での実装です!
- Golang: https://github.com/tmc/smol-dev-go Go での実装です。
- https://github.com/gmchad/smol-plugin smol-developer スタイルで markdown で API を指定して、@openai プラグインを自動生成します。
- あなたのフォークをここに!
https://latent.space/ の購読をお願いします。より詳細な解説や洞察、考察をご覧いただけます。
- Markdown はすべてです - Markdown は、英語とコード(変数名
variable_namesか完全な ``` コードフェンス付きコードサンプル)を簡単に混在できるため、プログラム全体の合成をプロンプトするのに完璧な方法です。- コード内のプロンプトでプロンプトを指定でき、GPT-4 がそれに厳密に従うことがわかりました。
- コピペプログラミング
- 新しい API(Anthropic API は GPT-3 の知識カットオフ以降)の周辺にコードを書く方法を、
curlの入出力を貼り付けるだけでプログラムに理解させます。 - エラーメッセージをプロンプトに貼り付け、それをどう処理するかをざっくり指示するようなものです。「ログブック駆動プログラミング」という感じですね。
- 新しい API(Anthropic API は GPT-3 の知識カットオフ以降)の周辺にコードを書く方法を、
catでデバッグします - コードベース全体とエラーメッセージを一緒に、具体的な修正提案を得る。特に楽しいです!- プログラム全体の一貫性を取るコツ - 私たちが選んだ使用例である Chrome 拡張機能は、ファイル間に多くの間接的な依存関係があります。クロス依存関係の幻覚が生じると、プログラム全体がエラーになります。
- GPT に
shared_dependencies.mdを考えさせる中間ステップを追加し、各ファイル生成時にそれを使うよう要求することで解決しました。基本的に GPT が自分自身と会話できるようになるということです… - …ただし、まだ完璧ではありません。
shared_dependencies.mdがファイル間のハード依存関係を完全に理解していないことがあります。そこでプロンプトで具体的なnameを指定することで解決しました。最初は気が進みませんでしたが、うまくいきます。実は明確で曖昧性のないコミュニケーションを心がけているだけなんです。 prompt.mdを参照して、SOTA smol-dev プロンプティングをご確認ください。
- GPT に
- 不慣れな API への低い参入障壁
- CSS アニメーションは本当には学んだことがありませんが、今は「juicy CSS アニメーションされた赤と白のキャンディストライプローディングインジケータ」が欲しいと言うだけで機能します。
- Chrome Extension Manifest v3 も同様 - ドキュメントは絶望的に混乱していますが、幸い今は基本的なものを動かすためにドキュメントを読む必要がありません。
- Anthropic のドキュメント(本当にひどい)には戻り値シグネチャについてのガイダンスがありませんでした。だから
curlして、プロンプトに突っ込むだけです(笑)。
- Modal はすべてです - Modal を選んで 4 つのことを解決しました:
- 開発環境と本番環境での Python の依存関係地獄を解決します
- コード生成の並列化
- ローカル開発からクラウドホスト型エンドポイントへのシンプルなアップグレード経路(今後)
- 再試行・バックオフとアタッチされたストレージを伴う耐障害性のある OpenAI API コール(今後の使用)
https://latent.space/ の購読をお願いします。より詳細な解説や洞察、考察をご覧いただけます。
Chrome 拡張機能に取り組んでいますが、これは画像を生成する必要があるため、それらを破棄・再生成をスキップするためのユースケース固有のコードを追加しました。ただし、どのように汎化するかはまだ決めていません。
GPT-4-32k へのアクセス権がありませんが、もしあれば、API/SDK ドキュメント全体をコンテキストに入れることを探索するでしょう。
フィードバックループは現在非常に遅く(time では GPT-4 を使ったプログラム生成に 2~4 分かかり、Modal による並列化があってもそうです(時々もっと高くなります))が、それは時間とともに低下するのはほぼ確実です(下の「将来の方向性」も参照してください)。
試してみるべきこと / オープンなissueディスカッションとPRを歓迎します:
- 各生成ファイルの
.mdファイルを指定します - 各ファイルの出力を微調整できるさらなるプロンプトが含まれます。- 基本的には
popup.html.mdとcontent_script.js.mdなどのようなものです。
- 基本的には



