Merged
Conversation
ユーザーに問いかける内容を厳格にしました。
入出力のlog取得のために色々実験 DBへの履歴保存のために、Sec-Websocket-Keyを用いてprimary keyを作る予定 また、ローカルのログ保存として、loggingを使用 一応ファイルに落ちるようにはしてるけど、今後どうするかは未定
if文の条件の明示化 log出力先をlogsディレクトリに変更。エラーはファイルに書き出す。
例を追加したり色々
LangChain、並びにその他の依存関係のバージョンを上げました。 そのため、必ず`pip install -r requirements.txt`を再度実行してください。
PEP8に準拠したコードフォーマットを行うために、Black Formatterとisortを導入しました。 いろいろ変わってますが、コード自体は変わっていません。
実験的に、app.pyに /set-cookie を追加しました。 ここにリクエストを送ると、cookieを設定することができます。 セットするcookieは、ランダムな20文字の文字列です。 また、returnとして、"message"と"session_id"を返します。
下記のような重大な脆弱性が報告されているようなので、パッチを適用しました。 若干バージョンが上がっています。 報告されている脆弱性は、FastAPIのバージョン0.109.0未満に存在する脆弱性です。 --- <h2>脆弱性のサマリー</h2> form dataを使用するとき、python-multipartはHTTP Content-Typeヘッダーを正規表現で解析しますが、この正規表現に対して攻撃者が特殊なオプションを送信すると、CPUリソースを消費し、メインイベントループを停止させることができます。 これはReDoS(正規表現によるサービス拒否)と呼ばれる攻撃です。 <h2>影響範囲</h2> この脆弱性は、python-multipartというパッケージを使用してform dataを解析するStarletteというフレームワークにも影響します。 Starletteは、FastAPIの基盤となっています。
PEP8に準拠していないコードをチェックするために、Flake8を導入しました。 VSCodeの拡張機能として利用できます。 私はそれで使っています。
Toolで楽天トラベルの宿泊施設の情報を取得する機能を追加しました。 取得できる情報としては、ホテル名、特徴、郵便番号、住所1、住所2、電話番号、ホテル情報URL、宿泊プラン一覧ページ、最低料金、アクセス方法があります。
エラーが起きた際に、ログをAzure Application Insightsに送信するようにしました。 既存のログハンドラーに加えて、AzureLogHandlerを追加しました。 また、そのために`APPLICATIONINSIGHTS_CONNECTION_STRING`という環境変数を追加しました。
何をインストールすべきかは、いつかpyproject.tomlに移行すると思う。
環境変数の読み込み位置を修正しました。 今までなんでAzureLogHandlerが動いてたのか、謎で仕方がない。
デプロイ後のデバッグがしやすいように、ログに出力する情報を追加しました。 特にFunction Callingで起きたバグは原因を特定しずらいからね。
Owner
Author
|
謎バグとコンフリクト直しといた |
Owner
Author
|
Azure Application Insightsにログを送信できないバグに遭遇。原因不明。意味不明 |
info情報は全部common.logに出力するように設定
普通に意味不明なので、Azure Application Insightsへのデバッグログは諦めました。 これについてはissueも立てているので、何か解決策が見つかればまた挑戦したいと思います。
Owner
Author
|
#33 |
logファイルは今まで通りgitで管理しないが、logsディレクトリはgitで管理するように変更する。 また、logsの中身はgitで管理しないように.gitignoreを追加。
ローカルはos.chdirでpathが変わるが、dockerでは初めからsrcディレクトリにいるため、pathが異なることでエラーが起きていた。 そこで、func_call_toolsディレクトリの中でos.chdirを使っていた部分を修正し、pathを絶対パスで指定することで解消した。 三項演算子を使っているため、よくわからない部分があるかもしれないが、単にsrcディレクトリにいるかどうかでpathを変えるようにしているだけ。
nkoji21
approved these changes
Feb 14, 2024
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
概要
宿泊施設の提案機能を追加しました。
Booking.comのAPIを使う条件がいまいちよく分からなかったので、楽天のAPIを使って情報を叩くようにしています。
なので、予約を自然言語で実現する機能はありません。無念。
変更点
LangChain, FastAPIなどのバージョンアップ
必ず
pip install -r requirements.txtを実行してください。Azure App InsightsにLogを送信
エラーが起きた際は、Azure Application Insightsにログを飛ばすようにしました。
また、デバッグ用に
src/logs/にも飛ばすようにしています。楽天APIを用いた宿泊施設情報の取得
LangChainのAgentsのToolで、必要であれば楽天の宿泊施設の情報を取得するようにしました。
動作的にはTripadvisorの際とほぼ同じです。
フォーマッターを用いたプログラムの整形
Black Formatter, isortを使い、プログラムをフォーマットしています。
変更箇所は多いですが、プログラムの動き自体は変わっていない箇所が多いです。
特に、
tripalgpt.py辺りはこれによる変更が多いです。/set-cookieエンドポイントを追加session用のCookieをセットできるエンドポイントを追加しました。
セット内容は20文字のランダムな文字列です。
今のところ実験的な試みなので、フロントからリクエストを送らなくても問題ないです。
その他
requirements.txtが更新?されているから、コンフリクトしないか怖いねえprompt_injection_defense()は一つにしてます。