実現したいこと
C#のProcessからcmd経由でChatRWKVのpythonファイルを実行して、入出力のやり取りがしたい。
前提
Unity上でChatRWKVを扱いたく、C#のprocessを使って実装しています。
この関数で初期化して出力してもらい
C#
1 private void InitProcess(){2 Process process = new Process();3 process.StartInfo.FileName = "cmd.exe";4 process.StartInfo.UseShellExecute = false;5 process.StartInfo.RedirectStandardInput = true;6 process.StartInfo.RedirectStandardOutput = true;7 process.StartInfo.CreateNoWindow = true;8 process.StartInfo.WorkingDirectory = PythonPath;9 process.StartInfo.RedirectStandardError = true;10 process.OutputDataReceived += (sender, args) => {11 if(args.Data != null){12 UnityEngine.Debug.Log(args.Data);13 }14 };15 process.ErrorDataReceived += (sender, args) => {16 if(args.Data != null){17 UnityEngine.Debug.LogError(args.Data);18 }19 };20 21 process.Start();22 process.BeginOutputReadLine();23 m_process = process;24 }
この関数で入力します。
C#
1 private void CallCommand(string command){2 m_process.StandardInput.WriteLine(command);3 m_process.StandardInput.Flush();4 }
入力が必要のない出力については、問題なく取得できています。
発生している問題
ChatRWKVをコマンドプロンプトのみで実行すると、
Alice: こんにちは
Bob: (ここから入力)
のように入力でき、botから回答が来るのですが
Processをつかうと、
Alice: こんにちは
ここで表示がとまり、
C:Users/....../v2>やあ
のように、入力がそのままオウム返しで表示されます。
入力方法が悪いと思うのですが、調べても解決策がわかりません。
調べてみたところ、prompt関数を使って入力待ちをしているようです。
ご教授いただければ幸いです。
0 コメント