SousiOmine/sarashina2.2-3b-instruct-v0.1-Pythonic-FunctionCall
29
1---2license: mit3tags:4- unsloth5language:6- ja7datasets:8- SousiOmine/Japanese-Pythonic-FunctionCall9- Kendamarron/jimba-instruction-all10base_model:11- sbintuitions/sarashina2.2-3b-instruct-v0.112---13 14https://qiita.com/SousiOmine/items/23313089c7c3f498996b15 16# 概要17sbintuitions/sarashina2.2-3b-instruct-v0.1に、18Kendamarron/jimba-instruction-allとSousiOmine/Japanese-Pythonic-FunctionCallを用いたQLoRAファインチューニングを行い、19python関数の呼び出しに対応させたモデルです。 20 21# 使い方22```23system_tool_format = """{}24 25#ツール26ユーザーの要望達成を支援するために、1つ以上のpython関数を呼び出すことができます。27呼び出せるpythonの関数を<tools></tools>タグ内に記します。28 29<tools>30{}31</tools>32 33関数を呼び出すには、以下のように関数名と引数を<tool_call></tool_call>タグ内に記述してください。34<tool_call>35function_name(param1=value1, param2=value2)36</tool_call>37"""38 39# お好きなシステムプロンプトをどうぞ40system = "あなたは役に立つアシスタントです。"41 42# ツールはdocstring付きで文字で書いてね43tools = """def perform_web_search(query: str) -> list:44 \"\"\"45 ウェブ検索を実行します。46 47 Args:48 query (str): 検索クエリ。例: "東京の天気"49 50 Returns:51 list: 検索結果のリスト。各要素はウェブページのタイトルとURLです。52 \"\"\"53 pass54 55 56def get_weather(city: str) -> dict:57 \"\"\"58 指定した都市の現在の天気情報を取得します。59 60 Args:61 city (str): 天気を確認したい都市の名前。例: "東京"62 63 Returns:64 dict: 天気情報の辞書。{'temperature': 20.5, 'condition': 'Cloudy', 'humidity': 72}65 \"\"\"66 pass67 68 69def execute_script(script: str) -> str:70 \"\"\"71 ユーザから受け取ったスクリプトまたはコマンドを実行します。72 73 Args:74 script (str): 実行したいコマンドまたはスクリプト。例: "ls -la"75 76 Returns:77 str: 実行結果の出力またはエラーメッセージ。78 \"\"\"79 pass80 81"""82 83prompt = "今日のAIニュースと埼玉の天気を教えて"84chat = [85 {"role": "system", "content": system_tool_format.format(system, tools)},86 {"role": "user", "content": prompt},87]88 89# Unslothのサンプルから持ってきました チャットテンプレート適用してやればほかのでいけるはず90input = tokenizer.apply_chat_template(chat, tokenize = False, add_generation_prompt = True)91#print(input)92 93FastLanguageModel.for_inference(model)94inputs = tokenizer(95[96 input97], return_tensors = "pt").to("cuda")98 99from transformers import TextStreamer100text_streamer = TextStreamer(tokenizer)101_ = model.generate(**inputs, streamer = text_streamer, temperature=0.7, max_new_tokens = 1024)102 103# 応答の例104# <|assistant|><tool_call>perform_web_search(query="AI ニュース"), get_weather(city="埼玉")</tool_call></s>105 106# 戻り値はこんな感じで渡してあげてください107# chat.append({"role": "user", "content": "<tool_response>戻り値はまとめてここに</tool_response>"})108```109# 注意点110- チャットテンプレートがpython関数呼び出しに対応していません。