/chatgpt_minimal_starter_kit

Yet Another Application Framework Layer for Proof of Concept

Primary LanguagePythonMIT LicenseMIT

Contributors Forks Stargazers Issues MIT License


Logo

CraftForge

Yet Another Application Framework Layer for Proof of Concept
Report Bug · Request Feature

About The Project :

CraftForge Screen Shot

CraftForge: 開発の革命を加速する魔法の道具箱

~社内の制約を超えて、イノベーションを加速する革新的フレームワーク~

イントロダクション

現代のソフトウェア開発の世界では、イノベーションがすべてです。しかし、多くの企業にとって、環境の制約はイノベーションを難しいものにしています。ペースの速い開発の世界で常に先行するには、こうした制約を打ち破るツールが必要不可欠です。そこで登場するのがCraftForge、ゲームのルールを変える革新的なアプリケーションフレームワークです。

問題提起

制約の多い企業環境で働く開発者にとって、新しいアイデアを限られたメンバー間で実験することすら困難を極めます。厳格なセキュリティプロトコルや、プロトタイプ配布の際にすら強いられる無駄に長いレビュープロセスなど、創造性を阻害する環境に直面することがよくあります。

CraftForgeのソリューション

CraftForgeはプラグインベースのアーキテクチャを採用することで、これらの問題に真正面から取り組みます。モノリシックなアプリケーションの代わりに、CraftForgeでは開発者が小さく汎用性の高いプラグインを作成し、共有することができます。これらのプラグインはzipファイルの形で構成されており、中身はただのテキストファイルですので、従来のような長い承認プロセスを必要とせず、簡単にインストールおよび更新ができます。

CraftForgeの中核をなすのがIntentConductorです。これは、プラグイン間のシームレスなコミュニケーションと機能の共有を可能にするシステムです。「あのアプリの素敵なUIコンポーネントを使いたい」「あのアプリのデータ処理機能を借りたい」といった要望を、IntentConductorが実現します。

内部構造

CraftForgePythonで構築されています。Pythonは読みやすさと緩やかな学習曲線で知られる言語であり、プログラミングの専門家でなくてもコードを理解し、修正することができます。これは、企業向けソフトウェアの世界では珍しい、オープンさと透明性のレベルです。ユーザーは受動的にプラグインを使うだけでなく、カスタマイズしたプラグインを能動的に共有するような形でも参加することができます。そして、こうした形でのソフトウェアの流通は、イノベーションを加速するための重要な要素だと考えています。

また、現在でも企業環境で業務用PCにPythonをインストールして環境を構築するには、セキュリティ上の制約など高いハードルがあります。CraftForgeは、Pythonのランタイム環境をアプリケーションと一緒にパッケージ化することでこれらを解決しています。別途のインストールや複雑なセットアップ手順は必要ありません。

実際の影響

開発者所属先の業務でもCraftForgeを一部導入済みですが、すでにその恩恵を実感しつつあります。

これまでは、新しいプロトタイプを作っても私の開発用マシン上でしか動作せず、デモの時以外は他のメンバーがそれを触る機会すらありませんでした。例えばChatGPTのレスポンスを使って別のプロンプトを生成するような処理を何度か繰り返す程度の簡単なアプリケーションでも、そのプロンプトのテンプレートの編集すらメンバー側ではできない非効率な状況でした。

しかし、CraftForgeを導入したことにより、プロンプトのテンプレートの編集はもちろん、一部の処理をコメントアウトするなどの作業であればエンドユーザー側で簡単にできるようになりました。ユーザー側で思いついたことを試すハードルが下がり、トライ&エラーのサイクルを回す速度が劇的に向上しただけでなく、開発者側のサポート負担も減り、新しい機能の追加にフォーカスできるようになりました。

また、IntentConductorを活用することで、再利用可能な単機能特化のプラグインを作るアプローチに変わり、CraftForge自身の開発スピードも大きく加速しています。例えば、あるプラグインが依存関係を持つプラグインを一括してインストールするDependency Installの機能は半日で開発されました。

このように、CraftForgeはゲームチェンジャーであり、かつてないスピードでイノベーションを加速し、新しいアイデアを現場に投入することを可能にします。

未来

今後の展開については、以下のようなことを検討中です。

  • プラグイン側で import 可能なライブラリの増強
  • コミュニティ間でプラグインを共有するためのサーバーの整備
  • 多言語対応
  • AI assistance の強化(プラグイン開発のサポート、ドキュメンテーションの自動生成など)
  • クラウドサービスとの統合

これらは現時点での計画ですが、CraftForgeは常に進化を続けていくことだけは確かです。

結論

CraftForgeは単なるアプリケーションフレームワーク以上のものです。それは開発者をこれまで長きにわたって制約してきた束縛から解き放つための手段なのです。CraftForgeはまだ初期のステージですが、大きな可能性を秘めていると考えています。CraftForgeの活動に参加し、開発の自由の新時代を一緒に切り開いていただける方々、ぜひご連絡ください!

(back to top)

Built With

Flet_Logo

(back to top)

Getting Started

Prerequisites

依存関係のある以下のライブラリをインストールします

pip install flet
pip install cryptography
pip install openai
pip install langchain
pip install qdrant_client
pip install tiktoken
pip install pypdf2
pip install pyinstaller

または

pip install requirements.txt

Installation

  1. Clone the repo
    git clone https://github.com/hamatz/chatgpt_minimal_starter_kit.git
  2. Run the app with flet
    flet run app.py

Build as exe file

  1. Build the app
    chmod +x build_on_mac.sh
    ./build_on_mac.sh
    or
    ./build_on_win.ps1
  2. hidden import 等を解決した形でビルドしなおしたい場合
    pyinstaller app.spec --clean

関連ドキュメント

(back to top)

CraftForgeが目指す活用シーン

  1. 社内のイノベーションサイクルを加速 : CraftForgeは、技術的障壁を取り除き、アイデアから実装までのプロセスを簡素化します。zipファイルによるプラグインの簡単な共有と導入は、新しい機能の迅速なテストとチーム内での共有を可能にし、イノベーションサイクルを大幅に加速させます。このプロセスにより、イノベーションへのアプローチが劇的に簡易化され、社内での新しいアイデア試行の敷居が低くなります。

  2. 教育とトレーニング : 社内教育やトレーニングプログラムでCraftForgeを活用し、実践的な学習ツールとして使用します。プログラミングやアプリケーション開発の基本から、具体的なビジネスケースのシミュレーションまで、幅広い用途に対応できます

  3. 顧客向けPoCの迅速な提供 : さまざまなアイデアの検証に対して迅速に応えるカスタマイズサービスの提供にCraftForgeを利用します。顧客の要望に基づいた迅速なソリューションの開発が可能となり、アイデア検証のループを高速に回すことで顧客満足度の向上とともに差別化を図ります

(back to top)

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

License

Distributed under the MIT License. See LICENSE.txt for more information.

(back to top)