spring-ai-alibaba
4
总安装量
3
周安装量
#50112
全站排名
安装命令
npx skills add https://github.com/teachingai/agent-skills --skill spring-ai-alibaba
Agent 安装分布
claude-code
3
opencode
2
antigravity
2
codex
2
windsurf
2
gemini-cli
2
Skill 文档
Spring AI Alibaba å¼åæå
æ¦è¿°
Spring AI Alibaba æä¾äºä¸é¿éäº DashScopeï¼éä¹åé®ï¼çéæï¼æ¯æä½¿ç¨é¿éäºç大è¯è¨æ¨¡åæå¡ã
æ ¸å¿åè½
1. 项ç®å建
ä¾èµï¼
<dependency>
<groupId>com.alibaba.cloud.ai</groupId>
<artifactId>spring-ai-starter-model-aliyun-dashscope</artifactId>
</dependency>
æä½¿ç¨ Gradleï¼
dependencies {
implementation 'com.alibaba.cloud.ai:spring-ai-starter-model-aliyun-dashscope'
}
2. é ç½®
application.ymlï¼
spring:
ai:
alibaba:
dashscope:
api-key: ${DASHSCOPE_API_KEY}
chat:
options:
model: qwen-turbo
temperature: 0.7
max-tokens: 2000
application.propertiesï¼
spring.ai.alibaba.dashscope.api-key=${DASHSCOPE_API_KEY}
spring.ai.alibaba.dashscope.chat.options.model=qwen-turbo
spring.ai.alibaba.dashscope.chat.options.temperature=0.7
spring.ai.alibaba.dashscope.chat.options.max-tokens=2000
3. Chat Client
ä½¿ç¨ ChatClientï¼
@Service
public class ChatService {
private final ChatClient chatClient;
public ChatService(ChatClient chatClient) {
this.chatClient = chatClient;
}
public String chat(String message) {
return chatClient.call(message);
}
public String chatWithPrompt(String userMessage) {
Prompt prompt = new Prompt(new UserMessage(userMessage));
ChatResponse response = chatClient.call(prompt);
return response.getResult().getOutput().getContent();
}
}
æµå¼ååºï¼
@Service
public class ChatService {
private final StreamingChatClient streamingChatClient;
public ChatService(StreamingChatClient streamingChatClient) {
this.streamingChatClient = streamingChatClient;
}
public Flux<String> streamChat(String message) {
return streamingChatClient.stream(message)
.map(response -> response.getResult().getOutput().getContent());
}
}
4. 模åéæ©
æ¯æçæ¨¡åï¼
qwen-turbo– éä¹åé® Turbo 模åï¼å¿«éååºï¼qwen-plus– éä¹åé® Plus 模åï¼å¹³è¡¡æ§è½ï¼qwen-max– éä¹åé® Max 模åï¼æå¼ºæ§è½ï¼
é ç½®ä¸å模åï¼
spring:
ai:
alibaba:
dashscope:
chat:
options:
model: qwen-max # ä½¿ç¨æå¼ºæ¨¡å
temperature: 0.7
max-tokens: 2000
5. Prompt Template
å®ä¹æ¨¡æ¿ï¼
@Service
public class PromptService {
private final PromptTemplate promptTemplate;
public PromptService() {
this.promptTemplate = new PromptTemplate(
"请ç¨{style}飿 ¼åç以ä¸é®é¢ï¼{question}"
);
}
public String generatePrompt(String style, String question) {
Map<String, Object> variables = Map.of(
"style", style,
"question", question
);
return promptTemplate.render(variables);
}
}
ä½¿ç¨ ChatClientï¼
@Service
public class ChatService {
private final ChatClient chatClient;
private final PromptTemplate promptTemplate;
public ChatService(ChatClient chatClient) {
this.chatClient = chatClient;
this.promptTemplate = new PromptTemplate(
"请ç¨{style}飿 ¼åç以ä¸é®é¢ï¼{question}"
);
}
public String chatWithStyle(String style, String question) {
Prompt prompt = promptTemplate.create(Map.of(
"style", style,
"question", question
));
ChatResponse response = chatClient.call(prompt);
return response.getResult().getOutput().getContent();
}
}
6. Embedding
é ç½®ï¼
spring:
ai:
alibaba:
dashscope:
embedding:
options:
model: text-embedding-v1
ä½¿ç¨ EmbeddingClientï¼
@Service
public class EmbeddingService {
private final EmbeddingClient embeddingClient;
public EmbeddingService(EmbeddingClient embeddingClient) {
this.embeddingClient = embeddingClient;
}
public List<Double> embed(String text) {
EmbeddingResponse response = embeddingClient.embedForResponse(
List.of(text)
);
return response.getResult().getOutput();
}
public List<List<Double>> embedBatch(List<String> texts) {
EmbeddingResponse response = embeddingClient.embedForResponse(texts);
return response.getResult().getOutput();
}
}
7. å¤è½®å¯¹è¯
ç»´æ¤å¯¹è¯ä¸ä¸æï¼
@Service
public class ConversationService {
private final ChatClient chatClient;
private final List<Message> conversationHistory = new ArrayList<>();
public ConversationService(ChatClient chatClient) {
this.chatClient = chatClient;
}
public String chat(String userMessage) {
conversationHistory.add(new UserMessage(userMessage));
Prompt prompt = new Prompt(conversationHistory);
ChatResponse response = chatClient.call(prompt);
String assistantMessage = response.getResult().getOutput().getContent();
conversationHistory.add(new AssistantMessage(assistantMessage));
return assistantMessage;
}
public void clearHistory() {
conversationHistory.clear();
}
}
æä½³å®è·µ
1. é 置管ç
- 使ç¨ç¯å¢åéåå¨ API Key
- åºåå¼ååç产ç¯å¢é ç½®
- é ç½®åççè¶ æ¶åéè¯çç¥
2. é误å¤ç
@Service
public class ChatService {
private final ChatClient chatClient;
public String chat(String message) {
try {
return chatClient.call(message);
} catch (Exception e) {
// å¤çé误
log.error("Chat error", e);
return "æ±æï¼å¤çè¯·æ±æ¶åºç°é误";
}
}
}
3. æ§è½ä¼å
- æ ¹æ®åºæ¯éæ©åéçæ¨¡åï¼turbo/plus/maxï¼
- ä½¿ç¨æµå¼ååºæåç¨æ·ä½éª
- åç使ç¨ç¼ååå° API è°ç¨
4. ææ¬æ§å¶
- éæ©åéçæ¨¡åï¼qwen-turbo ææ¬æ´ä½ï¼
- éå¶ Token 使ç¨é
- çæ§ API è°ç¨æ åµ
5. 䏿ä¼å
éä¹åé®å¯¹ä¸ææ¯æè¾å¥½ï¼å¯ä»¥ï¼
- 使ç¨ä¸æ Prompt 模æ¿
- ä¼å䏿æç¤ºè¯
- å©ç¨å¤è½®å¯¹è¯è½å
常ç¨ä¾èµ
<!-- Spring AI Alibaba DashScope -->
<dependency>
<groupId>com.alibaba.cloud.ai</groupId>
<artifactId>spring-ai-starter-model-aliyun-dashscope</artifactId>
</dependency>
<!-- Spring Boot Web (å¯éï¼ç¨äº REST API) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
é 置示ä¾
宿´é ç½®ï¼
spring:
ai:
alibaba:
dashscope:
api-key: ${DASHSCOPE_API_KEY}
chat:
options:
model: qwen-turbo
temperature: 0.7
max-tokens: 2000
top-p: 0.9
embedding:
options:
model: text-embedding-v1
ç¤ºä¾ Prompt
- “å¦ä½ä½¿ç¨ Spring AI Alibaba éæéä¹åé®ï¼”
- “Spring AI Alibaba ä¸å¦ä½é ç½®ä¸åçæ¨¡åï¼”
- “å¦ä½å¨ Spring AI Alibaba ä¸å®ç°æµå¼ååºï¼”
- “Spring AI Alibaba ä¸å¦ä½å®ç°å¤è½®å¯¹è¯ï¼”
- “å¦ä½ä¼å Spring AI Alibaba ç䏿å¤çè½åï¼”