[ChatStream] lightblue/karasu-7B-chat-plus 用 ChatPrompt

[ChatStream] lightblue/karasu-7B-chat-plus 用 ChatPrompt

こんにちは! (株)Qualiteg プロダクト開発部 です!


本稿では lightblue/karasu-7B-chat-plus 用の ChatPrompt をご紹介します。
旧バージョンの ChatStream をご利用のお客様は本ChatPromptをインポートすることで利用可能となります。(最新の配信バージョンではバンドルされております)

from chatstream import AbstractChatPrompt
from chatstream.chat_prompt.role_type import RoleType

SYSTEM_PROMPT = """\
あなたはAIアシスタントです。\
"""


class ChatPromptLightblueKarasuChatPlus(AbstractChatPrompt):

    def __init__(self):
        super().__init__()  # Call the initialization of the base class
        self.set_system(f"<s>[INST] <<SYS>>\n{SYSTEM_PROMPT}\n<</SYS>>\n\n")
        self.set_requester("")
        self.set_responder("")

    def get_stop_strs(self):
        if not self.chat_mode:
            return None
        return []

    def get_custom_skip_echo_len(self, skip_echo_len):

        num_turn = self.get_turn()
        if num_turn >= 2:
            modified_skip_echo_len = skip_echo_len + 1 * self.get_turn() - 1  
            return modified_skip_echo_len
        return skip_echo_len

    def get_replacement_when_input(self):
        return None

    def get_replacement_when_output(self):  # replace when response_text gotten
        return None

    def create_prompt(self, opts={}):

        ret = self.system

        for chat_content in self.get_contents(opts):

            chat_content_role_type = chat_content.get_role_type()
            chat_content_message = chat_content.get_message()

            if chat_content_message:
                merged_message = ""
                if chat_content_role_type == RoleType.REQUESTER:
                    merged_message = f"{chat_content_message} [/INST] "
                elif chat_content_role_type == RoleType.RESPONDER:
                    merged_message = f"{chat_content_message} </s><s>[INST] "
                ret += merged_message
            else:
                pass

        return ret

    async def build_initial_prompt(self, chat_prompt):
        # 初期プロンプトは実装しない
        pass

勘の良い方はお気づきかもしれませんが本モデルは Llama2 をベースモデルとしているため、 Llama2 対応として以下処理パートが特徴的となっております。

    def get_custom_skip_echo_len(self, skip_echo_len):

        num_turn = self.get_turn()
        if num_turn >= 2:
            modified_skip_echo_len = skip_echo_len + 1 * self.get_turn() - 1  
            return modified_skip_echo_len
        return skip_echo_len

ご参考
https://blog.qualiteg.com/llama2-dui-ying-no-chatpromptshi-zhuang/

Read more

NCCL error: unhandled cuda error が出たら ─ WSL2 + マルチGPU + vLLM で詰まった話

NCCL error: unhandled cuda error が出たら ─ WSL2 + マルチGPU + vLLM で詰まった話

こんにちは! Qualitegプロダクト開発部です! 今日は、Windows + WSL2 のマシンに RTX 4090 を2枚挿して、大規模なオープンモデルを vLLM で動かそうとしたら、NCCL の初期化で見事に詰まった話を書きます。 世の中に断片的にしか情報がなく、抜けるまでにかなり粘ったので、同じ構成で消耗している方の時間を少しでも節約できれば嬉しいです。 経緯 今回の目的は、次々と登場する最新のオープンモデル(オープンウェイトのLLM)を、手元で評価することでした。 オープンモデルは数週間単位で新しいものが出てきます。ベンチマークの数字だけでなく、自分たちのユースケースに対して実際にどう振る舞うのか——出力の質、速度、量子化したときの劣化具合、エージェント的なタスクの得手不得手——を、手を動かして確かめています 今回の環境は Windows + WSL2(Ubuntu) に RTX 4090 を2枚(各24GB)挿したマシンです。 nvidia-smi 上の CUDA Version は 12.8。 動かすのは大規模オープンモデルを

By Qualiteg プロダクト開発部
Claude Codeで「The model's tool call could not be parsed」が頻発する問題の原因分析と対策

Claude Codeで「The model's tool call could not be parsed」が頻発する問題の原因分析と対策

こんにちは!Qualitegプロダクト開発部です。 Claude Code(CLI)を使った開発中に、次のようなエラーが繰り返し表示されて作業が止まる現象に遭遇しました。 ● The model's tool call could not be parsed (retry also failed). リトライしても直らず、/clear で会話をリセットしても、しばらく作業を続けるとまた同じエラーが出るという状況です。本記事では、実際のセッションログ(jsonl)を解析して特定した原因と、その対策について共有します。 結論から書くと、これは利用者側の設定ミスやコンテキスト枯渇が原因ではなく、 Opus 4.7(1Mコンテキスト)+ extended thinking の組み合わせで発生する、モデル応答側のストリーミングバグ でした。 現象 エラーが発生した環境は以下のとおりです。 * Claude Code 2.1.148 * モデル: Opus 4.

By Qualiteg プロダクト開発部
Mythos(ミュトス)レベルのオープンモデルはいつ出るのか

Mythos(ミュトス)レベルのオープンモデルはいつ出るのか

こんにちは! 本日は、ここ最近のAI業界で一番ざわついている話題、「Claude Mythos(ミュトス)」とその周辺について書きます。 発表から1ヶ月半が経って、ホワイトハウスの反対、日本のメガバンクの動き、AISIの追加評価、Anthropicの方針転換と、状況がかなり動いてきました。ここで一度、「で、結局オープンソースで同じものが使えるようになるのはいつなの?」という素朴な問いに、数字で答えてみます。 2026年4月7日、AnthropicはClaude Mythos Previewを発表しました。 サイバーセキュリティ能力で人類トップ層に到達したとされる、フロンティアモデルです。 Anthropicは"gated research preview"として、Project Glasswingのローンチパートナー(AWS、Apple、Cisco、CrowdStrike、Google、JPMorganChase、Microsoft、NVIDIAなど)に加え、重要ソフトウェアインフラを担う40超の追加組織に限定して提供しており、一般公開はしていません(Anthropic公式)

By Qualiteg 研究部, Qualiteg コンサルティング
AIエージェントを"事業に載せる"ために【第3回】AI導入を止めないために、実務で先に設計すべきこと

AIエージェントを"事業に載せる"ために【第3回】AI導入を止めないために、実務で先に設計すべきこと

— AI導入を"事業に載せる"ために、いま設計すべきこと(全3回) こんにちは!Qualitegコンサルティングチームです。 今回の「AI導入を“事業に載せる”ために、いま設計すべきこと」シリーズも、いよいよ第3回です。 第1回では、実際のAI導入事故を通じて、AIエージェントのリスクが単なる技術不良ではなく、権限や運用設計の不在から生まれることを見てきました。第2回では、事故が起きたときに責任をどこに置くのか、法務・契約・組織の観点から責任分解の難しさを整理しました。 では、AI導入を止めずに前に進めるためには、実務として何を先に設計しておくべきなのでしょうか。 本記事では、品質保証の転換、人間レビューの限界、海外で進む保険市場の変化も踏まえながら、AIエージェント導入前に設計すべき5つの領域と、経営として先に答えるべき3つの問いを整理します。 1. 品質保証の転換:「AIは自信を持って間違える」を前提にする 従来のソフトウェアの品質保証は、少なくとも同じ入力に対して同じ結果を期待しやすく、仕様・テスト・再現性を軸に品質を確認する考え方に立っていました。 ISACA

By Qualiteg コンサルティング