report-review

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | Submodules | README | LICENSE

review_typst.py (2014B)


      1 import os
      2 
      3 from llama_cpp import Llama
      4 
      5 MODEL_PATH = "./mistral_typst_merged.f16.gguf"
      6 FILE_PATH = "prism.typ"
      7 N_CTX = 8192
      8 MAX_TOKENS = 8192
      9 
     10 if not os.path.exists(MODEL_PATH):
     11     print(f"Error: Model file not found at {MODEL_PATH}")
     12     exit(1)
     13 
     14 if not os.path.exists(FILE_PATH):
     15     print(f"Error: Typst file not found at {FILE_PATH}")
     16     exit(1)
     17 
     18 try:
     19     with open(FILE_PATH, "r", encoding="utf-8") as f:
     20         typst_content = f.read()
     21 except Exception as e:
     22     print(f"Error reading file: {e}")
     23     exit(1)
     24 CPU_CORES = os.cpu_count()
     25 llm = Llama(
     26     model_path=MODEL_PATH,
     27     n_gpu_layers=0,
     28     n_ctx=N_CTX,
     29     n_threads=CPU_CORES,
     30     verbose=True,
     31 )
     32 
     33 SYSTEM_PROMPT = (
     34     "あなたはTypstコードのレビュー専門家です。提供されたコードを分析し、"
     35     "物理学の実験のレポートとしての問題点を日本語でリストアップしてください。"
     36     "出力は、Markdownの箇条書き形式(- [種別] メッセージ)で簡潔に記述してください。"
     37     "余計な前置きや結論の文章は一切不要です。"
     38 )
     39 
     40 USER_PROMPT = (
     41     f"以下のTypstコードをレビューしてください。\n\n```typst\n{typst_content}\n```"
     42 )
     43 
     44 prompt = f"### System:\n{SYSTEM_PROMPT}\n\n### User:\n{USER_PROMPT}\n\n### Assistant:"
     45 
     46 print("--- Llama モデルの初期化完了 (CPU Mode) ---")
     47 print(f"レビュー対象ファイル: {FILE_PATH} ({len(typst_content)} chars)")
     48 print("--- 推論開始 (時間がかかる可能性があります) ---")
     49 
     50 try:
     51     completion = llm.create_completion(
     52         prompt=prompt,
     53         max_tokens=MAX_TOKENS,
     54         temperature=0.1,
     55         stop=["### User:", "### System:"],
     56     )
     57 
     58     print("\n\n--- レビュー結果 ---")
     59     print(completion["choices"][0]["text"].strip())
     60     print("--------------------")
     61 
     62 except Exception as e:
     63     print(f"\n\n--- 推論中にエラーが発生しました ---")
     64     print(f"エラー: {e}")