# LangChain for Java: Supercharge your Java application with the power of LLMs
## Project goals
The goal of this project is to simplify the integration of AI/LLM capabilities into your Java application.
This can be achieved thanks to:
- **A simple and coherent layer of abstractions**, designed to ensure that your code does not depend on concrete implementations such as LLM providers, embedding store providers, etc. This allows for easy swapping of components.
- **Numerous implementations of the above-mentioned abstractions**, providing you with a variety of LLMs and embedding stores to choose from.
- **Range of in-demand features on top of LLMs, such as:**
- The capability to **ingest your own data** (documentation, codebase, etc.), allowing the LLM to act and respond based on your data.
- **Autonomous agents** for delegating tasks (defined on the fly) to the LLM, which will strive to complete them.
- **Prompt templates** to help you achieve the highest possible quality of LLM responses.
- **Memory** to provide context to the LLM for your current and past conversations.
- **Structured outputs** for receiving responses from the LLM with a desired structure as Java POJOs.
- **"AI Services"** for declaratively defining complex AI behavior behind a simple API.
- **Chains** to reduce the need for extensive boilerplate code in common use-cases.
- **Auto-moderation** to ensure that all inputs and outputs to/from the LLM are not harmful.
## Highlights
You can declaratively define concise "AI Services" that are powered by LLMs:
```java
interface Assistant {
String chat(String userMessage);
}
Assistant assistant = AiServices.create(Assistant.class, model);
String answer = assistant.chat("Hello");
System.out.println(answer);
// Hello! How can I assist you today?
```
You can use LLM as a classifier:
```java
enum Sentiment {
POSITIVE, NEUTRAL, NEGATIVE
}
interface SentimentAnalyzer {
@UserMessage("Analyze sentiment of {{it}}")
Sentiment analyzeSentimentOf(String text);
@UserMessage("Does {{it}} have a positive sentiment?")
boolean isPositive(String text);
}
SentimentAnalyzer sentimentAnalyzer = AiServices.create(SentimentAnalyzer.class, model);
Sentiment sentiment = sentimentAnalyzer.analyzeSentimentOf("It is good!");
// POSITIVE
boolean positive = sentimentAnalyzer.isPositive("It is bad!");
// false
```
You can easily extract structured information from unstructured data:
```java
class Person {
private String firstName;
private String lastName;
private LocalDate birthDate;
}
interface PersonExtractor {
@UserMessage("Extract information about a person from {{text}}")
Person extractPersonFrom(@V("text") String text);
}
PersonExtractor extractor = AiServices.create(PersonExtractor.class, model);
String text = "In 1968, amidst the fading echoes of Independence Day, "
+ "a child named John arrived under the calm evening sky. "
+ "This newborn, bearing the surname Doe, marked the start of a new journey.";
Person person = extractor.extractPersonFrom(text);
// Person { firstName = "John", lastName = "Doe", birthDate = 1968-07-04 }
```
You can provide tools that LLMs can use! Can be anything: retrieve information from DB, call APIs, etc.
See example [here](https://github.com/langchain4j/langchain4j-examples/blob/main/other-examples/src/main/java/ServiceWithToolsExample.java).
## Compatibility
- Java: 8 or higher
- Spring Boot: 2 or 3
## Getting started
1. Add LangChain4j OpenAI dependency to your project:
- Maven:
```
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-open-ai</artifactId>
<version>0.25.0</version>
</dependency>
```
- Gradle:
```
implementation 'dev.langchain4j:langchain4j-open-ai:0.25.0'
```
2. Import your OpenAI API key:
```java
String apiKey = System.getenv("OPENAI_API_KEY");
```
You can use the API key "demo" to test OpenAI, which we provide for free.
[How to gen an API key?](https://github.com/langchain4j/langchain4j#how-to-get-an-api-key)
3. Create an instance of a model and start interacting:
```java
OpenAiChatModel model = OpenAiChatModel.withApiKey(apiKey);
String answer = model.generate("Hello world!");
System.out.println(answer); // Hello! How can I assist you today?
```
## Disclaimer
Please note that the library is in active development and:
- Many features are still missing. We are working hard on implementing them ASAP.
- API might change at any moment. At this point, we prioritize good design in the future over backward compatibility
now. We hope for your understanding.
- We need your input! Please [let us know](https://github.com/langchain4j/langchain4j/issues/new/choose) what features you need and your concerns about the current implementation.
没有合适的资源?快使用搜索试试~ 我知道了~
基于 java 的 调用大模型 代码, 和langhcain 有相似的功能
共424个文件
java:395个
xml:17个
txt:2个
需积分: 0 0 下载量 144 浏览量
2024-05-01
09:09:50
上传
评论
收藏 525KB ZIP 举报
温馨提示
对接了 百度文心一言、阿里通义千问、字节 云雀大模型、百川智能、腾讯 混元大模型等。 基本支持国内的所有大模型调用,调用简单快捷,更有基于 java 的接口式 面向对象调用方式
资源推荐
资源详情
资源评论
收起资源包目录
基于 java 的 调用大模型 代码, 和langhcain 有相似的功能 (424个子文件)
test-file.banana 29B
opennlp-en-ud-ewt-sentence-1.0-1.9.3.bin 20KB
mvnw.cmd 7KB
.gitattributes 43B
.gitignore 480B
OpenAiTokenizerIT.java 99KB
AiServicesIT.java 38KB
DocumentByParagraphSplitterTest.java 21KB
AzureOpenAiStreamingChatModel.java 20KB
OpenAiStreamingChatModelIT.java 18KB
AzureOpenAiStreamingLanguageModel.java 18KB
AzureOpenAiChatModel.java 18KB
StreamingAiServicesIT.java 17KB
AzureOpenAiImageModel.java 16KB
AzureOpenAiLanguageModel.java 16KB
AiServices.java 15KB
DefaultAiServices.java 14KB
AzureOpenAiEmbeddingModel.java 14KB
OpenAiChatModelIT.java 12KB
OpenAiTokenizer.java 11KB
InternalAzureOpenAiHelper.java 11KB
RedisEmbeddingStore.java 11KB
EmbeddingModelTextClassifierTest.java 11KB
BaiduClient.java 11KB
ToolExecutorTest.java 10KB
OllamaStreamingChatModelIT.java 10KB
EmbeddingStoreWithoutMetadataIT.java 9KB
AzureOpenAiChatModelIT.java 9KB
WenxinStreamingChatModelIT.java 9KB
WenxinStreamingResponseBuilder.java 8KB
InternalOpenAiHelper.java 8KB
InternalWenxinHelper.java 8KB
OpenAiStreamingChatModel.java 8KB
DocumentBySentenceSplitterTest.java 8KB
OpenAiStreamingResponseBuilder.java 7KB
EmbeddingModelTextClassifier.java 7KB
ChatCompletionRequest.java 7KB
OllamaClient.java 7KB
SkyLarkStreamingChatModel.java 7KB
ChatCompletionResponse.java 7KB
AzureOpenAiStreamingChatModelIT.java 7KB
InMemoryEmbeddingStore.java 7KB
ServiceOutputParser.java 7KB
StreamingRequestExecutor.java 6KB
StreamingRequestExecutor.java 6KB
DefaultToolExecutor.java 6KB
OpenAiChatModel.java 6KB
TokenWindowChatMemoryTest.java 6KB
OllamaStreamingLanguageModelIT.java 6KB
HierarchicalDocumentSplitter.java 6KB
TokenWindowChatMemory.java 6KB
WenxinStreamingChatModel.java 6KB
BaiChuanStreamingChatModel.java 6KB
OpenAiImageModel.java 6KB
EmbeddingStore.java 5KB
JsonSchemaProperty.java 5KB
QwenEmbeddingModel.java 5KB
LocalAiStreamingChatModel.java 5KB
MessageWindowChatMemoryTest.java 5KB
AzureOpenAiStreamingResponseBuilder.java 5KB
HunyuanStreamingChatModel.java 5KB
JsonSchemaPropertyTest.java 5KB
WenxinChatModel.java 5KB
MessageWindowChatMemory.java 5KB
HtmlTextExtractor.java 5KB
InternalHunyuanHelper.java 5KB
PromptTemplateTest.java 5KB
WenxinChatModelIT.java 5KB
OpenAiTokenizerTest.java 4KB
EmbeddingStoreIngestor.java 4KB
QwenStreamingLanguageModel.java 4KB
SkyLarkChatModel.java 4KB
WenxinStreamingLanguageModel.java 4KB
OpenAiStreamingLanguageModel.java 4KB
AiServiceStreamingResponseHandler.java 4KB
AbstractLocalAiInfrastructure.java 4KB
Document.java 4KB
LocalAiChatModel.java 4KB
Function.java 4KB
OpenAiModerationModel.java 4KB
QwenStreamingChatModel.java 4KB
QwenTokenizerIT.java 4KB
OpenAiEmbeddingModel.java 4KB
InternalBaiChuanHelper.java 4KB
AbstractOllamaInfrastructure.java 4KB
FileSystemDocumentLoader.java 4KB
OllamaChatModel.java 4KB
InternalOpenAiHelperTest.java 4KB
OllamaChatModelIT.java 4KB
SkyLarkTokenizer.java 4KB
DocumentByRegexSplitter.java 4KB
ToolSpecification.java 4KB
WenxinTokenizer.java 4KB
DocumentBySentenceSplitter.java 4KB
OpenAiLanguageModel.java 4KB
RequestExecutor.java 4KB
RequestExecutor.java 4KB
TestUtils.java 4KB
BaiChuanChatModel.java 4KB
HunyuanTokenizer.java 4KB
共 424 条
- 1
- 2
- 3
- 4
- 5
资源评论
非凡暖阳
- 粉丝: 466
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功