sample_ai.hsp

sample\iron\sample_ai.hsp » Plain Format

;============================================================
;  iron_ai サンプル: OpenAI / ローカル LLM チャット
;
;  このサンプルでは Ollama (http://localhost:11434) を想定。
;  起動していなければ環境を変えて試してください。
;
;  Ollama 以外の例 (key を必要なら設定):
;    OpenAI:   iron_ai_set_endpoint "https://api.openai.com/v1"
;              iron_ai_set_key      "sk-..."
;              iron_ai_set_model    "gpt-4o-mini"
;    LM Studio: endpoint="http://localhost:1234/v1" model="local-model"
;    GitHub Models:
;              endpoint="https://models.inference.ai.azure.com" key=GITHUB_TOKEN
;============================================================

#include "hsp3_net_64.as"
#include "iron_ai.hsp"

	title "iron_ai サンプル — ローカル LLM チャット"
	screen 0, 720, 540
	font "MS Gothic", 14

	; ----- 初期設定 -----
	; デフォルトは Ollama 想定 (key 不要)
	iron_ai_set_endpoint "http://localhost:11434/v1"
	iron_ai_set_model    "llama3.2"
	iron_ai_set_system   "あなたは親切な日本語アシスタントです。簡潔に答えてください。"
	iron_ai_set_max_tokens 256
	iron_ai_set_temperature 70    ; 0.7

	mes "==== iron_ai chat sample ===="
	mes ""
	mes "endpoint: http://localhost:11434/v1  (Ollama)"
	mes "model:    llama3.2"
	mes ""
	mes "下のテキストボックスに質問を入力 → Send"
	mes "(Ollama を起動していない場合はエラーになります)"
	mes ""

	pos 10, 130
	objsize 600, 24
	sdim user_msg, 1024
	user_msg = "HSP3 とは何ですか? 1行で。"
	input user_msg, 1023, 1, 24
	pos 620, 130
	objsize 80, 24
	button gosub "Send", *do_send

	pos 10, 170
	mes "----- 履歴 -----"
	pos 10, 195
	sdim log_text, 16384
	log_text = ""
	mesbox log_text, 700, 320, 4

	stop

*do_send
	objprm 0, user_msg
	if strlen(user_msg) = 0 : return

	; ログに user 行を追記
	log_text = log_text + "[user] " + user_msg + "\n"
	objprm 2, log_text

	; AI 呼び出し
	sdim reply, 4096
	iron_ai_chat user_msg, reply
	if stat ! 200 {
		log_text = log_text + "[error] HTTP " + stat + " — Ollama 起動確認 / endpoint 設定確認\n\n"
		objprm 2, log_text
		return
	}

	log_text = log_text + "[ai] " + reply + "\n\n"
	objprm 2, log_text

	; 入力をクリア
	user_msg = ""
	objprm 0, user_msg
	return