Spring AI 搭配 Groq - 極速 AI 推論引擎

工程 | Christian Tzolov | 2024 年 7 月 31 日 | ...

更快的資訊處理不僅僅是通知 - 它改變了我們感知和創新的方式。

Spring AI 是一個強大的框架,用於將 AI 功能整合到 Spring 應用程式中,現在提供對 Groq 的支援 - 一個極速的 AI 推論引擎,支援工具/函數呼叫。

透過利用 Groq 與 OpenAI 相容的 API,Spring AI 透過調整其現有的 OpenAI Chat 客戶端,實現無縫整合。 這種方法使開發人員能夠透過熟悉的 Spring AI API 來利用 Groq 的高效能模型。

spring-ai-groq-integration

我們將探討如何配置和使用 Spring AI OpenAI 聊天客戶端來連接 Groq。 有關詳細資訊,請查閱 Spring AI Groq 文件和相關的 測試

Groq API 金鑰

要與 Groq 互動,您需要從 https://console.groq.com/keys 取得 Groq API 金鑰。

相依性

將 Spring AI OpenAI starter 新增到您的專案。

<dependency>
  <groupId>org.springframework.ai</groupId>
  <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
</dependency>

對於 Gradle,將此新增到您的 build.gradle

dependencies {
  implementation 'org.springframework.ai:spring-ai-openai-spring-boot-starter'
}

請確保您已新增 Spring Milestone 和 Snapshot 儲存庫並新增 Spring AI BOM

配置 Spring AI 以使用 Groq

要將 Groq 與 Spring AI 一起使用,我們需要配置 OpenAI 客戶端以指向 Groq 的 API 端點並使用 Groq 特定的模型。

將以下環境變數新增到您的專案

export SPRING_AI_OPENAI_API_KEY=<INSERT GROQ API KEY HERE>  
export SPRING_AI_OPENAI_BASE_URL=https://api.groq.com/openai  
export SPRING_AI_OPENAI_CHAT_OPTIONS_MODEL=llama3-70b-8192

或者,您可以將這些新增到您的 application.properties 檔案中

spring.ai.openai.api-key=<GROQ_API_KEY>
spring.ai.openai.base-url=https://api.groq.com/openai
spring.ai.openai.chat.options.model=llama3-70b-8192
spring.ai.openai.chat.options.temperature=0.7

重點

  • api-key 設定為您的其中一個 Groq 金鑰
  • base-url 設定為 Groq 的 API 端點:https://api.groq.com/openai
  • model 設定為 Groq 的可用 模型之一。

有關配置屬性的完整清單,請查閱 Groq 聊天屬性 文件。

程式碼範例

現在我們已經配置 Spring AI 以使用 Groq,讓我們看一個簡單的範例,說明如何在您的應用程式中使用它。

@RestController
public class ChatController {

  private final ChatClient chatClient;

  @Autowired
  public ChatController(ChatClient.Builder builder) {
      this.chatClient = builder.build();
  }

  @GetMapping("/ai/generate")
  public Map generate(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
     String response = chatClient.prompt().user(message).call().content();
     return Map.of("generation", response);
  }

  @GetMapping("/ai/generateStream")
  public Flux<String> generateStream(@RequestParam(value = "message", 
        defaultValue = "Tell me a joke") String message) {
      return chatClient.prompt().user(message).stream().content();
  }
}

在此範例中,我們建立了一個簡單的 REST 控制器,具有兩個端點

  • /ai/generate:為給定的提示產生單一回應。
  • /ai/generateStream:串流回應,這對於較長的輸出或即時互動非常有用。

工具/函數

當選擇支援工具/函數的模型之一時,Groq API 端點支援 工具/函數呼叫

spring-ai-groq-functions-2

您可以向 ChatModel 註冊自訂 Java 函數,並讓提供的 Groq 模型智慧地選擇輸出一個 JSON 物件,其中包含呼叫一個或多個已註冊函數的參數。 這是一種強大的技術,可以將 LLM 功能與外部工具和 API 連接起來。

工具範例

以下是如何將 Groq 函數呼叫與 Spring AI 一起使用的簡單範例

@SpringBootApplication
public class GroqApplication {

	public static void main(String[] args) {
		SpringApplication.run(GroqApplication.class, args);
	}

	@Bean
	CommandLineRunner runner(ChatClient.Builder chatClientBuilder) {
		return args -> {
			var chatClient = chatClientBuilder.build();

			var response = chatClient.prompt()
				.user("What is the weather in Amsterdam and Paris?")
				.functions("weatherFunction") // reference by bean name.
				.call()
				.content();

			System.out.println(response);
		};
	}

	@Bean
	@Description("Get the weather in location")
	public Function<WeatherRequest, WeatherResponse> weatherFunction() {
		return new MockWeatherService();
	}

	public static class MockWeatherService implements Function<WeatherRequest, WeatherResponse> {

		public record WeatherRequest(String location, String unit) {}
		public record WeatherResponse(double temp, String unit) {}

		@Override
		public WeatherResponse apply(WeatherRequest request) {
			double temperature = request.location().contains("Amsterdam") ? 20 : 25;
			return new WeatherResponse(temperature, request.unit);
		}
	}
}

在此範例中,當模型需要天氣資訊時,它會自動呼叫 weatherFunction bean,然後可以獲取即時天氣資料。

預期的回應如下:"阿姆斯特丹目前的天氣是攝氏 20 度,巴黎目前的天氣是攝氏 25 度。"

閱讀更多關於 OpenAI 函數呼叫 的資訊。

主要考量

將 Groq 與 Spring AI 一起使用時,請記住以下幾點

  • 工具/函數呼叫:Groq 支援 工具/函數呼叫。 檢查建議使用的模型。
  • API 相容性:Groq API 與 OpenAI API 並不完全相容。 請注意行為或功能上的潛在差異。
  • 模型選擇:請確保您使用的是 Groq 特定的 模型之一。
  • 多模態限制:目前,Groq 不支援多模態訊息。
  • 效能:Groq 以其快速的推論時間而聞名。 與其他供應商相比,您可能會注意到回應速度有所提高,尤其是在較大型模型中。

結論

將 Groq 與 Spring AI 整合,為希望在其 Spring 應用程式中利用高效能 AI 模型的開發人員開啟了新的可能性。 透過重新利用 OpenAI 客戶端,Spring AI 可以輕鬆地在不同的 AI 供應商之間切換,讓您可以為您的特定需求選擇最佳的解決方案。

當您探索此整合時,請記住隨時關注 Spring AIGroq 的最新文件,因為功能和相容性可能會隨著時間的推移而演變。

我們鼓勵您嘗試不同的 Groq 模型,並比較它們的效能和輸出,以找到最適合您用例的模型。

祝您編碼愉快,並享受 Groq 為您的 AI 驅動 Spring 應用程式帶來的速度和功能!

取得 Spring 電子報

隨時關注 Spring 電子報

訂閱

領先一步

VMware 提供培訓和認證,以加速您的進度。

了解更多

取得支援

Tanzu Spring 在一個簡單的訂閱中提供對 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位檔。

了解更多

即將舉行的活動

查看 Spring 社群中所有即將舉行的活動。

查看全部