Commit 5c3224d448eae85b36cc015b188a74a0cc547087

Authored by shixianjie
1 parent e845f252e0
Exists in master

api和entity

app/src/main/java/com/hjx/parent/api/ChatApi.java
File was created 1 package com.hjx.parent.api;
2
3 import retrofit2.http.Header;
4 import retrofit2.http.POST;
5 import retrofit2.http.Url;
6
7 public interface ChatApi {
8 @POST
9 void aiChat(@Url String url, @Header("Authorization") String token);
10 }
11
app/src/main/java/com/hjx/parent/api/ChatChoices.java
File was created 1 package com.hjx.parent.api;
2
3 import com.google.gson.annotations.SerializedName;
4
5 public class ChatChoices {
6
7 public ChatMessage message;
8 public int index;
9 @SerializedName("finish_reason")
10 public String finishReason;
11 public String logprobs;
12
13 }
14
app/src/main/java/com/hjx/parent/api/ChatError.java
File was created 1 package com.hjx.parent.api;
2
3 public class ChatError {
4 String code;
5 String message;
6 String param;
7 String type;
8 }
9
app/src/main/java/com/hjx/parent/api/ChatMessage.java
File was created 1 package com.hjx.parent.api;
2
3 import java.util.ArrayList;
4 import java.util.List;
5 import java.util.Objects;
6
7 public class ChatMessage {
8 public ChatMessage() {
9 }
10 public ChatMessage(String role, Object content) {
11 this.role = role;
12 this.content = content;
13 }
14
15 public String role;
16 public Object content;
17
18 public static ChatMessage fromImage(String role, String text, String... urls) {
19 List<ContentItem> items = new ArrayList<>();
20 if (text != null && !text.isEmpty()) {
21 items.add(new ContentItem(ContentItem.TYPE_TEXT, text));
22 }
23 for (String it: urls) {
24 items.add(new ContentItem(ContentItem.TYPE_IMAGE, it));
25 }
26 return new ChatMessage(role, items);
27 }
28
29 public String getTextContent() {
30 if (content == null) return null;
31 if (content instanceof String) return (String) content;
32 ContentItem item = firstText();
33 return item == null ? null : item.text;
34 }
35
36 private ContentItem firstText() {
37 if (!(content instanceof List<?>)) return null;
38 List<?> anyList = (List<?>) content;
39 return anyList.stream()
40 .map(ContentItem::reSerialize)
41 .filter(Objects::nonNull)
42 .findFirst().orElse(null);
43 }
44 }
45
app/src/main/java/com/hjx/parent/api/ChatRequest.java
File was created 1 package com.hjx.parent.api;
2
3 import java.util.List;
4
5 public class ChatRequest {
6 public String model;
7 public List<ChatMessage> messages;
8 public boolean stream;
9 }
10
app/src/main/java/com/hjx/parent/api/ChatResponse.java
File was created 1 package com.hjx.parent.api;
2
3 import com.google.gson.annotations.SerializedName;
4
5 import java.util.List;
6
7 public class ChatResponse {
8 public List<ChatChoices> choices;
9 public String created;
10 public String id;
11 public String model;
12 @SerializedName("service_tier")
13 public String serviceTier;
14 @SerializedName("object")
15 public String obj;
16 public ChatUsage usage;
17
18 public ChatError error;
19 }
20
app/src/main/java/com/hjx/parent/api/ChatUsage.java
File was created 1 package com.hjx.parent.api;
2
3 import com.google.gson.annotations.SerializedName;
4
5 public class ChatUsage {
6 @SerializedName("completion_tokens")
7 public int completionTokens;
8 @SerializedName("prompt_tokens")
9 public int promptTokens;
10 @SerializedName("total_tokens")
11 public int totalTokens;
12 @SerializedName("prompt_tokens_details")
13 public PromptTokensDetails promptTokensDetails;
14 @SerializedName("completion_tokens_details")
15 public CompletionTokensDetails completionTokensDetails;
16 }
17
app/src/main/java/com/hjx/parent/api/CompletionTokensDetails.java
File was created 1 package com.hjx.parent.api;
2
3 public class CompletionTokensDetails {
4 public int reasoningTokens;
5 }
6
app/src/main/java/com/hjx/parent/api/ContentItem.java
File was created 1 package com.hjx.parent.api;
2
3 import com.google.gson.Gson;
4 import com.google.gson.annotations.SerializedName;
5
6 public class ContentItem {
7 public static final String TYPE_TEXT = "text";
8 public static final String TYPE_IMAGE = "image_url";
9
10
11 public ContentItem() {
12 }
13 public ContentItem(String type, String text) {
14 this.type = type;
15 this.text = text;
16 }
17 public ContentItem(String type, ContentImage imageUrl) {
18 this.type = type;
19 this.imageUrl = imageUrl;
20 }
21
22 public String type;
23 public String text;
24 @SerializedName("image_url")
25 public ContentImage imageUrl;
26
27 public static class ContentImage {
28 public String url;
29 }
30
31
32 private static final Gson gson = new Gson();
33 static ContentItem reSerialize(Object any) {
34 if (any == null) return null;
35 try {
36 String json = gson.toJson(any);
37 ContentItem it = gson.fromJson(json, ContentItem.class);
38 return it;
39 } catch (Throwable t) {
40 t.printStackTrace();
41 }
42 return null;
43 }
44 }
45
app/src/main/java/com/hjx/parent/api/PromptTokensDetails.java
File was created 1 package com.hjx.parent.api;
2
3 public class PromptTokensDetails {
4 public int cachedTokens;
5 }
6