Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ChatGPT と AWS Chalice で始めるサーバレス API 開発
Search
tenda_kurumada
July 03, 2024
120
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ChatGPT と AWS Chalice で始めるサーバレス API 開発
tenda_kurumada
July 03, 2024
Featured
See All Featured
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
67
58k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
480
HDC tutorial
michielstock
2
900
We Have a Design System, Now What?
morganepeng
55
8.3k
How GitHub (no longer) Works
holman
316
150k
Code Review Best Practice
trishagee
74
20k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
3k
WCS-LA-2024
lcolladotor
0
830
Skip the Path - Find Your Career Trail
mkilby
1
240
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
Building a Scalable Design System with Sketch
lauravandoore
464
34k
Transcript
confidential ChatGPT と AWS Chalice で始める サーバレス API 開発 2024年7⽉4⽇
confidential TENDA CO., LTD. 1. スピーカー紹介とイントロダクション 2. Chalice とは? 3.
Chaliceの導⼊ 4. ChatGPTに⼿伝ってもらいAPIの実装 5. デモの動作結果確認 6. まとめ ⽬次
confidential TENDA CO., LTD. ⾞⽥ 尚平(くるまだ しょうへい) ・東京郊外で⽣まれ育ち、⼤学で情報系に触れる ・新卒で⼊社したSI会社の1年⽬に仙台へ転勤 ・⼤規模な業務システムのアプリ開発(管理作業含む)をメインに従事
・割とレガシーなシステムが多く、AWSを使った開発もそこまで多くなかった ・AWSなどクラウド技術をキャッチアップするためSAAを取得 ・2024年4⽉にテンダ⼊社 ・現在はバックエンドエンジニアをメインにいろいろ経験中 ・⽣成AIは流れが早すぎて若⼲挫折中。AWSが⽣成AI資格を作るので、受けようか悩み中 3 スピーカー紹介とイントロダクション
confidential TENDA CO., LTD. 前職で初めてAWSに触れる それまではオンプレミスでJavaやVBを使ったシステムを担当 AWSの存在はもちろん知っていたが、仕事で使うことはなさそうだったので、 そこまで深く勉強できていなかった。 そんなときに突然の異動辞令が。 「来⽉からAWS案件を東京メンバと合同でやるから、チームリーダとしてよろしく」
「よくわかんないけど、新規顧客でサーバレスシステムをスクラム開発するらしいよ。」 その⽇から必死に勉強して、AWS?サーバレス?スクラム?を勉強。 結局その案件はプチ炎上したが、エンジニアとして⾮常によい経験ができた。 4 スピーカー紹介とイントロダクション
confidential TENDA CO., LTD. 特に”サーバレス”という概念 オンプレミスでアプリ開発していた⼈間からすると ”サーバなしでプログラム動くわけないでしょ”と思っていたが、 実際にサーバの構築なしでプログラムを動かすことができた。 ※実際には開発者がサーバを意識しなくてよいだけで、サーバ⾃体は存在している。 今回はAWSで実装できるサーバレスについて。
そして、このサーバレスをさらに簡単に構築するためのフレームワーク「Chalice」を 流⾏りに乗っかってChatGPTを活⽤して紹介させていただきたい。 5 スピーカー紹介とイントロダクション
confidential TENDA CO., LTD. ChaliceはAWS が提供しているAWS LambdaとAPI Gatewayを簡単に利⽤するためのPythonベースのマイクロフレームワーク AWS Lambdaはサーバレスアーキテクチャの象徴のようなサービスでAPI
Gatewayと連携することで スケーラブルなAPIをAWS上に構築することができる 6 Chaliceとは? AWS Lambda クライアント API Gateway DBなどの各種サービス との連携が可能
confidential TENDA CO., LTD. ⾼速なプロトタイピング: • 少ないコード量でサーバレスAPIを構築可能 • 開発からデプロイまでのサイクルが短い ⾃動デプロイ:
• デプロイコマンド⼀つで、Lambda関数とAPI Gatewayがセットアップされる • ローカル・devなど環境を定義することが可能 • 簡単なコマンド例: chalice deploy AWSとの統合: • IAMロールの⾃動設定ができるため、セキュリティや認証などの実装が楽 • AWSのPython SDKであるBoto3とシームレスに統合されているため、様々なサービスとの連携が可能 7 Chaliceとは?
confidential TENDA CO., LTD. サーバ管理不要: • インフラの管理が不要で、コードに集中できる • AWS管理コンソールでの操作は不要で、コードだけでリソース管理が可能(IaCの実現) ⾃動スケーリング:
• AWS Lambdaによる⾃動スケーリングで、⾼い可⽤性とパフォーマンスを実現 コスト効率: • 使⽤した分だけの従量課⾦制 • 初期投資が少なく、スタートアップや⼩規模プロジェクトにも最適 「便利そう」「試してみたい」と少しでも思ってもらえたでしょうか? 8 Chaliceとは?
confidential TENDA CO., LTD. インストール ※Pythonやpipはインストール済みの前提 pip install chalice プロジェクト作成
chalice new-project chaliceApp 9 Chaliceの導⼊
confidential TENDA CO., LTD. プロジェクトディレクトリの構成 ・app.py Chaliceアプリケーションのエントリーポイント PythonのWebフレームワークのFlaskに近い記法 10 Chaliceの導⼊
デフォルトはエンドポイントのルート(‘/’)にアクセスしたら レスポンスボディとして{‘hello’: ‘world’}を返すようなコードになっています。
confidential TENDA CO., LTD. プロジェクトディレクトリの構成 ・config.json Chaliceアプリケーションの設定全般を扱う 各環境ごとの設定やデプロイに関する情報、 IAMロール、環境変数なども保持することができる 11
Chaliceの導⼊
confidential TENDA CO., LTD. 実際に起動・リクエストしてみる ・ローカルで起動 ここではローカルにAPIサーバを⽴てて動作の確認ができる。 ・アクセス 12 Chaliceの導⼊
confidential TENDA CO., LTD. デプロイするには ・AWS認証情報を登録 aws configure --profile chalice
AWS Access Key ID [None]: xxxxxxxxxxxxxxxxxxxx AWS Secret Access Key [None]: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Default region name [None]: ap-northeast-1 Default output format [None]: json (詳細は割愛) ・デプロイコマンド実⾏ chalice deploy 1コマンドだけでAWS環境へのデプロイが完了 初回デプロイのときはIAMロール、API Gateway、AWS Lambda のリソースも作成される 13 Chaliceの導⼊
confidential TENDA CO., LTD. ChatGPTはʮ"EWBODFE%BUB"OBMZTJTʯͱ͍͏ػೳΛ͑ࣗવݴޠ͔ΒPythonコードの作成が可能 もちろん分からないことは教えてくれるし、エラーがあったら⼀緒に悩んでくれる 以下が今回使⽤したプロンプト。(Pythonファイルは直接ダウンロードできる形でも提供してくれる) ⾞⽥: 14 ChatGPTに⼿伝ってもらいAPIの実装
confidential TENDA CO., LTD. ChatGPT: 15 ChatGPTに⼿伝ってもらいAPIの実装
confidential TENDA CO., LTD. ChatGPT: 16 ChatGPTに⼿伝ってもらいAPIの実装 ChatGPTに⾔われたとおりに実装して動くのか? やってみました。
confidential TENDA CO., LTD. 実際に動くのか?? ⇨さすがに⼀発では無理だった ・古いバージョンの書き⽅をして怒られたり ・オブジェクトの展開⽅法を間違えたり ・{“summary”:“¥u3053¥u306e¥u30b5¥u30a4¥u30c8¥ ・・・みたいにUnicodeエスケープシーケンスがでていたり
・参照するべき変数をミスっていたり 今回のパターンだと4箇所を後から修正 ただどれもエラー内容を⾒ればわかりやすいものしかなかったため、時間かからず修正できた。1時間かからず。 ⼿で直して動かしてみる 本イベントについてのテンダのプレスリリースを要約してみた結果が以下 17 デモの動作結果確認
confidential TENDA CO., LTD. 18 ChatGPTに⼿伝ってもらいAPIの実装 app = Chalice(app_name='news-summary-bot') app.debug
= True OPENAI_API_KEY = os.environ.get('OPENAI_API_KEY') openai.api_key = OPENAI_API_KEY @app.route('/') def index(): return {'hello': 'world'} @app.route('/summarize', methods=['POST'], content_types=['application/json']) def summarize(): request = app.current_request url = request.json_body.get('url') if not url: return Response(body={'error': 'URL is required'}, status_code=400) try: page_content = fetch_page_content(url) summary = summarize_content(page_content) return Response(body=json.dumps({'summary': summary}, ensure_ascii=False), status_code=200, headers={'Content-Type': 'application/json'}) except Exception as e: return Response(body=json.dumps({'error': str(e)}, ensure_ascii=False), status_code=500, headers={'Content-Type': 'application/json'}) def fetch_page_content(url): response = requests.get(url) if response.status_code != 200: raise ValueError('Failed to fetch the page content') soup = BeautifulSoup(response.text, 'html.parser') paragraphs = soup.find_all('p') page_text = ' '.join([p.get_text() for p in paragraphs]) return page_text def summarize_content(content): response = openai.chat.completions.create( model='gpt-3.5-turbo', messages=[ {"role": "system", "content": "⼤学⽣でもわかるように要約してください"}, {"role": "user", "content": f"次のサイトを200⽂字程度で要約してください:{content}"} ], max_tokens=500 ) summary_text = response.choices[0].message.content.strip() return summary_text 最終的なapp.pyのコード。9割はChatGPTに⽣成してもらい、⼈間が⼿で修正した。※importは省略
confidential TENDA CO., LTD. 今回AWS謹製のChaliceというフレームワークを使⽤して、 ChatGPTに⼿伝ってもらいながら、⽣成AIを組み込んだAPIを作成してみました。 思ったことをまとめると以下になります。 ・Chaliceは(知名度は低い気がするが)APIを作成するだけであれば、⾮常に簡単で便利 ・環境構築やAWSへのリソース作成もコードのコピペで実現できるのでコードを書くことに集中しやすい ・⼤規模なことや他のAWSサービスを繋ぐときには、⼯夫が必要
→共通化やデコレーターの書き⽅など →複雑な場合はSAM(AWS Serverless Application Model )のほうがいいのか・・・?有識者いれば教えてください。 ・コード⾃体もシンプルなので、初学者でも⽐較的学習ハードルは低い ・ChatGPTで簡単なプログラムは作れる。がエラーは完全に解消してくれるわけではない →ある程度の⾃⼒は必要。完全に仕事は取られるのはもう少し先・・・なはず 19 まとめ
confidential TENDA CO., LTD. 1. 公式ドキュメント • Chalice公式ドキュメント: https://aws.github.io/chalice/index.html •
OpenAI APIドキュメント: https://platform.openai.com/docs/ 2. ネット記事 •サクッとChaliceでAPI作ってみた!(⼊⾨編) : https://www.cloudbuilders.jp/articles/2265/ •爆速 API 開発を実現するサーバーレスアプリケーション開発向けフレームワーク: https://aws.amazon.com/jp/builders-flash/202003/chalice-api/ • AWS Chalice 再⼊⾨ 〜RESTful APIはやっぱり最⾼〜 : https://pages.awscloud.com/rs/112-TZM-766/images/A-3_AWSDevDay2021.pdf 20 参考⽂献
confidential TENDA CO., LTD. ご清聴ありがとうございました!! 21
confidential 【注意事項】 l 本資料を無断で第三者に配布することを禁⽌します。 l Amazon Web Services、『Powered by Amazon
Web Service』ロゴ、[その他AWS商標名]は、⽶国および/またはその他の諸国における、Amazon.com, Inc. またはその関連会社の商標です。