テクノロジーは万能ではありませんが、テクノロジーがなければ絶対に不可能である可能性があり、大型モデルでも同じことが言えるかもしれません。大規模モデルに基づくアプリケーション設計は、解決される問題に焦点を当てる必要があります。自然言語処理の分野では、大規模モデル自体は、さまざまな NLP タスクをある程度までシーケンスツーシーケンス モデルに統合するだけです。大型モデルを使用して、特定の生産および寿命の問題を解決していますが、製品設計と技術設計は依然として不可欠です。
では、大きなモデルがソフトウェア エンジニアリングの未来を再考している場合、従うべき基本原則はあるのでしょうか?
モデルがタスクを完了できれば、コードを記述する必要はありません。モデルは進化し続けますが、コードはそうではありません
今日の時代では、モデルの価値がますます顕著になってきています。従来のプログラミング手法とは異なり、現在の開発アイデアは「モデルファースト」の傾向が強いです。これは、問題やタスクに直面したときに、すぐにコードを書き始めるのではなく、まず既存のモデルを使用して解決できるかどうかを検討することを意味します。コードが修正されているため、モデルには開発の余地が大きくあります。時間の経過とともに、モデルは強力な学習能力と適応能力を備え、継続的な反復を通じて自己最適化と改善を行うことができます。したがって、私たちの最初のタスクは、モデルの可能性を活用し、問題を解決するためのツールにすることです。
システム全体の目標は、効率的なプロジェクトを構築するための計画を立て、意図を理解する LLM の能力を活用することです。途中で、命令型の考え方に戻り、プログラムの細部に至るまでコードを書きたくなるかもしれません。ただし、この誘惑には抵抗しなければなりません。現時点でモデルに確実に何かを実行させることができる限り、モデルが進化するにつれてモデルはさらに改良され、より堅牢になります。##2 トレード オフ精度を高め、曖昧さを解消するためにインタラクションを使用する
精度を高めるためにトレードオフ レバレッジを使用し、曖昧さを軽減するためにインタラクションを使用します。 LLM を使用してコーディングするときの正しい考え方は、「踊るクマに何をさせることができるか見てみましょう」ではなく、システムから可能な限り多くの活用を得るということです。たとえば、「データベースからレポートを作成する」や「1 年分の科目を教える」などの非常に一般的なパターンを構築でき、プレーン テキスト プロンプトでパラメータ化することができ、非常に価値のある差別化された結果を簡単に生み出すことができます。
LLM を使用したコーディングのプロセスでは、重要な考え方は、システムを最大限に活用する方法を考えることであり、「」ではありません。試してみて何ができるか見てみましょう。」これは、単純な機能の実装に満足するだけでなく、システムの可能性を深く探求し、より大きな価値を生み出す必要があることを意味します。
実際のアプリケーションでは、いくつかの共通パターンを構築できます。たとえば、「データベースからレポートを生成」などのモードは適応性が高く、単純なテキスト プロンプトを通じてパラメーターを調整してさまざまなニーズに対応できます。もう 1 つの例は、「1 年間の詳細な学習コースの指導」モデルです。これは、豊富な教育リソースを統合し、個別の指導ニーズに合わせて対話型の方法で簡単に調整することもできます。
これらの共通パターンを適用することで、作業効率が向上するだけでなく、価値のある特徴的な成果を簡単に生み出すことができます。重み付けの精度と相互作用の明確化というこの戦略は、間違いなく大規模モデル アプリケーションの設計において重要な考え方です。
3 コードは構文と手順に使用され、モデルはセマンティクスと意図に使用されます
最新のプログラミングの分野では、コードとモデルの役割分担は次のようになります。ますます明らかになっていきます。簡単に言えば、コードは主に構文と手順の実装を担当し、モデルはセマンティクスと意図の生成と解釈に重点を置きます。実際のアプリケーションでは、この分業にはさまざまな表現がありますが、中心的な考え方は同じです。コードは特定の命令とプロセスを実行するために使用され、モデルは言語の深い意味と目標を推論、生成、理解するために使用されます
すべてのコードには独自の利点があります。重要なのは、特定の問題に最適なツールを選択することです。構文とセマンティクスの間の境界は、大規模なモデル アプリケーションの設計における大きな課題です。これに関連して、コードとモデルをより効果的に使用して問題を解決するには、コードとモデルのそれぞれの長所と短所をより深く理解する必要があります
システムの柔軟性と効率性を追求する場合、ハード コーディングはできる限り避けるべきです。ハードコーディングとは、将来の変更や拡張を考慮せずに、特定の値やロジックをコードに直接書き込むことを指します。このアプローチは短期的には利便性をもたらすかもしれませんが、長期的には硬直的で保守が困難なコードにつながる可能性があります。したがって、コードやアルゴリズムを記述するときは推論と柔軟性に注意を払う必要があります
プロンプトやインタラクションを設計するときは、システムが自律的に意思決定を行えるように、十分な情報とロジックを含めるように努める必要があります。事前定義されたコマンドを単に実行するだけです。このようにして、ハードコーディングの使用を減らすだけでなく、LLM の機能をより有効に活用して、システムをよりスマートかつ柔軟にすることができます。
5 データ品質が最優先され、LLM のアプリケーションは高品質データと密接に関係しています。
簡単に言うと、これらのモデルに単純な、または自由形式の質問をすると、単純な、または一般的な答えが得られます。このような回答には深みや詳細が欠けており、すべてのニーズを満たしていない可能性があります。より詳細で踏み込んだ回答を得たい場合は、質問の方法と戦略をより賢くする必要があります。
これは実際、人工知能時代の「ガベージイン、ガベージアウト」の原則の現れです。テクノロジーがどれほど進歩しても、受信データの品質は依然として重要です。入力データがあいまい、不正確、または不完全である場合、モデルが出力する答えも同様である可能性があります。
LLM モデルが高品質で詳細な回答を確実に提供できるようにするには、入力データが正確で、詳細で、コンテキストが豊富であることを確認する必要があります。これは、データ品質が引き続き最重要であることも意味します。データの品質に注意を払い、保証することによってのみ、これらの高度なモデルから真に価値のある詳細な情報を取得できることが期待できます
#6 不確実性を異常として扱うモデルが不確実な状況に遭遇したとき、それを単に無視したり、曖昧な答えを与えることはできません。代わりに、この不確実性を明確にするために、ユーザーとのインタラクションの意図に頼るべきです。 プログラミングでは、ネストされたプロンプトのセットに不確実性がある場合、たとえば、プロンプトの結果が複数の解釈を持つ可能性がある場合、「例外スロー」戦略に似た方法を取る必要があります。これは、ユーザーと対話したり不確実性を明確にしたりできるレベルに達するまで、この不確実性をスタック内の上位レベルに渡す必要があることを意味します。 このような設計戦略により、プログラムは不確実性に直面したときに適切に対応できるため、より正確で信頼性の高い結果が得られます。#7 普遍的なものとしてのテキストプロトコルテキストは、主に自然言語、意図、セマンティクスを解析する LLM の優れた能力により、ユニバーサル プロトコルになりました。したがって、テキストは、プロンプト、モジュール、および LLM ベースのサービス間で指示を転送するための好ましい形式となっています。自然言語は、一部のアプリケーション シナリオでは若干不正確である可能性がありますが、XML などの他の構造化言語と比較すると、簡潔で直感的で人間にとって理解しやすいという利点があります。もちろん、高度な精度と構造が必要なタスクの場合は、構造化言語を少量の補助として使用できます。しかし、ほとんどのシナリオでは、自然言語は指示や意図を伝えるのに非常にうまく機能します。 これらの LLM ベースのテクノロジの普及と進歩により、「将来性のある」自然な対話方法としてのテキストが、異なるシステムおよび異なるプロンプト間の相互運用性とコミュニケーションをさらに促進することは言及する価値があります。理解する。 2 つのまったく異なる LLM サービスが両方とも同じテキストの指示を理解し、応答できれば、それらの間のコラボレーションと対話は人間間のコミュニケーションと同じくらい自然かつスムーズになります
コンテンツを書き直す目的は、元の意味を変えることではなく、言語を中国語に書き直すことです
8 複雑な問題、分解操作複雑な問題に直面したとき、それは人間だけでなく大規模なモデルにとっても困難です。実際のアプリケーションでは、プログラムの一部として複雑な問題に対するプロンプトを直接使用すると、問題が発生する可能性があります。なぜなら、本当に必要なのは推論の結果だけだからです。この問題を解決するには、効果的な方法が必要です。 「メタ」プロンプトを使用することです。このプロンプトは質問を提示するだけでなく、詳細な回答も提供し、モデルにそこから重要な情報を抽出するよう求めます。このアプローチは、実際に複雑な認知タスクを比較的単純なタスクに変換するため、うまく機能します。 「この記事を読んで答えを見つけてください」というタスクを人に与えた場合、たとえそのユーザーが関連分野の専門知識を持っていなくても、自然言語の力は非常に大きいため、その人はこのタスクを完了する可能性が非常に高いと想像してください。 大規模なモデルに基づいてアプリケーションを設計する場合、注意する必要があることがいくつかあります。普通の人にとっては難しいことでも、模型では同じように難しいかもしれません。このような状況に直面した場合、最善の戦略は、複雑な問題やタスクをより単純なステップに分割することです。これにより、処理の難しさが軽減され、回答の安定性と精度が向上します #9. 制御できるところには必ずモデルがありますモデル 単なるツールではなく、私たち自身の間違いに対する武器にもなり得ます。多くの場合、私たちは LLM (Large Language Model) の動作を「脳」の内部プロセスとして想像する傾向があります。ただし、モデルと人間の思考にはいくつかの類似点があるにもかかわらず、両者の間には多くの意味のある違いがあることを認識することが重要です。 特に重要な機能が 1 つあります。モデルは、短期間の対話中に永続的なメモリを欠くことがよくあります。これは、モデルが 1 分間のインタラクションから次のインタラクションまでの詳細をすべて記憶している可能性は低いことを意味します。この機能により、何らかの制御が可能になります。 この管理はコードレビューに限定されません。実際、このモデルは、コードの安全な動作を保証するためのコードのセキュリティ モニターとしても機能します。また、より効果的なテスト計画の作成に役立つテスト戦略のコンポーネントとしても使用できます。高品質のコンテンツを生成するのに役立つコンテンツ フィルター したがって、モデルを適切に制御し、ガイドする限り、モデルは作業における強力な「アシスタント」になる可能性があります。この制御の基礎は、モデルの内部メカニズムと特性を深く理解し、習得することです。 10. 境界を特定し、大きなモデルですべてができるとは考えないでください大規模な言語モデルの機能は本当に驚くべきものであり、大量の処理と解析が可能です。論理的で一貫したテキストを生成し、一部のタスクでは人間のパフォーマンスを超えます。しかし、だからといって、これらの偉大なモデルを盲目的に崇拝し、彼らが何でもできると考えるべきだという意味ではありません。 大規模モデルには、実際にはまだ多くの制限や制約があります。彼らは大量のテキストデータを処理できますが、人間のように言語や文脈の微妙なニュアンスを理解することはできません。さらに、それらのパフォーマンスはトレーニング データとアルゴリズムの選択によっても制限され、いくつかのバイアスやエラーが発生する可能性があります。したがって、大規模なモデルを使用する場合は、合理的かつ慎重な態度を維持する必要があり、その機能を高く評価する必要があります。利便性と進歩をもたらす一方で、私たちはその限界と潜在的なリスクにも注意しなければなりません。このようにして、これらのモデルをより適切に活用して、大規模なモデルベースのアプリケーションの健全な開発を促進できます。 ###以上が大規模モデルのアプリケーション設計に関する 10 の考えの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。