Open isamu opened 1 month ago
たとえばragAgentを使う場合、複数のdbに接続したいケースが有る。 環境変数の場合は同じagentを使うと設定値が固定される paramsを使うのが想定の方法であるが、サーバ、クライアント方式でgraphData、もしくはagentのパラメータをpostする場合は、不正な値をpostされる可能性がある。
agentは1つ(コピペは悪) dbの設定はサーバ側で指定する(クライアントから上書きできない) 複数dbを切り替えが可能(1つのGraphでragAgentが複数ある場合にも、機能する)
1) slashGPTであったように、APIKEYのようなパラメータをparamsにつけて、サーバで使う値をコントロールする(ただ、これは任意の値をAPIKEYで渡せるようにすると、openai api keyをdbにわたすことも可能になるので、別のinjection的な問題が発生しそう (編集済み)
2) agentをwrapするagentを用意して、paramsをソースレベルで上書きする(これはありかもしれない。wrapするagentは絶対ユースケースで必要)
3) 1)の改良で、APIKEYのsuffixをparamsで指定できるようにする(suffixなので環境変数が存在しない場合はエラー。よほど間違った名前をつけない限りはinjectionされない)
RAG_DB_PASSWORD RAG_DB_PASSWORD_UME_SERVER RAG_DB_PASSWORD_MATSU_SERVER UME_SERVER, MATSU_SERVER部分をparamsでpost, サーバ側では環境変数として持っておく
↑これが一番現実的かな。
params: {
db_server: "UME_SERVER"
}
environment variables -> Agent/nodeごとに変更できない。ファイルに値を書かないので安全(推奨) config -> graphaiのインスタンスで設定できる -> セッションごと、ユーザごとに変更可能 params -> UIから設定可能。サーバクライアントだと、クライアントから任意の値を入れられる -> 変更されてもokなケースのみ