Plan v0.2'nin Faz 0 çıktısı. Yazılan sıraya göre:
- cobra tabanlı CLI iskeleti; server/agent/ctl komutları henüz stub.
- internal/sim: OpenAI uyumlu sahte inference engine. Router'ı GPU olmadan
gerçekçi koşullarda test edebilmek için gerçek bir engine'in router
açısından önemli davranışlarını modeller:
* continuous batching ve KV blok muhasebesi (head-of-line blocking dahil)
* zincirlenmiş blok hash'leri + LRU ile otomatik prefix cache
* batch büyüdükçe artan token gecikmesi
* istemci koptuğunda isteğin düşürülüp blokların bırakılması
* vLLM metrik adlarıyla /metrics (plan §7.6 engine kontratı)
- Testler: prefix hash zincirlemesi, LRU tahliyesi, iptal propagasyonu,
kuyruklama, SSE formatı, usage/cached_tokens, metriklerin gerçek
Prometheus parser'ıyla okunabilirliği.
- Gitea Actions CI: gofmt, vet, race detector.
Modül yolu gitea.mynodes.xyz/ilker/llmgw; `make rename` ile değiştirilebilir.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
49 lines
1.2 KiB
Go
49 lines
1.2 KiB
Go
// Package cli, llmgw'nin komut satırı yüzeyini kurar.
|
||
package cli
|
||
|
||
import (
|
||
"log/slog"
|
||
|
||
"github.com/spf13/cobra"
|
||
|
||
"gitea.mynodes.xyz/ilker/llmgw/internal/obs"
|
||
"gitea.mynodes.xyz/ilker/llmgw/internal/version"
|
||
)
|
||
|
||
type globalFlags struct {
|
||
logLevel string
|
||
logFormat string
|
||
}
|
||
|
||
var global globalFlags
|
||
|
||
// Root, kök komutu ve tüm alt komutları döner.
|
||
func Root() *cobra.Command {
|
||
root := &cobra.Command{
|
||
Use: "llmgw",
|
||
Short: "Çoklu IB fabric ve heterojen GPU için LLM gateway",
|
||
Long: "llmgw, kendi GPU sunucularında çalışan LLM'leri tek bir OpenAI uyumlu\n" +
|
||
"uç noktadan sunar. Tek binary, alt komutla farklı roller.",
|
||
Version: version.Version,
|
||
SilenceUsage: true,
|
||
SilenceErrors: true,
|
||
PersistentPreRun: func(_ *cobra.Command, _ []string) {
|
||
obs.Setup(obs.Options{Level: global.logLevel, Format: global.logFormat})
|
||
},
|
||
}
|
||
|
||
pf := root.PersistentFlags()
|
||
pf.StringVar(&global.logLevel, "log-level", "info", "log seviyesi: debug|info|warn|error")
|
||
pf.StringVar(&global.logFormat, "log-format", "text", "log biçimi: text|json")
|
||
|
||
root.AddCommand(
|
||
newServerCmd(),
|
||
newAgentCmd(),
|
||
newCtlCmd(),
|
||
newSimEngineCmd(),
|
||
)
|
||
return root
|
||
}
|
||
|
||
func logger() *slog.Logger { return slog.Default() }
|