Views
No views yet
system_prompt = """You are a code completion assistant. Your job is to rewrite the excerpt provided by the user, analyzing their edits and suggesting appropriate edits within the excerpt, taking into account the cursor's position.
The region where you can suggest the next edit is between <|editable_region_start|> and <|editable_region_end|>. Please predict the next edit between these tags and write the code that will fit within that region after the edits are applied."""
user_prompt = """### User Edits:
{}
### Currently User Code:
{}
"""
model_name = "SousiOmine/minoshiro-NEP-v1-sft"
# load the tokenizer and the model
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype="auto",
device_map="auto"
)
prompt = user_prompt.format(直近のユーザーによる編集(後述), コード(後述))
chat = [
{"role": "system", "content": system_prompt},
{"role": "user", "content": prompt},
]
input = tokenizer.apply_chat_template(chat, tokenize = False, add_generation_prompt = True)
inputs = tokenizer(
[
input
], return_tensors = "pt").to("cuda")
from transformers import TextStreamer
_ = model.generate(
**tokenizer(input, return_tensors = "pt").to("cuda"),
max_new_tokens = 1000, # Increase for longer outputs!
temperature = 0.7, top_p = 0.8, top_k = 20, # For non thinking
streamer = TextStreamer(tokenizer, skip_prompt = True),
)You are a code completion assistant. Your job is to rewrite the excerpt provided by the user, analyzing their edits and suggesting appropriate edits within the excerpt, taking into account the cursor's position.
The region where you can suggest the next edit is between <|editable_region_start|> and <|editable_region_end|>. Please predict the next edit between these tags and write the code that will fit within that region after the edits are applied.### User Edits:
直近の編集1~数回による変更をmarkdownのdiffで記述
### Currently User Code:
<|editable_region_start|>
次の編集を予測させたい範囲のコードをここに記述
<|editable_region_end|><think>
</think>
<|editable_region_start|>
予測した次の編集が適用されたコード
<|editable_region_end|>1### User Edits:
2```diff
3@@ -215,6 +215,31 @@
4 // StartCoroutine(RespawnRoutine());
5 }
6
7+ // --------------------------------------------------------------
8+ // 未完成メソッド(ここで編集中)
9+ // --------------------------------------------------------------
10+
11+ /// <summary>
12+ /// プレイヤーが特定のアイテムを取得したときの処理。
13+ /// 現在、アイテムタイプに応じた効果を実装中。
14+ /// </summary>
15+ /// <param name="item">取得したアイテムの情報</param>
16+ private void OnItemPickup(ItemData item)
17+ {
18+ // TODO: アイテムタイプごとの分岐処理を実装
19+ // switch (item.type)
20+ // {
21+ // case ItemType.HealthPotion:
22+ // Heal(item.value);
23+ // break;
24+ // case ItemType.SpeedBoost:
25+ // // Speed boost logic
26+ // break;
27+ // // さらに他のタイプ...
28+ // }
29+
30+ // 現在、アイテム取得のログだけ出力
31+ Debug.Log($"Picked up item: {item.name} (ID: {item.id})");
32+ } // 死亡イベント呼び出し
onDeath?.Invoke();
// コントローラ無効化
this.enabled = false;
// TODO: リスポーン処理の実装
// StartCoroutine(RespawnRoutine());
}
// --------------------------------------------------------------
// コルーチン例(現在作成中)
// --------------------------------------------------------------
private IEnumerator RespawnRoutine()
{
// リスポーンまでの待機時間
float waitTime = 3f;
// TODO: リスポーンエフェクトを再生
// PlayRespawnEffect();
yield return new WaitForSeconds(waitTime);
// プレイヤー位置をリスポーン地点にリセット
Transform spawnPoint = FindObjectOfType<SpawnManager>()?.GetSpawnPoint() ?? transform;
transform.position = spawnPoint.position;
transform.rotation = spawnPoint.rotation;
// ステータスリセット
currentHealth = maxHealth;
UpdateHealthUI();
// 再度コントローラ有効化
this.enabled = true;
// アニメーションリセット
animator.ResetTrigger("Die");
animator.SetTrigger("Idle");
}
// --------------------------------------------------------------
// デバッグコマンド(エディタ上でのテスト用)
// --------------------------------------------------------------[ContextMenu("Heal Full")]
private void DebugHealFull()
{
Heal(maxHealth);
}
[ContextMenu("Take 10 Damage")]
private void DebugTakeDamage()
{
TakeDamage(10);
}// --------------------------------------------------------------
// 未完成メソッド(ここで編集中) <|user_cursor_is_here|>
// --------------------------------------------------------------
/// <summary>
/// プレイヤーが特定のアイテムを取得したときの処理。
/// 現在、アイテムタイプに応じた効果を実装中。
/// </summary>
/// <param name="item">取得したアイテムの情報</param>
private void OnItemPickup(ItemData item)
{
// TODO: アイテムタイプごとの分岐処理を実装
// switch (item.type)
// {
// case ItemType.HealthPotion:
// Heal(item.value);
// break;
// case ItemType.SpeedBoost:
// // Speed boost logic
// break;
// // さらに他のタイプ...
// }
// 現在、アイテム取得のログだけ出力
Debug.Log($"Picked up item: {item.name} (ID: {item.id})");
```assistant_role
<tool_call>
<tool_call>
<|editable_region_start|>
private void Die()
{
// 死亡アニメーション再生
animator.SetTrigger("Die");
// 死亡イベント呼び出し
onDeath?.Invoke();
// コントローラ無効化
this.enabled = false;
// TODO: リスポーン処理の実装
// StartCoroutine(RespawnRoutine());
}
// --------------------------------------------------------------
// コルーチン例(現在作成中)
// --------------------------------------------------------------
private IEnumerator RespawnRoutine()
{
// リスポーンまでの待機時間
float waitTime = 3f;
// TODO: リスポーンエフェクトを再生
// PlayRespawnEffect();
yield return new WaitForSeconds(waitTime);
// プレイヤー位置をリスポーン地点にリセット
Transform spawnPoint = FindObjectOfType<SpawnManager>()?.GetSpawnPoint() ?? transform;
transform.position = spawnPoint.position;
transform.rotation = spawnPoint.rotation;
// ステータスリセット
currentHealth = maxHealth;
UpdateHealthUI();
// 再度コントローラ有効化
this.enabled = true;
// アニメーションリセット
animator.ResetTrigger("Die");
animator.SetTrigger("Idle");
}
// --------------------------------------------------------------
// デバッグコマンド(エディタ上でのテスト用)
// --------------------------------------------------------------
#if UNITY_EDITOR
private void OnValidate()
{
// 変数が不正な場合はデフォルトにフォールバック
if (moveSpeed < 0) moveSpeed = 5f;
if (jumpForce < 0) jumpForce = 7f;
if (maxHealth <= 0) maxHealth = 100;
}
[ContextMenu("Heal Full")]
private void DebugHealFull()
{
Heal(maxHealth);
}
[ContextMenu("Take 10 Damage")]
private void DebugTakeDamage()
{
TakeDamage(10);
}
#endif
// --------------------------------------------------------------
// 未完成メソッド(ここで編集中)
// --------------------------------------------------------------
/// <summary>
/// プレイヤーが特定のアイテムを取得したときの処理。
/// 現在、アイテムタイプに応じた効果を実装中。
/// </summary>
/// <param name="item">取得したアイテムの情報</param>
private void OnItemPickup(ItemData item)
{
// TODO: アイテムタイプごとの分岐処理を実装
switch (item.type)
{
case ItemType.HealthPotion:
Heal(item.value);
break;
case ItemType.SpeedBoost:
// Speed boost logic
break;
// さらに他のタイプ...
}
// 現在、アイテム取得のログだけ出力
Debug.Log($"Picked up item: {item.name} (ID: {item.id})");
<|editable_region_end|>