first commit

This commit is contained in:
hailin 2025-07-18 22:51:27 +08:00
commit 9ffef462dd
3 changed files with 142 additions and 0 deletions

50
extract_chat_template.py Normal file
View File

@ -0,0 +1,50 @@
#!/usr/bin/env python3
# extract_chat_template.py —— 最终版
#
# 用法示例:
# # 只导出原模板
# python extract_chat_template.py Qwen3-32B/tokenizer_config.json \
# -o Qwen3-32B/chat_template.jinja
#
# # 同时导出“无 <think>”版本
# python extract_chat_template.py Qwen3-32B/tokenizer_config.json \
# -o Qwen3-32B/chat_template.jinja \
# --no-think \
# -n Qwen3-32B/chat_template_nothink.jinja
#
# # -o/-n 若省略就写到当前目录chat_template.jinja / chat_template_nothink.jinja
import argparse, json, re, sys
from pathlib import Path
def main():
p = argparse.ArgumentParser()
p.add_argument("config", type=Path, help="tokenizer_config.json 路径")
p.add_argument("-o", "--output", type=Path,
default=Path("chat_template.jinja"),
help="原始模板输出文件(默认 chat_template.jinja")
p.add_argument("--no-think", action="store_true",
help="额外生成去掉 <think> 块的模板")
p.add_argument("-n", "--no-think-out", type=Path,
help="无 <think> 模板输出文件(默认 chat_template_nothink.jinja")
args = p.parse_args()
try:
tpl = json.loads(args.config.read_text(encoding="utf-8"))["chat_template"]
except Exception as e:
sys.exit(f"❌ 读取失败:{e}")
# 写原始模板
args.output.write_text(tpl, encoding="utf-8")
print(f"✅ 原模板 → {args.output.resolve()}")
# 写无思考模板(可选)
if args.no_think:
nt_path = args.no_think_out or Path("chat_template_nothink.jinja")
nt_path.write_text(re.sub(r"<think>.*?</think>", "", tpl, flags=re.S),
encoding="utf-8")
print(f"✅ 无 <think> 模板 → {nt_path.resolve()}")
if __name__ == "__main__":
main()

View File

@ -0,0 +1,9 @@
# ① 只导出原始模板
python extract_chat_template.py Qwen3-32B/tokenizer_config.json \
-o Qwen3-32B/chat_template.jinja
# ② 同时导出“无 <think>”版本
python extract_chat_template.py Qwen3-32B/tokenizer_config.json \
-o Qwen3-32B/chat_template.jinja \
--no-think \
-n Qwen3-32B/chat_template_nothink.jinja

83
make_supabase_api_url.go Normal file
View File

@ -0,0 +1,83 @@
package main
import (
"bytes"
"fmt"
"net"
"os/exec"
"strings"
)
func getSupabaseURL() string {
// 获取默认网关 IP
gatewayIP, err := getDefaultGateway()
if err != nil {
fmt.Println("⚠️ 获取默认网关失败,使用 fallback:", err)
return "http://localhost:8000"
}
// 获取所有本地网卡 IP 和子网
ifaces, err := net.Interfaces()
if err != nil {
fmt.Println("⚠️ 获取本地接口失败:", err)
return "http://localhost:8000"
}
for _, iface := range ifaces {
if (iface.Flags&net.FlagUp == 0) || (iface.Flags&net.FlagLoopback != 0) {
continue // 跳过不活跃或loopback接口
}
addrs, err := iface.Addrs()
if err != nil {
continue
}
for _, addr := range addrs {
ipNet, ok := addr.(*net.IPNet)
if !ok || ipNet.IP.To4() == nil {
continue
}
// 检查网关是否在这个接口的子网中
if ipNet.Contains(gatewayIP) {
// 找到同网段的IP
return fmt.Sprintf("http://%s:8000", ipNet.IP.String())
}
}
}
// 如果没有匹配的网段,使用 fallback
return "http://localhost:8000"
}
func getDefaultGateway() (net.IP, error) {
// 调用 Linux 命令获取默认路由
cmd := exec.Command("ip", "route", "show", "default")
var out bytes.Buffer
cmd.Stdout = &out
err := cmd.Run()
if err != nil {
return nil, err
}
lines := strings.Split(out.String(), "\n")
for _, line := range lines {
if strings.HasPrefix(line, "default") {
fields := strings.Fields(line)
for i, f := range fields {
if f == "via" && i+1 < len(fields) {
return net.ParseIP(fields[i+1]), nil
}
}
}
}
return nil, fmt.Errorf("default gateway not found")
}
func main() {
supabaseURL := getSupabaseURL()
fmt.Printf("\"SUPABASE_URL\": \"%s\"\n", supabaseURL)
}