🈳

Azure Functionsを vscodeからデプロイする(python,langchain)

2023/05/02に公開

Azure Functionsのvscodeデプロイ(python,langchain)

azure funcitonsをvscode拡張でセットアップしてみるだけ
pythonを実行して、langchainもいれておいてみる

完成品プロジェクトはこちら

https://github.com/piroz/my-azure-langchain

使用したもの

1.Azureのアカウント

2.vscode拡張

https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azurefunctions

プロジェクトの作成方法

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 localDeploy(cloudっぽいアイコン)のボタンからデプロイできます

Deploy先は先の手順で作成していたremoteのリソースを指定します

Azureコンソールで動作確認

Azureにログインして「すべてのリソース」を見ると先程デプロイした「関数アプリ」が出現していますので下記のようにすればひとまずの動作確認ができます

  1. 該当の関数アプリを開く
  2. 開いた関数アプリの「関数」を開く
  3. 「関数」の一覧でDeployした関数(前述のでWORKSPACE localで定義していた名前)を開く
  4. 開いた関数で「コードとテスト」を開く
  5. コードが表示されたら上部メニューの「テストと実行」でパラメータのnameを下図のように適宜入力して「実行」

もしローカルでデバッグ実行したい場合は

ローカルでデバッグ実行したい場合は、Azure Functions Core Toolsをインストール必要がありました

https://learn.microsoft.com/ja-jp/azure/azure-functions/functions-run-local?tabs=v4%2Clinux%2Ccsharp%2Cportal%2Cbash

セットアップした状態で前述のプロジェクトディレクトリにて下記のように実行すると
今回のケースだと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 プログラミング モデルについて

参考

  1. Azureの無料アカウント登録については次の箇所で以前書いたものがあります

https://zenn.dev/hiroshimraz/articles/160d9eef7749eb#azureの無料アカウント登録

Discussion