Azure Functionsを vscodeからデプロイする(python,langchain)
Azure Functionsのvscodeデプロイ(python,langchain)
azure funcitonsをvscode拡張でセットアップしてみるだけ
pythonを実行して、langchainもいれておいてみる
完成品プロジェクトはこちら
使用したもの
1.Azureのアカウント
2.vscode拡張
プロジェクトの作成方法
vscode拡張Azure Functions
をセットアップした状態でvscodeの左端に「A」のアイコンがあると思います、そのメニューの下部に現れるWORKSPACE local
の⚡Create Function
のボタンから作成するとよしなに作成してくれそうでした
localのWORKSPACEが作成できてvscodeで開き直したあと
デプロイ先のリソースが必要になるのでそれも作成しておきます
今度は前述の「A」のメニューの上部にあるRESOURCES remote
の➕Create Resource
から作成しておきます
pipでlangchainを追加する
Azureのドキュメントを見つけることができず、正式な手順か不明だったのですが
下記のようにすればlangchain
のプロジェクトへの追加ができました
(.venv) $ pip install langchain
(.venv) $ pip freeze >> requirements.txt
vscode拡張でdeployする
前述の「A」のメニューのWORKSPACE local
のDeploy
(cloudっぽいアイコン)のボタンからデプロイできます
Deploy先は先の手順で作成していたremoteのリソースを指定します
Azureコンソールで動作確認
Azureにログインして「すべてのリソース」を見ると先程デプロイした「関数アプリ」が出現していますので下記のようにすればひとまずの動作確認ができます
- 該当の関数アプリを開く
- 開いた関数アプリの「関数」を開く
- 「関数」の一覧でDeployした関数(前述ので
WORKSPACE local
で定義していた名前)を開く - 開いた関数で「コードとテスト」を開く
- コードが表示されたら上部メニューの「テストと実行」でパラメータの
name
を下図のように適宜入力して「実行」
もしローカルでデバッグ実行したい場合は
ローカルでデバッグ実行したい場合は、Azure Functions Core Toolsをインストール必要がありました
セットアップした状態で前述のプロジェクトディレクトリにて下記のように実行すると
今回のケースだとhttpのエンドポイントが立ち上がり
$ func start
Found Python version 3.10.11 (python3).
Azure Functions Core Tools
Core Tools Version: 4.0.5095 Commit hash: N/A (64-bit)
Function Runtime Version: 4.16.5.20396
Functions:
HttpTrigger1: [GET,POST] http://localhost:7071/api/HttpTrigger1
For detailed output, run func with --verbose flag.
[2023-05-01T21:14:22.390Z] Worker process started and initialized.
[2023-05-01T21:14:27.158Z] Host lock lease acquired by instance ID '000000000000000000000000E456D00C'.
[2023-05-01T21:14:27.715Z] Executing 'Functions.HttpTrigger1' (Reason='This function was programmatically called via the host APIs.', Id=c22e9ffe-5d4a-4b58-a77e-bf3558fd4747)
[2023-05-01T21:14:27.718Z] Python HTTP trigger function processed a request. with langchain version: 0.0.154
[2023-05-01T21:14:27.719Z] Executed 'Functions.HttpTrigger1' (Succeeded, Id=c22e9ffe-5d4a-4b58-a77e-bf3558fd4747, Duration=4ms)
別ターミナルからcurlなどでアクセスすると下記のように動作していそうでした
$ curl http://localhost:7071/api/HttpTrigger1
This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.
追加で調べたい
- 拡張機能のバンドル について
- Python プログラミング モデルについて
参考
- Azureの無料アカウント登録については次の箇所で以前書いたものがあります
Discussion