Spring Boot と OpenAI の出会いによる新しいプログラミング パラダイム
2023年、AI技術が話題となり、プログラミング分野を中心にさまざまな業界に大きな影響を与えています。 AI テクノロジーの重要性に対する人々の認識はますます高まっており、Spring コミュニティも例外ではありません。
GenAI (汎用人工知能) テクノロジーの継続的な進歩に伴い、AI 機能を備えたアプリケーションの作成を簡素化することが極めて重要かつ緊急になっています。このような背景から、AI 機能アプリケーションの開発プロセスを簡素化し、シンプルかつ直感的にし、不必要な複雑さを回避することを目的とした「Spring AI」が登場しました。 「Spring AI」により、開発者はAI機能を搭載したアプリケーションをより簡単に構築でき、使いやすく、操作しやすくなります。これにより、開発効率が向上するだけでなく、AI技術の普及と応用が加速します。つまり、「Spring AI」は AI アプリケーションの開発に新たな可能性をもたらし、よりシンプルで直感的なツールとフレームワークを開発者に提供します。
この記事では、Spring AI フレームワークと、このフレームワークを使用するためのエンジニアリングのヒントを簡単に紹介します。開発者はこれらのヒントを使用して、プロンプト情報をより適切に構造化し、Spring AI の機能を最大限に活用できます。
1 Spring AI の概要
Spring AI は M K Pavan Kumar によって作成および記述されています
Spring AI は、次の作業を簡素化するために設計されたツールです。 AI アプリケーション Python プロジェクト LangChain と LlamaIndex に触発されて開発されたプロジェクト。ただし、Spring AI は単純なコピーではありません。その中心的なアイデアは、Python 言語の愛好家だけでなく、さまざまなプログラミング言語のユーザーに生成 AI アプリケーションを公開することです。これは、開発者が Python 言語を学習しなくても、使い慣れた言語を使用して AI アプリケーションを構築できることを意味します。 Spring AI を使用すると、開発者は、使用するプログラミング言語に関係なく、AI の力をより簡単に利用してさまざまな問題を解決できます。これにより、より広範な AI アプリケーション開発が促進され、開発者により多くの柔軟性と選択肢が提供されます。
Spring AI の中心的な目標は、AI 駆動型アプリケーションを構築するための基本的な構成要素を提供することです。これらのビルディング ブロックは柔軟性が高く、コードを実質的に変更することなくコンポーネントを簡単に交換できます。一例として、Spring AI は、OpenAI および Azure OpenAI テクノロジと互換性のある ChatClient インターフェイスと呼ばれるコンポーネントを導入しています。これにより、開発者はコードを変更せずに異なる AI サービス プロバイダーを切り替えることができるため、開発と統合がより便利になります。
Spring AI は、その中核として、人工知能ベースのアプリケーションを開発するための信頼できるビルディング ブロックを提供します。これらのモジュールの弾力性により、コーディングに大規模な変更を加えることなく、コンポーネントをスムーズに交換できます。一例として、Spring AI による ChatClient インターフェイスの導入が挙げられます。これは OpenAI および Azure OpenAI と互換性があり、開発者が両方のプラットフォームと簡単に対話できるようになります。この互換性により、開発者はコードを書き直すことなく、実際のニーズに基づいて適切なプラットフォームを選択できます。 Spring AI を使用すると、開発者は AI 駆動のアプリケーションをより効率的に構築できます。
Spring AI は、基本的な構成要素を超えて、より高度なソリューションを提供することに重点を置いています。例えば、「自分のドキュメントについての質疑応答」や「ドキュメントを使った対話型チャット」などの典型的なシナリオをサポートできます。アプリケーションのニーズが増大するにつれて、Spring AI は Spring Integration、Spring Batch、Spring Data などの Spring エコシステムの他のコンポーネントと緊密に連携して、より複雑なビジネス ニーズに対応する予定です。
2 Spring Boot プロジェクトを作成し、OpenAI コントローラーの例を作成します
まず、IDE で Spring Boot プロジェクトを生成し、次の内容を application.properties ファイルに保持します:
spring.ai.openai.api-key=<YOUR\_OPENAI\_API\_KEY>
以下 OpenAIController.java という名前のコントローラーを作成します:
package com.vas.springai.controller;import org.springframework.ai.client.AiClient;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestController@RequestMapping("/api/v1")public class OpenAIController {private final AiClient aiClient;public OpenAIController(AiClient aiClient) {this.aiClient = aiClient;}}
3 Prompt クラスを使用してプロンプト情報を構築します
プロンプト クラスは、一連のメッセージ オブジェクトの構造化されたホルダーであり、各メッセージはプロンプトの一部。これらのメッセージはプロンプト内で異なる役割と目的を持ち、その内容も異なります。ユーザーの質問、AI が生成した応答、関連するコンテキストの詳細などが含まれます。この設定では、プロンプトが特定の機能を備えた複数のメッセージで構成されているため、人間とコンピューターの複雑で高度な対話が容易になります。
@GetMapping("/completion")public String completion(@RequestParam(value = "message") String message){return this.aiClient.generate(message);}
ただし、aiClient の生成メソッドは、プレーン テキストをパラメータとして受け入れるだけでなく、以下に示すように、Prompt クラスのオブジェクトもパラメータとして受け入れることができます。現在、このメソッドは単純なテキストではなく、AiResponse タイプのインスタンスを返します。
@GetMapping("/completion")public AiResponse completion(@RequestParam(value = "message") String message){ PromptTemplate promptTemplate = new PromptTemplate("translate the given english sentence sentence into french {query}"); Prompt prompt = promptTemplate.create(Map.of("query", message)); return this.aiClient.generate(prompt);}
さらに、Prompt クラスは、さまざまな役割と意図を持つ一連の Message タイプのインスタンスをパラメーターとして受け入れることができるオーバーロードされたコンストラクターも提供します。これにより、プロンプト情報がより適切に整理および管理され、その後の処理と使用が容易になります。以下は、このオーバーロードされたコンストラクターを使用してすべてをマージする方法を示すサンプル コードです。
package com.vas.springai.controller;import org.springframework.ai.client.AiClient;import org.springframework.ai.client.Generation;import org.springframework.ai.prompt.Prompt;import org.springframework.ai.prompt.PromptTemplate;import org.springframework.ai.prompt.SystemPromptTemplate;import org.springframework.ai.prompt.messages.Message;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;import java.util.List;import java.util.Map;@RestController@RequestMapping("/api/v1")public class OpenAIController {private final AiClient aiClient;public OpenAIController(AiClient aiClient) {this.aiClient = aiClient;}@GetMapping("/completion")public List<Generation> completion(@RequestParam(value = "message") String message) {String systemPrompt = """You are a helpful AI assistant that helps people translate given text from english to french.Your name is TranslateProYou should reply to the user's request with your name and also in the style of a professional.""";SystemPromptTemplate systemPromptTemplate = new SystemPromptTemplate(systemPrompt);Message systemMessage = systemPromptTemplate.createMessage();PromptTemplate promptTemplate = new PromptTemplate("translate the given english sentence sentence into french {query}");Message userMessage = promptTemplate.createMessage(Map.of("query", message));Prompt prompt = new Prompt(List.of(systemMessage, userMessage));return this.aiClient.generate(prompt).getGenerations();}}
4 アプリケーションのテスト
市場で入手可能な任意のオープン ツールを使用して、postman、insomnia、Httpie などのアプリケーションをテストできます。
############################## ###写真### #############以上がSpring Boot と OpenAI の出会いによる新しいプログラミング パラダイムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









phpMyAdminを使用してデータテーブルを作成するには、次の手順が不可欠です。データベースに接続して、[新しいタブ]をクリックします。テーブルに名前を付けて、ストレージエンジンを選択します(InnoDB推奨)。列名、データ型、null値、その他のプロパティを許可するかどうかなど、列の追加ボタンをクリックして列の詳細を追加します。一次キーとして1つ以上の列を選択します。 [保存]ボタンをクリックして、テーブルと列を作成します。

Oracleデータベースを作成するのは簡単ではありません。根本的なメカニズムを理解する必要があります。 1.データベースとOracle DBMSの概念を理解する必要があります。 2。SID、CDB(コンテナデータベース)、PDB(プラグ可能なデータベース)などのコアコンセプトをマスターします。 3。SQL*Plusを使用してCDBを作成し、PDBを作成するには、サイズ、データファイルの数、パスなどのパラメーターを指定する必要があります。 4.高度なアプリケーションは、文字セット、メモリ、その他のパラメーターを調整し、パフォーマンスチューニングを実行する必要があります。 5.ディスクスペース、アクセス許可、パラメーター設定に注意し、データベースのパフォーマンスを継続的に監視および最適化します。 それを巧みに習得することによってのみ、継続的な練習が必要であることは、Oracleデータベースの作成と管理を本当に理解できます。

Oracleデータベースを作成するには、一般的な方法はDBCAグラフィカルツールを使用することです。手順は次のとおりです。1。DBCAツールを使用してDBNAMEを設定してデータベース名を指定します。 2. SyspasswordとSystemPassWordを強力なパスワードに設定します。 3.文字セットとNationalCharactersetをAL32UTF8に設定します。 4.実際のニーズに応じて調整するようにMemorySizeとTableSpacesizeを設定します。 5. logfileパスを指定します。 高度な方法は、SQLコマンドを使用して手動で作成されますが、より複雑でエラーが発生しやすいです。 パスワードの強度、キャラクターセットの選択、表空間サイズ、メモリに注意してください

Oracle SQLステートメントのコアは、さまざまな条項の柔軟なアプリケーションと同様に、選択、挿入、更新、削除です。インデックスの最適化など、ステートメントの背後にある実行メカニズムを理解することが重要です。高度な使用法には、サブクエリ、接続クエリ、分析関数、およびPL/SQLが含まれます。一般的なエラーには、構文エラー、パフォーマンスの問題、およびデータの一貫性の問題が含まれます。パフォーマンス最適化のベストプラクティスには、適切なインデックスの使用、Select *の回避、条項の最適化、およびバインドされた変数の使用が含まれます。 Oracle SQLの習得には、コードライティング、デバッグ、思考、基礎となるメカニズムの理解など、練習が必要です。

MySQLのフィールド操作ガイド:フィールドを追加、変更、削除します。フィールドを追加:table table_nameを変更するcolumn_name data_type [not null] [default default_value] [プライマリキー] [auto_increment]フィールドの変更:column_name data_typeを変更するcolumn_name data_type [not null] [default default_value] [プライマリキー]

ネストされたクエリは、1つのクエリに別のクエリを含める方法です。これらは主に、複雑な条件を満たし、複数のテーブルを関連付け、要約値または統計情報を計算するデータを取得するために使用されます。例には、平均賃金を超える従業員を見つけること、特定のカテゴリの注文を見つけること、各製品の総注文量の計算が含まれます。ネストされたクエリを書くときは、サブ征服を書き、結果を外側のクエリ(エイリアスまたは条項として参照)に書き込み、クエリパフォーマンスを最適化する必要があります(インデックスを使用)。

Oracleデータベースの整合性の制約により、以下を含むデータの精度を確保できます。NULL:NULL値は禁止されています。一意:単一のヌル値を許可する一意性を保証します。一次キー:一次キーの制約、一意を強化し、ヌル値を禁止します。外部キー:テーブル間の関係を維持する、外部キーはプライマリテーブルのプライマリキーを参照します。チェック:条件に応じて列の値を制限します。

Oracleは、世界最大のデータベース管理システム(DBMS)ソフトウェア会社です。その主な製品には、次の機能が含まれます。リレーショナルデータベース管理システム(Oracle Database)開発ツール(Oracle Apex、Oracle Visual Builder)ミドルウェア(Oracle Weblogic Server、Oracle SOA Suite)Cloud Service(Oracle Cloud Infrastructure)Cloud ServiceおよびBusiness Intelligence(Oracle Analytics Cloud、Oracle Essbase)Blockchain(Oracle Blockchain Pla
