FixAndProbeLlm.java 4.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import java.net.URI;
  2. import java.net.http.HttpClient;
  3. import java.net.http.HttpRequest;
  4. import java.net.http.HttpResponse;
  5. import java.nio.charset.StandardCharsets;
  6. import java.sql.*;
  7. import java.time.Duration;
  8. /** Fix doubao endpoint + direct HTTP probe + login simulate. */
  9. public class FixAndProbeLlm {
  10. private static final String JDBC = "jdbc:mysql://cq-cdb-8fjmemkb.sql.tencentcdb.com:27220/fs_tenant_cs1"
  11. + "?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8";
  12. private static final String CHAT_EP = "https://ark.cn-beijing.volces.com/api/v3/chat/completions";
  13. private static final String MSG = "\u4f60\u597d\uff0c\u60f3\u4e86\u89e3\u4e00\u4e0b\u5497\u4eec\u767d\u9152\u600e\u4e48\u5356\uff1f";
  14. public static void main(String[] args) throws Exception {
  15. Class.forName("com.mysql.cj.jdbc.Driver");
  16. String key = null;
  17. String modelId = null;
  18. String endpoint = null;
  19. try (Connection c = DriverManager.getConnection(JDBC, "root", "Ylrz_1q2w3e4r5t6y");
  20. Statement st = c.createStatement()) {
  21. st.executeUpdate("UPDATE admin_ai_model SET api_endpoint='" + CHAT_EP
  22. + "', update_time=NOW() WHERE provider_code='doubao'");
  23. ResultSet rs = st.executeQuery(
  24. "SELECT api_key, model_identifier, api_endpoint FROM admin_ai_model WHERE provider_code='doubao' AND status=1 LIMIT 1");
  25. if (rs.next()) {
  26. key = rs.getString(1);
  27. modelId = rs.getString(2);
  28. endpoint = rs.getString(3);
  29. }
  30. }
  31. System.out.println("DB endpoint=" + endpoint + " model=" + modelId + " keyLen="
  32. + (key == null ? 0 : key.length()));
  33. String body = "{\"model\":\"" + modelId + "\",\"max_tokens\":128,\"temperature\":0.7,"
  34. + "\"messages\":[{\"role\":\"user\",\"content\":\"\u4f60\u597d\uff0c\u8bf7\u7528\u4e00\u53e5\u8bdd\u56de\u590dOK\"}]}";
  35. HttpClient hc = HttpClient.newBuilder().connectTimeout(Duration.ofSeconds(15)).build();
  36. HttpResponse<String> resp = hc.send(HttpRequest.newBuilder()
  37. .uri(URI.create(endpoint))
  38. .timeout(Duration.ofSeconds(60))
  39. .header("Authorization", "Bearer " + key)
  40. .header("Content-Type", "application/json")
  41. .POST(HttpRequest.BodyPublishers.ofString(body, StandardCharsets.UTF_8))
  42. .build(), HttpResponse.BodyHandlers.ofString(StandardCharsets.UTF_8));
  43. System.out.println("Direct HTTP status=" + resp.statusCode());
  44. System.out.println(resp.body().length() > 500 ? resp.body().substring(0, 500) : resp.body());
  45. // login + simulate
  46. String loginBody = "{\"tenantCode\":\"cs1\",\"username\":\"admin\",\"password\":\"Admin@123456\",\"code\":\"\",\"uuid\":\"\"}";
  47. HttpResponse<String> login = hc.send(HttpRequest.newBuilder()
  48. .uri(URI.create("http://127.0.0.1:8004/login"))
  49. .timeout(Duration.ofSeconds(30))
  50. .header("Content-Type", "application/json; charset=utf-8")
  51. .POST(HttpRequest.BodyPublishers.ofString(loginBody, StandardCharsets.UTF_8))
  52. .build(), HttpResponse.BodyHandlers.ofString(StandardCharsets.UTF_8));
  53. String token = extractToken(login.body());
  54. System.out.println("Login status=" + login.statusCode() + " token=" + (token != null ? "OK" : "FAIL"));
  55. String simBody = "{\"templateId\":70,\"content\":\"" + MSG.replace("\\", "\\\\").replace("\"", "\\\"") + "\"}";
  56. HttpResponse<String> sim = hc.send(HttpRequest.newBuilder()
  57. .uri(URI.create("http://127.0.0.1:8004/workflow/simulate"))
  58. .timeout(Duration.ofSeconds(180))
  59. .header("Authorization", "Bearer " + token)
  60. .header("Content-Type", "application/json; charset=utf-8")
  61. .POST(HttpRequest.BodyPublishers.ofString(simBody, StandardCharsets.UTF_8))
  62. .build(), HttpResponse.BodyHandlers.ofString(StandardCharsets.UTF_8));
  63. System.out.println("\nSimulate HTTP " + sim.statusCode());
  64. System.out.println(sim.body());
  65. }
  66. private static String extractToken(String json) {
  67. int i = json.indexOf("\"token\"");
  68. if (i < 0) return null;
  69. int q1 = json.indexOf('"', json.indexOf(':', i) + 1);
  70. int q2 = json.indexOf('"', q1 + 1);
  71. return json.substring(q1 + 1, q2);
  72. }
  73. }