みなさんこんにちは、カソンです。 過去 2 年間、フロントエンド コミュニティ全体が主に 2 つの理由で不安を感じていました。
1点目ですが、全体的な環境はこんな感じで特に不満はありません。 2 番目の不安は、「未知への恐怖」によって引き起こされます。 つまり、AIGC(人工知能生成コンテンツ)が業界の現状を変えることは誰もが知っているが、その変化の仕方が「エンジニアに取って代わる」ものなのか、「エンジニアを助ける」ものなのかはわかっていないということでしょうか。 最近、TypeChat[1]のリリースにより、フロントエンドの今後の開発方向性がより明確になりました。近い将来、AIGCはエンジニアに取って代わるのではなく、エンジニアの強力なアシスタントとなるでしょう。 なぜそう言うのでしょうか?この記事では、以下の観点から説明します。
LLMの問題点LLM の最も広く使用され、人気のあるアプリケーション シナリオは、「チャット アシスタント」(chatGPT など) です。 「チャット アシスタント」シナリオの特徴は、ユーザーが自然言語を入力し、モデルが自然言語を出力することです。 自然言語対話 モデルが自然言語のみを出力できる場合、その適用シナリオは「チャットアシスタント」に限定されます。結局のところ、「自然言語」は LLM の入力としてのみ使用でき、他のアプリケーションには使用できません。 たとえば、インターネット上の有名人に関するすべてのコメントを定期的にクロールし、コメントの感情が肯定的であるかどうかを分析し、最終的にインターネット全体での有名人の総合評価を計算する世論監視アプリケーションを作成したいと考えています。アプリケーションの実装のアイデアは次のとおりです。
2 番目のステップでは、入力された音声の感情が肯定的かどうかを LLM に判断させることができます。 「ジ兄さんは2年半もの間、一生懸命練習してきました」と入力すると、LLM はこの文章の感情が肯定的であると判断して、私に返信することがあります。
上記の結果はすべて「感情がポジティブである」ということを表現していますが、出力結果も自然言語で記述されており、結果の文章構造が安定していないため、統計のための第3ステッププログラムに出力することはできません。 幸いなことに、LLM は次のような構造化データ (JSON など) やコードを出力することもできます。
たとえば、上記の問題に対して、LLM に結果を JSON 形式で出力させます。可能な出力は次のようになります。 プログラムは JSON を読み取ることができますが、出力フィールドが不安定になる可能性があります。 3 番目のステップの統計プログラムが結果フィールドをカウントしますが、2 番目のステップの出力結果は感情フィールドであり、これは使用できないとします。 「ユーザーが自然言語を入力し、LLMが安定した構造化データまたは関数呼び出しを出力する」という問題を解決するために、openAIは関数呼び出し[2]という新しい機能を立ち上げました。 openAI API を呼び出すと、パラメータが次の順序で渡されます。
LLM は型定義に準拠した関数呼び出しを出力します。 たとえば、次のように入力します。
LLM の出力は次のとおりです。 「スピーチに対応する感情」を保存するには、mark_sentiment メソッドを定義するだけで済みます。 関数呼び出し機能により、LLM のアプリケーション シナリオが大幅に拡張されます (chatGPT プラグイン機能は関数呼び出しを通じて実装されます)。 ただし、関数呼び出しには次のような欠点もあります。
TypeChatの登場により、上記の問題は解決されます。 TypeChat とは何ですか? 何ができますか?関数呼び出しの欠点について説明した際に、「関数の型宣言は開発者にとって使いにくい」と述べました。では、フロントエンド開発にとって最も使い慣れていて使いやすい型システムは何でしょうか? 答えは明白です — TypeScript です。 TypeChat[3]は、TypeScript(C#の作者でもある)の作者Anders Hejlsbergがリリースした新しいプロジェクトです。彼は以下のことが可能です。
LLM に型宣言に準拠した JSON データを出力させます。 例えば、上記の「スピーチの感情を判断する」という例では、TypeChat に次のように入力できます。
LLM 出力の結果は上記の TS タイプに厳密に制限されます。 簡単に例えると、TypeChat は TS で定義された型を使った関数呼び出しと考えることができます。しかし、実際には、TypeChat の機能はそれだけではありません。 まず、TypeChat は特定の LLM に縛られるものではありません。自然言語とプログラミング言語の両方を理解できる LLM であれば、誰でも TypeChat を使用できます。 第二に、出力製品は JSON です。JSON はデータを表すだけでなく、複数の関数の実行プロセスを表すこともできます。このように、LLM の 1 つの出力は、複数の関数の連続実行になります。 たとえば、入力は次のようになります。
LLM の出力は「JSON で表現された関数実行プロセス」です。 @XXX は TypeChat のキーワードです。例:
TypeChat 内で変換すると、次のコードが得られます。 つまり、TypeChat に次の情報を伝えた後です。
TypeChat の出力は次のとおりです。 また、この結果は安定しています(複数回実行しても、出力結果の関数名や型定義は変わりません)。 上記の機能に加え、TypeChat の最大の特徴は、出力結果を自動で修正できることです。 「出力結果のTS型宣言」があるため、TSコンパイラを使用して出力結果が型宣言に準拠しているかどうかを確認できます。準拠していない場合は、TypeChatは「出力結果」とともに「TSエラーメッセージ」を再度LLMに入力し、エラーを修正して再出力することができます。 たとえば、上記の「スピーチの感情をチェックする」の例では、出力は次のようになります。 TS コンパイラによるチェック後、エラーが報告されます: TypeChat は上記のエラー情報を出力結果とともに LLM に入力し、修正します。 TypeChat 実装原則TypeChat の実装原理は、図にまとめることができます。 で:
赤いパスの場合、上記の「スピーチの感情をチェック」を例にとると、TypeChat が LLM に入力するプロンプト ワードは次のようになります。
LLM は上記のプロンプトを受信し、JSON を出力します。 青いパスの場合、上記の「4つの操作」を例にとると、TypeChat が LLM に入力するプロンプト ワードは次のようになります。
上記のプロンプトを受信すると、LLM はプログラム実行を表す JSON を出力し、それが TypeChat を通じて「実行可能コード」に変換されます。 出力製品のエラー訂正LLM から返された JSON に TS 型エラーがある場合、TypeChat は次のプロンプト単語を結合して LLM に入力します。 TypeChatがフロントエンド業界に与える影響フロントエンドエンジニアだけでなく、プログラマーが LLM を使用する主な方法は次のとおりです。
業界が期待する LLM の究極の形は、製品マネージャーが自然言語を使用して製品要件を記述し、LLM が直接コードを記述することです。 ここまで来るとプログラマーには全く価値がなくなるので、ほとんどのプログラマーが不安に思う理由もこれです。 では、「究極の形に到達する」ことを妨げる要因は何でしょうか?ポイントは3つあります。
1点目ですが、GPT-3.5が登場したことにより、LLMの理解力が一気に数段階向上したように感じました。そのため、数年後にはLLMの理解力が爆発的に高まり、自然言語記述のニーズを完全に理解できるようになるのではないかと誰もが不安を抱いています。 2点目ですが、GPT-3.5では「トークン数は4096まで」という制限がありますが、この制限は徐々に緩和されつつあります。これは、近い将来、LLM が出力できるコードの量が増加することを意味します。 上記 2 つの要素の変化傾向を予見することが、プログラマーが「将来 AIGC に置き換えられるのではないか」と懸念する原因となっています。 しかし、究極の形を実現するには、LLM で生成されたコードの安定性という 3 番目の要素も考慮する必要があることがわかりました。 つまり、LLM は関数コードやモジュールコードの作成に役立ちますが、これらの関数やモジュールのコードが不安定な場合は、一緒に使用することはできず、エンジニアが手動で変更する必要があります。 LLM によって生成されたコードをエンジニアが手動で修正する必要があることが多い場合、「自動生成できるコードの規模」が制限され、エンジニアに代わるものではなく、エンジニアのプログラミング アシスタントにしかなりません。 「生成されたコードの安定性」の問題を解決するには、openAI の関数呼び出しや TypeChat を介して、エンジニアが製品の正確な型定義を行える必要があります。 これにより矛盾が生じます。AIGC がエンジニアを置き換えてプロジェクトを独立して完了させたい場合、安定したコードを生成できる必要があります。安定したコードを生成するには、エンジニアはビジネス ロジックを理解し、詳細な型宣言を記述する必要があります。 エンジニアを置き換えるには、やはりエンジニアが積極的に参加する必要があるのでしょうか?それはderを置き換えます。 これはせいぜいプログラミング パラダイムの移行であり、以前はフロントエンドでページを開発するために jQuery を使用していたのが、その後フロントエンド フレームワークを使用してページを開発するように移行するのと似ています。 将来的には、フロントエンドエンジニアが詳細な型宣言を記述し、LLM がその宣言に基づいてフレームワークコードを生成するようになります。今と同じように、フロントエンドはフレームワークを通じて「状態変更ロジック」を記述し、フレームワークは特定の DOM 操作を実行します。 要約する学生の中には不安に思う人もいるかもしれません。未来は AIGC のものであり、人工知能に切り替えるべきでしょうか? 実際、この記事を通じて、将来的には3つのタイプのエンジニアが存在するという傾向を感じることができます。
そのようなエンジニアは非常に少なく、そのほとんどは大手インターネット企業や人工知能企業の研究室にいます。
このタイプのエンジニアは、前のタイプのエンジニアの成果を会社のビジネスに統合する責任を負います。職務内容は次のとおりです。
たとえば、フロントエンドエンジニア、バックエンドエンジニア、フルスタックエンジニアなどです。 AIGCのインフラエンジニアが開発したインフラ上でビジネスを展開します。 フロントエンドのポジションは今後も存在し続けるでしょうが、要件はより高くなり(ビジネスを抽象化する能力)、実践者の数は減少するでしょう。 簡単な例え話をしてみましょう。現在のグループが次のような構成だとします。
将来の構成は次のようになります。
参考文献[1] TypeChat: https://microsoft.github.io/TypeChat/. [2] 関数呼び出し: https://openai.com/blog/function-calling-and-other-api-updates. [3] TypeChat: https://microsoft.github.io/TypeChat/. |
<<: ベクトルデータベースは AI をどのように改善するのでしょうか?
>>: 普通の文書も会話に変えられる:会話補完技術の深い理解
脳にAIチップを埋め込むことで、てんかん発作をいつでも予測し、制御できるようになります。これは、我が...
[[440335]]この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI...
ほとんどの CIO は、最新の情報を把握するために生成 AI の調査を開始していますが、市場に出回っ...
2023年はソフトウェアテスト業界にとって変化とチャンスに満ちた年です。ソフトウェア業界の急速な発展...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
今日、ますます多くの企業が人工知能 (AI) とネットワークの相乗効果を活用しています。ユーザーデバ...
この記事は公開アカウント「Reading Core Technique」(ID: AI_Discov...
進化により、細胞プロセスを正確に制御する多様な機能性タンパク質が生み出されました。近年、この多様性か...
Minecraft では、レッドストーンは非常に重要なアイテムです。これはゲーム内のユニークな素材...
昨日(6月7日)、2022年度全国大学入学試験が始まりました。午前中に中国語科目試験が終了し、中国語...
本当にクレイジーだよ!ちょうど今、OpenAI のライバルである Inflection が新しいモデ...