C#のProcessからcmd経由でChatRWKVのpythonファイルを実行して入出力のやり取りがしたい

実現したいこと

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 コメント