ホームページ  >  記事  >  テクノロジー周辺機器  >  Spring Boot と OpenAI の出会いによる新しいプログラミング パラダイム

Spring Boot と OpenAI の出会いによる新しいプログラミング パラダイム

WBOY
WBOY転載
2024-02-01 21:18:02951ブラウズ

2023年、AI技術が話題となり、プログラミング分野を中心にさまざまな業界に大きな影響を与えています。 AI テクノロジーの重要性に対する人々の認識はますます高まっており、Spring コミュニティも例外ではありません。

GenAI (汎用人工知能) テクノロジーの継続的な進歩に伴い、AI 機能を備えたアプリケーションの作成を簡素化することが極めて重要かつ緊急になっています。このような背景から、AI 機能アプリケーションの開発プロセスを簡素化し、シンプルかつ直感的にし、不必要な複雑さを回避することを目的とした「Spring AI」が登場しました。 「Spring AI」により、開発者はAI機能を搭載したアプリケーションをより簡単に構築でき、使いやすく、操作しやすくなります。これにより、開発効率が向上するだけでなく、AI技術の普及と応用が加速します。つまり、「Spring AI」は AI アプリケーションの開発に新たな可能性をもたらし、よりシンプルで直感的なツールとフレームワークを開発者に提供します。

この記事では、Spring AI フレームワークと、このフレームワークを使用するためのエンジニアリングのヒントを簡単に紹介します。開発者はこれらのヒントを使用して、プロンプト情報をより適切に構造化し、Spring AI の機能を最大限に活用できます。

1 Spring AI の概要

编程新范式,当Spring Boot遇上OpenAISpring 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

以上がSpring Boot と OpenAI の出会いによる新しいプログラミング パラダイムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は51cto.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。