專案 / 002

Java LLM 實作集

Java 會話、請求重試與持久化邊界,以及注意力、快取成本和量化誤差的可復現實驗。

開發中 · 更新於 2026-10-11

Java 8 · Gson · HTTP · TypeScript · Node.js · Python · NumPy

GitHub ↗

實作現場 / 01

如果不帶上前文,記憶還在嗎?

先回放一次真實對話,再親手拆開請求。看見介面中的歷史,和模型這一次實際收到的內容之間的區別。

本機互動 · 不呼叫模型 · 原始紀錄保留中文 · 不上傳輸入

送出什麼

根據作者對話紀錄還原的訊息列表,不是封包原文。

  1. 使用者

    你好

實際觀察 / 作者紀錄

你好!我是 Agnes,由 Sapiens AI 开发。有什么我可以帮你的吗?
輸入
285
輸出
60
合計
345

Token 來自這一次執行,不是目前請求估算、固定價格或效能指標。

繼續查看下一輪,觀察已有回答如何進入下一次請求。

檢視訊息 JSON · 1 條
{
  "model": "agnes-2.5-flash",
  "messages": [
    {
      "role": "user",
      "content": "你好"
    }
  ]
}

概覽

Java 對話、結構化輸出、工具與引用驗收、流式連接取消,以及本地注意力、快取準入和實測查詢實驗。

問題

取得回答只是開始;Java 程式還需要維護正確的歷史,並判斷模型輸出是否符合資料契約。

決策

保留 Java 8 與原生 HTTP;Gson 負責序列化,嚴格 JsonReader 驗證負責業務欄位。格式適配單獨啟用,不靜默修正分類。

驗證

各篇保留獨立協議、固定提交與原始記錄。真實模型呼叫、合成檢索、執行緒調度與未訓練 NumPy 模型分別解讀,不合併為成功率;最近結果見串流取消與快取準入實驗。

限制

沒有自動重試或自動發布;逾時不能證明伺服器未執行。結構合法不代表分類正確,JSON模式支援情況尚未驗證。

程式碼與配套閱讀

  1. 01Console input
  2. 02Messages history
  3. 03JSON / HTTP
  4. 04Agnes API
  5. 05Parse + display
架構

架構

繼續探索

繼續探索

  1. 實作教程

    用 Java 8 呼叫大型語言模型:從第一次請求到多輪對話

    透過三個實際執行的 Java 範例,理解模型請求、JSON 解析、讀取逾時與對話歷史。

    15 分鐘已發布
  2. 實作教程

    Java LLM 實踐(二):HTTP 200 之后,怎樣驗收模型的 JSON?

    從一次真實的代碼圍欄響應和三次超時出發,用 Java 8 實現嚴格結構校驗、受限格式適配與可追溯的失敗處理。

    16 分鐘已發布
  3. 實驗回顧

    把答案放在上下文中間,模型就會漏掉嗎?一次提前停止的對照試驗

    用 Java 固定 6 組虛構資料,對照開頭、中間、末尾與無答案條件;公開 29 次請求、HTTP 429 和不能下的結論。

    12 分鐘已發布
  4. 實驗 / 005

    L1 / 上下文位置試驗:提前停止的一輪

    6 組虛構資料的四條件對照;29 次嘗試后停止,位置差異尚無定論。

    尚無定論
  5. 工程案例

    LLM 實驗(二):先讓對照成立,再談上下文位置

    以 Java 8 實作成組對照與節流,完成 Agnes 3.0 的24次真實請求;公開逐項評分、服務端用量,並解釋全對結果的邊界。

    16 分鐘已發布
  6. 工程案例

    Java LLM 實作(三):逾時之後,別讓對話歷史悄悄變了

    以候選副本、整輪提交與UTF-8請求預算重寫多輪會話邊界:41項離線檢查,失敗不污染歷史,裁剪失敗仍保留原狀態。

    10 分鐘已發布
  7. 工程案例

    TypeScript 能保證模型輸出正確嗎?32組輸入與 Java 驗證器的邊界對照

    從型別斷言、unknown到原始JSON:重現22個誤接收、4個物件驗證盲區,以及Java/TypeScript契約一致性的實際邊界。

    11 分鐘已發布
  8. 實驗 / 011

    A1 / 對話歷史的提交邊界

    請求失敗、截斷或候選裁剪後,如何保持已提交歷史正確?

    已完成
  9. 實驗 / 010

    TypeScript / 輸出邊界對照

    型別斷言與物件驗證各會漏掉哪些無效輸入?

    已完成
  10. 工程案例

    24次全對之後:怎樣設計更有區分度的上下文實驗?

    從Agnes 3.0的24次真實結果出發,排除句式和編號線索,凍結128項相似干擾對照;用Java 8與獨立稽核驗證材料,不把離線準備當模型結果。

    10 分鐘已發布
  11. 機制拆解

    LLM機制實驗(一):改動未來Token,前面的輸出應該變嗎?

    從手算兩行Attention到雙層數值對照,驗證因果掩碼、Softmax與未來資訊泄漏。

    8 分鐘已發布
  12. 工程案例

    Java LLM 實踐(四):兩個請求同時返回,誰有資格寫入歷史?

    用真實Java執行緒重現回復亂序,加入版本票據、完整問答提交與有界回執,明確本地冪等和遠端執行的區別。

    8 分鐘已發布
  13. 工程案例

    Java LLM 實踐(六):先驗收檢索證據,再談RAG回答

    10篇原創合成資料、14個固定問題,手寫BM25與引用邊界;保留詞匯失配和無答案題的誤命中。

    8 分鐘已發布
  14. 工程案例

    Java LLM 實踐(五):工具超時了,為什麼任務還在執行?

    用白名單、嚴格參數、零佇列與調用預算構建只讀工具致動器,並重現取消不等於終止的邊界。

    8 分鐘已發布
  15. 機制拆解

    LLM機制實驗(二):KV Cache省掉了什麼,怎樣證明沒有算錯?

    逐前綴重算、逐Token快取與分塊快取三路對照,記錄誤差、投影行數和真實數組字節。

    8 分鐘已發布
  16. 機制拆解

    LLM機制實驗(三):快取只留四格,為什麼不等於重算四個Token?

    用雙層滑動注意力區分絕對位置、快取槽位和歷史表示,展示兩種形狀正確卻計算錯誤的實現。

    8 分鐘已發布
  17. 實驗 / 015

    L2–L4 / 注意力與快取機制

    從手算兩行Attention到雙層數值對照,驗證因果掩碼、Softmax與未來資訊泄漏。

    已完成
  18. 實驗 / 014

    A2 / 並發歷史提交

    用真實Java執行緒復現回復亂序,加入版本票據、完整問答提交與有界回執,明確本地冪等和遠端執行的區別。

    已完成
  19. 實驗 / 001

    檢索品質對照實驗

    固定一組問題與資料,記錄命中文件、引用與回答正確性,比較有無檢索的差異。

    實驗中
  20. 實驗 / 002

    工具呼叫失敗復原實驗

    使用可控制的唯讀工具,注入逾時與空結果,記錄任務完成率和呼叫次數。

    實驗中
  21. 工程案例

    Java LLM 實踐(七):引用是真的,為什麼答案仍然不能通過?

    22 個固定配置案例,拆開引用存在、版本範圍、欄位支持與完整性,驗證 Java 回答驗收邊界。

    9 分鐘已發布
  22. 機制拆解

    LLM 機制實驗(四):前綴改了,舊 KV Cache 還能繼續用嗎?

    三種子、六條件,比較錯誤重用與帶鍵校驗的前綴快取;數值相同也不代表允許跨作用域共享。

    9 分鐘已發布
  23. 實驗 / 019

    L5 / 前綴快取失效

    三種子、六條件,比較錯誤重用與帶鍵校驗的前綴快取;數值相同也不代表允許跨作用域共享。

    已完成
  24. 工程案例

    Java LLM 實踐(八):流式回答斷了,半句答案該不該進入歷史?

    22 個回環 HTTP 案例,驗證 UTF-8、SSE 分幀、取消與異常結束,把逐步預覽和完整歷史提交分開。

    11 分鐘已發布
  25. 實驗 / 021

    Java LLM 實踐(八):流式回答斷了,半句答案該不該進入歷史?

    22 個回環 HTTP 案例,驗證 UTF-8、SSE 分幀、取消與異常結束,把逐步預覽和完整歷史提交分開。

    已完成
  26. 機制拆解

    LLM 機制實驗(五):改了歷史,能否只重算變化的後綴?

    27 個固定條件、81 個原始數組,驗證最長相同前綴裁剪、位置同步、滑窗回退與作用域隔離。

    10 分鐘已發布
  27. 實驗 / 022

    LLM 機制實驗(五):改了歷史,能否只重算變化的後綴?

    27 個固定條件、81 個原始數組,驗證最長相同前綴裁剪、位置同步、滑窗回退與作用域隔離。

    已完成
  28. 工程案例

    Java LLM 實踐(九):取消請求後,舊回答為什麼還會覆蓋新會話?

    18 種固定執行緒交錯,驗證流式預覽、完成和錯誤回呼的請求歸屬,以及取消和有限冪等的邊界。

    10 分鐘已發布
  29. 實驗 / 024

    Java LLM 實踐(九):取消請求後,舊回答為什麼還會覆蓋新會話?

    18 種固定執行緒交錯,驗證流式預覽、完成和錯誤回呼的請求歸屬,以及取消和有限冪等的邊界。

    已完成
  30. 機制拆解

    LLM 機制實驗(六):快取加大了,為什麼還是一次都沒命中?

    27 條冷啟動軌跡、324 次請求與 648 個陣列,按位元組限制前綴檢查點,觀察工作集、隔離與 LRU 淘汰的實際收益。

    11 分鐘已發布
  31. 實驗 / 025

    LLM 機制實驗(六):快取加大了,為什麼還是一次都沒命中?

    27 條冷啟動軌跡、324 次請求與 648 個陣列,按位元組限制前綴檢查點,觀察工作集、隔離與 LRU 淘汰的實際收益。

    已完成
  32. 工程案例

    Java LLM 實踐(十):點了取消,讀取執行緒為什麼還在運行?

    30次本地HTTP連接,區分會話取消、阻塞讀取退出與遠端工作,比較Future中斷和主動關閉連接。

    11 分鐘已發布
  33. 實驗 / 027

    Java LLM 實踐(十):點了取消,讀取執行緒為什麼還在運行?

    30次本地HTTP連接,區分會話取消、阻塞讀取退出與遠端工作,比較Future中斷和主動關閉連接。

    已完成
  34. 機制拆解

    LLM 機制實驗(七):快取省了計算,為什麼實測反而更慢?

    4860次實測查詢比較三種快取準入策略,把位元組預算、工作集、計算量與本地耗時放在一起驗證。

    12 分鐘已發布
  35. 實驗 / 028

    LLM 機制實驗(七):快取省了計算,為什麼實測反而更慢?

    4860次實測查詢比較三種快取準入策略,把位元組預算、工作集、計算量與本地耗時放在一起驗證。

    已完成
  36. 工程案例

    Java 會話歷史與請求窗口:裁掉的舊事實還能回來嗎?

    通過裁剪、提交、重啟和擴窗的連續實驗,分離可回看的完整歷史與一次模型請求的上下文。

    9 分鐘已發布
  37. 工程案例

    Java 請求重試:三次超時,不等于一個總期限

    七種真實本地 HTTP 情況,比較狀態碼、Retry-After、嘗試上限和總等待預算。

    9 分鐘已發布
  38. 工程案例

    Java 對話歷史落盤:程序崩潰後,半輪記錄怎么辦?

    校驗追加日志、142種截斷前綴和三個真實異常退出子進程,明確本地提交與遠端冪等的邊界。

    9 分鐘已發布
  39. 機制拆解

    KV 快取開銷剖析:把省下的計算和新增的工作分開

    對909次查詢做分段計時,驗證源碼簽名、查找、復制與續算分別花在哪里,同時保留快取仍慢的結果。

    9 分鐘已發布
  40. 機制拆解

    注意力分塊:不保存完整分數矩陣,如何保持結果?

    從錯誤的分塊平均出發,推導在線Softmax累加,并用9組陣列和558次計時區分省內存與加速。

    9 分鐘已發布
  41. 機制拆解

    KV 量化入門:省下多少位元組,又引入什麼誤差?

    比較整張量與逐行int8量化,顯式計入scale,觀察離群值對注意力輸出的影響。

    9 分鐘已發布
  42. 實作教程

    Java 冪等重試:沒收到回答,不等于沒有執行

    用七組本地 HTTP 故障對照,解釋冪等鍵、並發認領、請求沖突與進程崩潰窗口。

    11 分鐘已發布
  43. 機制拆解

    KV 量化軸:Key 與 Value 為什么不能一概而論?

    162組保存整數碼的離線對照,比較全張量、逐Token與K逐通道/V逐Token,保留混合策略並非總更優的結果。

    10 分鐘已發布
  44. 實作教程

    持久冪等:讓操作身份與結果一起提交

    用帶CRC的追加紀錄、行程崩潰與99個截斷前綴,解釋持久冪等的提交邊界。

    10 分鐘已發布
  45. 實作教程

    Outbox投遞:本地可靠,不等於遠端只執行一次

    對照有鍵和無鍵接收端,解釋回復丟失、回執缺失與遠端重複副作用。

    10 分鐘已發布
  46. 實作教程

    對話恢復:從意圖、回執到完整問答

    在三個提交邊界真實終止JVM,以持久事實恢復完整歷史,保留遠端重複執行反例。

    10 分鐘已發布
  47. 實驗 / 042

    持久投遞與歷史恢復

    17種場景、193條子行程記錄;無接收端冪等的投遞崩潰後執行兩次,三個歷史恢復窗口均保留完整問答。

    已完成
  48. 機制拆解

    KV分組打包:4-bit到底省了多少?

    實際保存半位元組整數碼,復算分組scale開銷、補齊位元組與注意力輸出誤差。

    10 分鐘已發布
  49. 機制拆解

    KV殘差窗口:最近Token一定值得高精度嗎?

    用早段與近段注意力對照,解釋同樣的float32窗口為何收益不同。

    10 分鐘已發布
  50. 機制拆解

    KV分塊反量化:工作區小了,為什么更慢?

    區分快取負載、工作陣列和實測耗時,保留分塊CPU實現更慢的810條計時記錄。

    10 分鐘已發布
  51. 實驗 / 043

    KV打包、殘差窗口與分塊成本

    144組對照、810條計時:高精度近段窗口在近段注意力上收益更大;分塊減少工作陣列,但本機CPU計時更慢。

    已完成

← 返回目錄