Spring AI 与 Groq - 极速 AI 推理引擎

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

更快捷的信息处理不仅能提供信息,还能改变我们的认知和创新方式。

Spring AI,一个用于将 AI 功能集成到 Spring 应用中的强大框架,现已支持Groq - 一个极速 AI 推理引擎,支持工具/函数调用。

利用 Groq 与 OpenAI 兼容的 API,Spring AI 通过调整其现有的OpenAI 聊天客户端实现了无缝集成。这种方法使开发者能够通过熟悉的 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 连接起来的强大技术。

工具示例

以下是使用 Spring AI 调用 Groq 函数的一个简单示例:

@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,该 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 社区所有即将举行的活动。

查看全部