Commit 5c3224d448eae85b36cc015b188a74a0cc547087
1 parent
e845f252e0
Exists in
master
api和entity
Showing
10 changed files
with
173 additions
and
0 deletions
Show diff stats
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 |