Files
Agents-Flex1/docs/en/core/llms.md
2025-08-27 19:57:15 +08:00

96 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Large Language Models (LLMs)
Agents-Flex provides an abstract implementation interface for Large Language Models (LLMs) called `Llm.java`,
supporting two different chat types: `chat` and `chatStream`.
For various vendors, Agents-Flex offers different implementation classes and communication protocols, including `HTTP`, `SSE`, and `WebSocket` clients.
## Chat
In chat conversations of AI LLMs, we need to consider several different scenarios:
- Simple chat
- Chat with Histories
- Function Calling
These capabilities are determined by prompts, so Agents-Flex provides three implementations of prompts:
- SimplePrompt: Used for simple chat
- HistoriesPrompt: Used for chat with Histories
- FunctionPrompt: Used for Function Calling
During the interaction between prompts and LLMs, messages are exchanged. Therefore, Agents-Flex also provides different message implementations:
- **AiMessage**: The message returned by the LLMs, which includes not only the message content but also data such as token consumption.
- **FunctionMessage**: A subclass of AiMessage, returned when using FunctionPrompt in the `chat` method.
- **HumanMessage**: Represents messages input by Human during conversations.
- **SystemMessage**: Represents system messages, often used to inform the LLM's role, for fine-tuning prompts.
### Example Code
**Simple Chat**
```java
public static void main(String[] args) {
Llm llm = new OpenAILlm.of("sk-rts5NF6n*******");
Prompt prompt = new SimplePrompt("what is your name?");
String response = llm.chat(prompt);
System.out.println(response);
}
```
**Chat with Histories**
```java
public static void main(String[] args) {
Llm llm = new OpenAILlm.of("sk-rts5NF6n*******");
HistoriesPrompt prompt = new HistoriesPrompt();
prompt.addMessage(new SystemMessage("You are now a database development engineer...."));
prompt.addMessage(new HumanMessage("Please provide the DDL content for...."));
String response = llm.chat(prompt);
System.out.println(response);
}
```
**Function Calling**
Utility class definition
```java
public class WeatherUtil {
@FunctionDef(name = "get_the_weather_info", description = "get the weather info")
public static String getWeatherInfo(
@FunctionParam(name = "city", description = "the city name") String name) {
//Here, we should call API through third-party interfaces.
return name + "The weather is cloudy turning to overcast. ";
}
}
```
Create FunctionPrompt and pass it to the LLMs through the `chat` method:
```java
public static void main(String[] args) {
OpenAILlmConfig config = new OpenAILlmConfig();
config.setApiKey("sk-rts5NF6n*******");
OpenAILlm llm = new OpenAILlm(config);
FunctionPrompt prompt = new FunctionPrompt("how's the weather in New York?", WeatherUtil.class);
FunctionResultResponse response = llm.chat(prompt);
//Execute utility class method to obtain result.
Object result = response.getFunctionResult();
System.out.println(result);
//"The weather in New York is cloudy turning overcast."
}
```