Commit 5c3224d448eae85b36cc015b188a74a0cc547087

Authored by shixianjie
1 parent e845f252e0
Exists in master

api和entity

app/src/main/java/com/hjx/parent/api/ChatApi.java
... ... @@ -0,0 +1,10 @@
  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 +}
... ...
app/src/main/java/com/hjx/parent/api/ChatChoices.java
... ... @@ -0,0 +1,13 @@
  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 +}
... ...
app/src/main/java/com/hjx/parent/api/ChatError.java
... ... @@ -0,0 +1,8 @@
  1 +package com.hjx.parent.api;
  2 +
  3 +public class ChatError {
  4 + String code;
  5 + String message;
  6 + String param;
  7 + String type;
  8 +}
... ...
app/src/main/java/com/hjx/parent/api/ChatMessage.java
... ... @@ -0,0 +1,44 @@
  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 +}
... ...
app/src/main/java/com/hjx/parent/api/ChatRequest.java
... ... @@ -0,0 +1,9 @@
  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 +}
... ...
app/src/main/java/com/hjx/parent/api/ChatResponse.java
... ... @@ -0,0 +1,19 @@
  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 +}
... ...
app/src/main/java/com/hjx/parent/api/ChatUsage.java
... ... @@ -0,0 +1,16 @@
  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 +}
... ...
app/src/main/java/com/hjx/parent/api/CompletionTokensDetails.java
... ... @@ -0,0 +1,5 @@
  1 +package com.hjx.parent.api;
  2 +
  3 +public class CompletionTokensDetails {
  4 + public int reasoningTokens;
  5 +}
... ...
app/src/main/java/com/hjx/parent/api/ContentItem.java
... ... @@ -0,0 +1,44 @@
  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 +}
... ...
app/src/main/java/com/hjx/parent/api/PromptTokensDetails.java
... ... @@ -0,0 +1,5 @@
  1 +package com.hjx.parent.api;
  2 +
  3 +public class PromptTokensDetails {
  4 + public int cachedTokens;
  5 +}
... ...