Quarkus 开发基于 LangChain4j 的扩展,方便将 LLM 集成到 Quarkus 应用程序中
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
在2023年比利时Devoxx大会上,LangChain for Java(LangChain4J)战略顾问和布道师Lize Raes的“Java Meets AI”演讲激发了Quarkus团队开发基于LangChain4J库的扩展。LangChain4J是LangChain库的Java版本,原先用Python或JavaScript实现。这个扩展让开发人员能够将大型语言模型(LLM)集成进Quarkus应用程序。Quarkus LangChain4J的第一个公开版本0.1于2023年11月中旬发布,并计划每周更新,目前已到0.5.1版本。
InfoQ采访了Quarkus项目联合负责人Max Rydahl Andersen,他表示虽然LangChain4J的API仍在变化,处于实验阶段,但开发人员可以尝试在真实项目中使用。Quarkus团队专注于扩展对“开放”模型的支持,特别是那些能在云端或本地运行的模型。Andersen看好LLM在许多企业项目中的应用,并认为该扩展与Quarkus现有功能集相契合,允许开发者声明性地定义LLM集成点,提供可测试性、可观测性和弹性。
Quarkus LangChain扩展保留了与LLM交互的方式,允许开发人员通过自然语言定义任务范围,类似于Quarkus REST Client。例如,通过@RegisterAiService和@UserMessage注解来定义自然语言的服务和任务。
@RegisterAiService
public interface TriageService {
// methods.
}
LangChain4j扩展提供了工具和文档存储两种机制来扩展LLM的知识。工具允许LLM与父应用程序交互,通过调用REST端点或执行数据库查询。文档存储是一种检索增强生成(RAG)机制,通过解析文档并计算其向量表示来扩展LLM上下文。Quarkus提供了Ingestor和Retriever来简化信息的摄入和查询。
@ApplicationScoped
public class CustomerRepository implements PanacheRepository {
@Tool("get the customer name for the given customerId")
public String getCustomerName(long id) {
// Implementation.
}
}
// Ingestor and Retriever example code.
该扩展支持各种存储解决方案和与商业及开源模型(如OpenAI、Hugging Face或Ollama)的交互。Quarkus跟随Spring Framework加入了嵌入AI能力的行列,并得到LangChain4j作者Dmytro Liubarskyi及其团队的支持。随着发展,Quarkus团队正在寻求反馈和想法来改进集成。
想要了解更多内容?