Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add chat function #118

Open
wants to merge 11 commits into
base: dev
Choose a base branch
from
Open

add chat function #118

wants to merge 11 commits into from

Conversation

sota1111
Copy link

@EndoNrak
あとでコメント追記します。

@EndoNrak
Copy link
Member

chat_function/data以下のファイルをgit, githubの管理下に置くかどうかがちょい迷ってます。
基本的にデータ更新の類(データベースの中身とか)は管理下に置くべきではないはずですが、今回のケースはどっちなんだろう、、、

@EndoNrak
Copy link
Member

文言をちょっと修正したりするたびにPRをだす必要があるのはやだなあと思ってますが、そんなに変更するもんでもないならこれでもいいかもです

@EndoNrak
Copy link
Member

それ以外はLGTMです!!

@sota1111
Copy link
Author

sota1111 commented Aug 28, 2023

文言をちょっと修正したりするたびにPRをだす必要があるのはやだなあと思ってます

了解です。PR作ったらすぐコメント追記します。


return response_content


Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

openaiの公式ページに従い、function callを実装
https://platform.openai.com/docs/api-reference/chat/create#chat/create-functions

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

function call周りのことは完全お任せです!

"role": item["role"],
"content": item["content"],
**({"name": item["name"]} if "name" in item else {}),
**({"function_call": item["function_call"]} if "function_call" in item else {})
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"name"と"function_call"はfunction callを使わない時は必要ない

@@ -0,0 +1,6 @@
requests
urllib3==1.26
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

openaiとboto3を同時に利用するためには、urllib3==1.26を用いる必要がある
https://community.openai.com/t/openai-cannot-import-name-default-ciphers-problem-breaking-changes-with-the-latest-version-of-requests/194265

"""
質問には100文字以内で回答する。
必要に応じて"function"を実行し、その応答を用いて、"user"の言語に合わせた言語で100文字以内で回答する。
"""
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

llama_indexを実行すると、英語で回答する時があるため、言語を"user"と同じ言語に指定

@sota1111
Copy link
Author

@EndoNrak レビューお願いします。
Github ActionのFailはよく分からなかったです。

Copy link
Member

@EndoNrak EndoNrak left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OPENAI_API_KEYのところとCORS対策のところは絶対必要なのでそこの修正必要そうです!
あとはLGTM!!

print("response: ", response)

if __name__ == "__main__":
main()
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

local動作用まで作っていただいて感謝です!

"statusCode": status_code,
"body": json.dumps({
"message": message,
}),
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CORS対策しとかないといけないので、ほかのlambda functionを参考にheaderを追加しといてほしいです
参考→https://github.com/ChallengeClub/tetris_score_server/blob/main/cloud/sam/scripts/get_training_detail_from_dynamodb/get_training_detail_from_dynamodb.py

self.tetris_assistant = TetrisIndexSearch()

@staticmethod
def get_secret():
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

openaiのAPIキーってどこから読み込まれるんですか??
このメソッドで読み込まれてるんでしょうか??

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

secretmanager使うの初めてだったので、わかってませんでした!
これでOKそうですね

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Member

@EndoNrak EndoNrak left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

修正してdeploy可能になりました
動作確認出来たらmerge可能です

@@ -3,11 +3,13 @@ check:
--config-env $(ENV)\
--no-execute-changeset\
--no-fail-on-empty-changeset\
--resolve-image-repos\
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lambda用imagのリポジトリを自動で作成、削除してくれるオプション

@@ -28,7 +28,6 @@ Globals:
Function:
Timeout: 3
MemorySize: 128
Runtime: python3.9
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Globalsに書いたpropertyはすべてのresourceに例外なく適用される。
今回追加したchat_functionではimage typeを使っていて、runtimeが指定されているとsam deploy時にエラーが出る
aws/serverless-application-model#1874

'Access-Control-Allow-Origin': 'frontend_origin',
'Access-Control-Allow-Methods': 'GET,POST,PUT,DELETE,OPTIONS'
}

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CORS対策のheaderを追加

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@@ -52,14 +51,16 @@ Resources:
Name: tetris_api
StageName: tetris_api_stage
Cors:
AllowMethods: "'POST, GET, PUT, OPTIONS'"
AllowMethods: "'POST, GET, PUT, DELETE, OPTIONS'"
AllowHeaders: "'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token,X-Amz-User-Agent'"
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Postの場合、Headerを受け取る必要がある。

@sota1111
Copy link
Author

sota1111 commented Aug 31, 2023

@EndoNrak
CORS設定を追加しました。レビューお願いします。

@EndoNrak
Copy link
Member

@EndoNrak CORS設定を追加しました。レビューお願いします。

OKと思います!!
ただ、dev環境のフロントエンド+バックエンドで動作確認しないと気づいてないミスがあるかもなのでmergeはそれをやってからにしたいです!
よろしくお願いします

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants