專案 / 002
Java LLM 實作集
Java 會話、請求重試與持久化邊界,以及注意力、快取成本和量化誤差的可復現實驗。
實作現場 / 01
如果不帶上前文,記憶還在嗎?
先回放一次真實對話,再親手拆開請求。看見介面中的歷史,和模型這一次實際收到的內容之間的區別。
本機互動 · 不呼叫模型 · 原始紀錄保留中文 · 不上傳輸入
送出什麼
根據作者對話紀錄還原的訊息列表,不是封包原文。
實際觀察 / 作者紀錄
你好!我是 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模式支援情況尚未驗證。
程式碼與配套閱讀
01 / 首次呼叫 →
Java 8 原生 HTTP · 原始 JSON
02 / 解析與輸入 →
Gson · 主控台輸入 · Token 用量
03 / 多輪對話 →
歷史訊息 · 失敗回退 · exit 結束
第一篇實作文章 →
Java 8 呼叫大型語言模型:從首次請求到多輪對話
04 / 結構化輸出驗收 →
嚴格解析 · 35項檢查 · 真實失敗與重放
第二篇實作文章 →
HTTP 200之後,如何驗收模型的 JSON?
L1:上下文位置試驗 →
協定、29 次請求與獨立審計;提前停止,不宣稱位置無關。
L1v2:成組對照與請求節流 →
Agnes 3.0完成24次真實請求、6組對照;原始回應、用量與獨立稽核均可複核。
05 / 交易式對話歷史 →
候選副本 · 整輪提交 · 41項離線檢查
TypeScript / 輸出邊界 →
32組對照 · 原始JSON與unknown · 無模型呼叫
L1v3:相似干擾實驗設計 →
128項凍結材料,Java 8與獨立稽核通過;尚未線上執行
相似干擾工程與凍結請求 →
2515項Java離線斷言、60項Node測試、0次真實請求
LLM機制實驗(一):改動未來Token,前面的輸出應該變嗎? →
從手算兩行Attention到雙層數值對照,驗證因果掩碼、Softmax與未來資訊泄漏。
Java LLM 實踐(四):兩個請求同時返回,誰有資格寫入歷史? →
用真實Java執行緒復現回復亂序,加入版本票據、完整問答提交與有界回執,明確本地冪等和遠端執行的區別。
Java LLM 實踐(六):先驗收檢索證據,再談RAG回答 →
10篇原創合成資料、14個固定問題,手寫BM25與引用邊界;保留詞匯失配和無答案題的誤命中。
Java LLM 實踐(五):工具超時了,為什麼任務還在執行? →
用白名單、嚴格參數、零佇列與調用預算構建只讀工具致動器,並復現取消不等於終止的邊界。
LLM機制實驗(二):KV Cache省掉了什麼,怎樣證明沒有算錯? →
逐前綴重算、逐Token快取與分塊快取三路對照,記錄誤差、投影行數和真實數組字節。
LLM機制實驗(三):快取只留四格,為什麼不等於重算四個Token? →
用雙層滑動注意力區分絕對位置、快取槽位和歷史表示,展示兩種形狀正確卻計算錯誤的實現。
Java LLM 實踐(七):引用是真的,為什麼答案仍然不能通過? →
22 個固定配置案例,拆開引用存在、版本範圍、欄位支持與完整性,驗證 Java 回答驗收邊界。
LLM 機制實驗(四):前綴改了,舊 KV Cache 還能繼續用嗎? →
三種子、六條件,比較錯誤重用與帶鍵校驗的前綴快取;數值相同也不代表允許跨作用域共享。
Java LLM 實踐(八):流式回答斷了,半句答案該不該進入歷史? →
22 個回環 HTTP 案例,驗證 UTF-8、SSE 分幀、取消與異常結束,把逐步預覽和完整歷史提交分開。
LLM 機制實驗(五):改了歷史,能否只重算變化的後綴? →
27 個固定條件、81 個原始數組,驗證最長相同前綴裁剪、位置同步、滑窗回退與作用域隔離。
Java LLM 實踐(九):取消請求後,舊回答為什麼還會覆蓋新會話? →
18 種固定執行緒交錯,驗證流式預覽、完成和錯誤回呼的請求歸屬,以及取消和有限冪等的邊界。
LLM 機制實驗(六):快取加大了,為什麼還是一次都沒命中? →
27 條冷啟動軌跡、324 次請求與 648 個陣列,按位元組限制前綴檢查點,觀察工作集、隔離與 LRU 淘汰的實際收益。
Java LLM 實踐(十):點了取消,讀取執行緒為什麼還在運行? →
30次本地HTTP連接,區分會話取消、阻塞讀取退出與遠端工作,比較Future中斷和主動關閉連接。
LLM 機制實驗(七):快取省了計算,為什麼實測反而更慢? →
4860次實測查詢比較三種快取準入策略,把位元組預算、工作集、計算量與本地耗時放在一起驗證。
Java 會話歷史與請求窗口:裁掉的舊事實還能回來嗎? →
通過裁剪、提交、重啟和擴窗的連續實驗,分離可回看的完整歷史與一次模型請求的上下文。
Java 請求重試:三次超時,不等于一個總期限 →
七種真實本地 HTTP 情況,比較狀態碼、Retry-After、嘗試上限和總等待預算。
Java 對話歷史落盤:程序崩潰後,半輪記錄怎么辦? →
校驗追加日志、142種截斷前綴和三個真實異常退出子進程,明確本地提交與遠端冪等的邊界。
KV 快取開銷剖析:把省下的計算和新增的工作分開 →
對909次查詢做分段計時,驗證源碼簽名、查找、復制與續算分別花在哪里,同時保留快取仍慢的結果。
注意力分塊:不保存完整分數矩陣,如何保持結果? →
從錯誤的分塊平均出發,推導在線Softmax累加,并用9組陣列和558次計時區分省內存與加速。
KV 量化入門:省下多少位元組,又引入什麼誤差? →
比較整張量與逐行int8量化,顯式計入scale,觀察離群值對注意力輸出的影響。
Java 冪等重試:沒收到回答,不等于沒有執行 →
用七組本地 HTTP 故障對照,解釋冪等鍵、并發認領、請求沖突與進程崩潰窗口。
KV 量化軸:Key 與 Value 為什么不能一概而論? →
162組保存整數碼的離線對照,比較全張量、逐Token與K逐通道/V逐Token,保留混合策略并非總更優的結果。
持久投遞與歷史恢復 →
17種場景、193條子行程記錄;無接收端冪等的投遞崩潰後執行兩次,三個歷史恢復窗口均保留完整問答。
KV打包、殘差窗口與分塊成本 →
144組對照、810條計時:高精度近段窗口在近段注意力上收益更大;分塊減少工作陣列,但本機CPU計時更慢。
- Console input
- Messages history
- JSON / HTTP
- Agnes API
- Parse + display
繼續探索
繼續探索
- 工程案例
TypeScript 能保證模型輸出正確嗎?32組輸入與 Java 驗證器的邊界對照
從型別斷言、unknown到原始JSON:重現22個誤接收、4個物件驗證盲區,以及Java/TypeScript契約一致性的實際邊界。
- 工程案例
24次全對之後:怎樣設計更有區分度的上下文實驗?
從Agnes 3.0的24次真實結果出發,排除句式和編號線索,凍結128項相似干擾對照;用Java 8與獨立稽核驗證材料,不把離線準備當模型結果。