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 Chat 客户端连接到 Groq。有关详细信息,请参阅 Spring AI 的Groq 文档和相关的测试

Groq API 密钥

要与 Groq 交互,您需要从https://console.groq.com/keys获取 Groq API 密钥。

依赖项

将 Spring AI OpenAI 启动器添加到您的项目中。

<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 的里程碑和快照存储库并添加Spring AI BOM

为 Groq 配置 Spring AI

要将 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 chat 属性文档。

代码示例

现在我们已经配置 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 社区所有即将举行的活动。

查看全部