Skip to content

Commit a5920a1

Browse files
committed
Add core deepseek classes
Signed-off-by: Mark Pollack <[email protected]>
1 parent d781199 commit a5920a1

File tree

24 files changed

+3738
-0
lines changed

24 files changed

+3738
-0
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[DeepSeek Chat Documentation](https://docs.spring.io/spring-ai/reference/1.0-SNAPSHOT/api/chat/deepseek-chat.html)

models/spring-ai-deepseek/pom.xml

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
4+
<modelVersion>4.0.0</modelVersion>
5+
<parent>
6+
<groupId>org.springframework.ai</groupId>
7+
<artifactId>spring-ai-parent</artifactId>
8+
<version>1.0.0-SNAPSHOT</version>
9+
<relativePath>../../pom.xml</relativePath>
10+
</parent>
11+
<artifactId>spring-ai-deepseek</artifactId>
12+
<packaging>jar</packaging>
13+
<name>Spring AI DeepSeek</name>
14+
<description>DeepSeek support</description>
15+
<url>https://github.com/spring-projects/spring-ai</url>
16+
17+
<scm>
18+
<url>https://github.com/spring-projects/spring-ai</url>
19+
<connection>git://github.com/spring-projects/spring-ai.git</connection>
20+
<developerConnection>[email protected]:spring-projects/spring-ai.git</developerConnection>
21+
</scm>
22+
23+
<dependencies>
24+
<!-- production dependencies -->
25+
<dependency>
26+
<groupId>org.springframework.ai</groupId>
27+
<artifactId>spring-ai-client-chat</artifactId>
28+
<version>${project.parent.version}</version>
29+
</dependency>
30+
31+
<dependency>
32+
<groupId>org.springframework.ai</groupId>
33+
<artifactId>spring-ai-retry</artifactId>
34+
<version>${project.parent.version}</version>
35+
</dependency>
36+
37+
<!-- Spring Framework -->
38+
<dependency>
39+
<groupId>org.springframework</groupId>
40+
<artifactId>spring-context-support</artifactId>
41+
</dependency>
42+
43+
<dependency>
44+
<groupId>org.slf4j</groupId>
45+
<artifactId>slf4j-api</artifactId>
46+
</dependency>
47+
48+
<!-- test dependencies -->
49+
<dependency>
50+
<groupId>org.springframework.ai</groupId>
51+
<artifactId>spring-ai-test</artifactId>
52+
<version>${project.version}</version>
53+
<scope>test</scope>
54+
</dependency>
55+
56+
<dependency>
57+
<groupId>io.micrometer</groupId>
58+
<artifactId>micrometer-observation-test</artifactId>
59+
<scope>test</scope>
60+
</dependency>
61+
62+
</dependencies>
63+
64+
</project>
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
package org.springframework.ai.deepseek;
2+
3+
import org.springframework.ai.chat.messages.AssistantMessage;
4+
import org.springframework.ai.content.Media;
5+
6+
import java.util.List;
7+
import java.util.Map;
8+
import java.util.Objects;
9+
10+
public class DeepSeekAssistantMessage extends AssistantMessage {
11+
12+
private Boolean prefix;
13+
14+
private String reasoningContent;
15+
16+
public DeepSeekAssistantMessage(String content) {
17+
super(content);
18+
}
19+
20+
public DeepSeekAssistantMessage(String content, String reasoningContent) {
21+
super(content);
22+
this.reasoningContent = reasoningContent;
23+
}
24+
25+
public DeepSeekAssistantMessage(String content, Map<String, Object> properties) {
26+
super(content, properties);
27+
}
28+
29+
public DeepSeekAssistantMessage(String content, Map<String, Object> properties, List<ToolCall> toolCalls) {
30+
super(content, properties, toolCalls);
31+
}
32+
33+
public DeepSeekAssistantMessage(String content, String reasoningContent, Map<String, Object> properties,
34+
List<ToolCall> toolCalls) {
35+
this(content, reasoningContent, properties, toolCalls, List.of());
36+
}
37+
38+
public DeepSeekAssistantMessage(String content, String reasoningContent, Map<String, Object> properties,
39+
List<ToolCall> toolCalls, List<Media> media) {
40+
super(content, properties, toolCalls, media);
41+
this.reasoningContent = reasoningContent;
42+
}
43+
44+
public static DeepSeekAssistantMessage prefixAssistantMessage(String context) {
45+
return prefixAssistantMessage(context, null);
46+
}
47+
48+
public static DeepSeekAssistantMessage prefixAssistantMessage(String context, String reasoningContent) {
49+
return new DeepSeekAssistantMessage(context, reasoningContent);
50+
}
51+
52+
public Boolean getPrefix() {
53+
return prefix;
54+
}
55+
56+
public void setPrefix(Boolean prefix) {
57+
this.prefix = prefix;
58+
}
59+
60+
public String getReasoningContent() {
61+
return reasoningContent;
62+
}
63+
64+
public void setReasoningContent(String reasoningContent) {
65+
this.reasoningContent = reasoningContent;
66+
}
67+
68+
@Override
69+
public boolean equals(Object o) {
70+
if (this == o) {
71+
return true;
72+
}
73+
if (!(o instanceof DeepSeekAssistantMessage that)) {
74+
return false;
75+
}
76+
if (!super.equals(o)) {
77+
return false;
78+
}
79+
return Objects.equals(this.reasoningContent, that.reasoningContent) && Objects.equals(this.prefix, that.prefix);
80+
}
81+
82+
@Override
83+
public int hashCode() {
84+
return Objects.hash(super.hashCode(), this.prefix, this.reasoningContent);
85+
}
86+
87+
@Override
88+
public String toString() {
89+
return "AssistantMessage [messageType=" + this.messageType + ", toolCalls=" + super.getToolCalls()
90+
+ ", textContent=" + this.textContent + ", reasoningContent=" + this.reasoningContent + ", prefix="
91+
+ this.prefix + ", metadata=" + this.metadata + "]";
92+
}
93+
94+
}

0 commit comments

Comments
 (0)