エキサイト株式会社エンジニアの佐々木です。詳細は話せませんがAI系の業務が発生したので、技術選定の一環でSpring AIを触ってみました。
前提
$ java --version openjdk 17.0.10 2024-01-16 LTS OpenJDK Runtime Environment Corretto-17.0.10.7.1 (build 17.0.10+7-LTS) OpenJDK 64-Bit Server VM Corretto-17.0.10.7.1 (build 17.0.10+7-LTS, mixed mode, sharing) . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.2.3)
手順
Spring AI 公式サイトの手順に従って進めてみます。
1. Spring CLI をインストールする
Spring CLIをインストールします。ここではMacのコマンドになります。
brew tap spring-cli-projects/spring-cli brew install spring-cli
2. Spring CLIでAI用のプロジェクトを作成する
spring-ai-sample
プロジェクトを作成します。
spring boot new --from ai --name spring-ai-sample
3. OpenAIのAPIキーを取得します
OpenAIのapi-keysにいき、APIキーを取得します。
4. 環境変数にAPIキーをセットします
export SPRING_AI_OPENAI_API_KEY=${取得したAPIキー}
5. SpringBootを起動します
下記コマンドを投入し、SpringBootを起動します。
cd spring-ai-sample ./mvnw spring-boot:run . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.2.3) 2024-04-17T13:27:14.877+09:00 INFO 80604 --- [ main] o.s.a.o.samples.helloworld.Application : Starting Application using Java 17.0.1 with PID 80604
6. リクエストしてみる
8080ポートでSpringBootが起動していますので、curlでリクエストしてみます。
curl http://localhost:8080/ai/simple --get --data-urlencode 'message=What is Java?' {"generation":"Java is a high-level programming language developed by Sun Microsystems (now owned by Oracle) in 1995. It is known for its platform independence, meaning that Java programs can run on any device or operating system that has a Java Virtual Machine (JVM) installed. Java is widely used for developing a variety of applications, including desktop, web, mobile, and enterprise software. It is also popular for developing server-side applications and Android mobile apps."}
サクッと応答がしてもらえました。
内部実装
簡単にですが、内部実装をみていきます。
ライブラリ
ライブラリとしては、AI用としては下記の2つが入っています。
org.springframework.ai:spring-ai-bom org.springframework.ai:spring-ai-openai-spring-boot-starter
コード
生成されていたコードとしては、下記のようなコードになっていました。
@RestController public class SimpleAiController { private final ChatClient chatClient; @Autowired // ChatClientを使えるようにしている public SimpleAiController(ChatClient chatClient) { this.chatClient = chatClient; } @GetMapping("/ai/simple") public Map<String, String> completion(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) { return Map.of("generation", chatClient.call(message)); // リクエストをなげている } }
SpringBootを使用されている方には見慣れたコードですね。ChatClient、EmbeddedClientなどいくつかあるので、これから試してみようと思います。
Spring AIで使用できる一覧
Spring AIで使用できる各API一覧です。Claude3とかはないですが、一通りある感じです。
Chat Models OpenAI Azure Open AI Amazon Bedrock Google Vertex AI Palm Google Gemini HuggingFace - access thousands of models, including those from Meta such as Llama2 Ollama - run AI models on your local machine MistralAI ---- Text-to-image Models OpenAI with DALL-E StabilityAI ---- Transcription (audio to text) Models OpenAI ---- Embedding Models OpenAI Azure OpenAI Ollama ONNX PostgresML Bedrock Cohere Bedrock Titan Google VertexAI Mistal AI
まとめ
Spring AIを触ってみましたが、かなり簡単にAPIに接続できました。手軽ですし、既存のサービスへのアドオンとしてはさっとできそうなのでよさそうです。。今後、試していこうと思います。
さいごに
エキサイトではフロントエンジニア、バックエンドエンジニア、アプリエンジニアを随時募集しております。長期インターンも歓迎していますので、興味があれば連絡いただければと思います。
募集職種一覧はこちらになります!(カジュアルからでもぜひ!) www.wantedly.com