[![CI](https://github.com/nogibjj/tinayiluo_individual4/actions/workflows/cicd.yml/badge.svg)](https://github.com/nogibjj/tinayiluo_individual4/actions/workflows/cicd.yml)
## Auto Scaling Flask App Using Azure Container Platform
[Hello Doctor Web Application](https://week13.calmisland-989659dc.westus2.azurecontainerapps.io)
[Demo_Video](https://youtu.be/3LT7dBMBwjU)
### Goal
Construct an auto-scaling, publicly accessible container that incorporates a fully functional Large Language Model (LLM), utilizing Azure App Services and Flask for deployment and management.
### Overview
The project, "Hello Doctor," is a Flask web application integrated with OpenAI's LLM model, utilizing Docker for effective containerization. Here is a brief workflow overview of the Flask web application:
- User Input: Individuals input their symptoms into the application.
- Illness Search: The application processes these symptoms and searches for a corresponding illness using the AI model.
- Diagnostic Output: The web application then presents a detailed diagnostic of the identified illness to the user.
<img width="727" alt="Screen Shot 2023-12-06 at 12 35 54 PM" src="https://github.com/nogibjj/tinayiluo_individual4/assets/143360909/d79e6e93-f9ae-41f5-b73a-2a58115d2a26">
### Preparation:
- Use https://github.com/nogibjj/python-ruff-template
- Gain access to user token via Open AI GPT-3.5 model
- Input API_TOKEN into the `.env` file
- Specify installation requirements `requirements.txt`
```
#devops
black==22.3.0
click==8.1.3
pytest==7.1.3
pytest-cov==4.0.0
#pylint==2.15.3
#rust based linter
ruff==0.0.284
boto3==1.24.87
#web
fastapi==0.85.0
uvicorn==0.18.3
#others
Flask==2.0.2
gunicorn
Werkzeug==2.2.2
python-dotenv
requests
openai==0.28.1
```
- install: `make install`
- run: `python main.py` and navigate to the locally hosted website
- Input API_TOKEN into Github to generate Secret
- Build docker image: docker build --tag <insert image name> .
- Login to azure cli: `az login`
- Deploy Azuer web app: `az containerapp up --resource-group <insert resource group> --name <insert app name> --ingress external --target-port 50505 --source .`
- Input API_TOKEN on Azure for Azure Configuration
- View app via `container apps` and docker image via `container registry` in azure web portal
### Key Components
#### Flask Web Application:
- **Functionality:** The web app allows users to input prompts, which are then processed by the GPT-3.5 model to generate responses. The responses are displayed on a results page.
- `main.py`:
- Import Statements: The script imports necessary modules and functions. It uses dotenv to load environment variables, os for operating system interactions, and various components from Flask to handle web requests and responses. It also imports the openai module to interact with OpenAI's API.
- Environment Variables: load_dotenv() loads environment variables from a .env file. This typically includes sensitive data like API keys.
- Flask App Initialization: app = Flask(__name__) initializes a new Flask application.
- OpenAI API Key: Sets the OpenAI API key by fetching it from environment variables. This key is necessary for authenticating requests to OpenAI's services.
- Index Route: The @app.route("/") decorator defines the root endpoint of the web application. When a user visits the root URL, the index() function renders and returns the index.html template.
- get_completion Function: This function takes a user prompt and sends it to OpenAI's GPT-3.5 model. It formats the prompt, sends it to the model, and returns the generated response. The temperature parameter is set to 0, indicating no randomness in response generation.
- Result Route: The @app.route("/result") endpoint is used to display results. It fetches results from URL parameters and renders them using the result.html template.
- Predict Route: The @app.route("/predict", methods=["POST"]) endpoint handles prediction requests. It retrieves user input from a form, processes it through the get_completion function, and redirects to the result page with the generated output.
- Main Block: The if __name__ == "__main__" block checks if the script is executed directly (not imported). If so, it runs the Flask app with debugging enabled on port 8000.
- `test_main.py`: ensures the availability of HTML files needed for the web application and verifies that the OpenAI API integration is functioning correctly.
- **HTML Templates:** The project contains HTML templates (`index.html`, `result.html`) providing a user-friendly interface.
- `index.html`: this HTML page serves as a user interface for submitting symptoms to a Flask-based web application, which then uses an AI model for generating a diagnosis. The page is designed to be user-friendly and responsive, leveraging Bootstrap for styling and JavaScript for form handling and asynchronous server communication.
- `result.html`: this HTML page serves as a simple, user-friendly interface for displaying the diagnostic results from the AI model. The use of Bootstrap ensures a clean layout, and the dynamic rendering of the result allows for a flexible display of information based on the AI model's output.
- **Static Image:** The project contains a `happy_doctor.ipg` image in the `static` folder providing a user-friendly website design.
#### Open AI LLM Model Integration:
- **API Interaction:** The application interfaces with the Open AI LLM Model via API calls. It sends a the user input of illness symptons to get predictions.
- **Prediction Logic:** Based on model predictions, the app produces illness diagnostic to the user.
<img width="1440" alt="Screen Shot 2023-12-05 at 4 32 31 PM" src="https://github.com/nogibjj/tinayiluo_individual4/assets/143360909/43afd84d-de0e-490a-bd64-276dbd37e321">
#### Github Actions:
- **Makefile & CICD:** The workflow includes running a `Makefile` to perform tasks such as installation (`make install`), testing (`make test`), code formatting (`make format`) with Python Black, linting (`make lint`) with Ruff, and an all-inclusive task (`make all`). This automation streamlines the data analysis process and enhances code quality.
#### Web App Optimization:
- **Gunicorn configuration file:** The `gunicorn.conf.py` optimize the performance and reliability of a Python web application in a production environment. It balances resource use with the ability to handle a significant number of concurrent requests.
#### Docker Containerization:
- **Dockerfile:** This Dockerfile containerizes a Flask app, setting up a Docker container with Python and Gunicorn to run the web application. It encapsulates the app's code and dependencies, simplifying deployment across different environments.
### DockerHub and Azure Container Apps Deployment:
- **Azure Container Registry :** The Docker image is hosted on Azure Container Registry
<img width="1440" alt="Screen Shot 2023-12-05 at 4 43 29 PM" src="https://github.com/nogibjj/tinayiluo_individual4/assets/143360909/30cec7c8-934a-4791-baad-c577ca5a7534">
<img width="1440" alt="Screen Shot 2023-12-06 at 4 05 29 PM" src="https://github.com/nogibjj/tinayiluo_individual4/assets/143360909/9261c0a9-3ded-4a56-aca1-d9c7551b7633">
- **Azure Container Apps Deployment:** The Flask app is successfully deployed on Azure Container Apps, providing a public endpoint for users to interact with the application.
<img width="1440" alt="Screen Shot 2023-12-06 at 4 14 36 PM" src="https://github.com/nogibjj/tinayiluo_individual4/assets/143360909/179ecf8e-18ff-4efd-b21b-67798835f038">
### Check Format and Test Errors:
1. Format code `make format`
2. Lint code `make lint`
3. Test coce `make test`
没有合适的资源?快使用搜索试试~ 我知道了~
基于 Flask 和 Azure 的智能医疗诊断应用.zip
共66个文件
map:22个
css:16个
js:6个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 184 浏览量
2024-09-15
17:27:34
上传
评论
收藏 2.07MB ZIP 举报
温馨提示
这是一个集成了 OpenAI 的大型语言模型(llM)的智能医疗诊断应用。该项目利用 Flask 构建了一个 Web 应用,通过 Docker 容器进行有效封装。用户输入症状后,应用利用 Ai模 型进行疾病预测并输出诊断结果。项目还涵盖了自动缩放容器、Azure 应用服务部署和管理等功能。它适用于医疗服务、在线诊断和远程医疗等领域,帮助提升工作效率和用户体验。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 、本3项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdme.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
资源推荐
资源详情
资源评论
收起资源包目录
基于 Flask 和 Azure 的智能医疗诊断应用.zip (66个子文件)
tinayiluo_Auto_Scaling_Flask_App-main
mylib
__init__.py 0B
.github
workflows
cicd.yml 554B
Makefile 465B
main.py 2KB
LICENSE 1KB
.devcontainer
devcontainer.json 3KB
Dockerfile 853B
templates
result.html 771B
index.html 3KB
hello.html 912B
Dockerfile 155B
test_main.py 943B
requirements.txt 252B
gunicorn.conf.py 221B
.gitignore 2KB
static
bootstrap
js
bootstrap.js 145KB
bootstrap.bundle.js.map 418KB
bootstrap.esm.min.js.map 218KB
bootstrap.bundle.min.js.map 323KB
bootstrap.min.js 58KB
bootstrap.esm.js 136KB
bootstrap.bundle.min.js 76KB
bootstrap.bundle.js 205KB
bootstrap.js.map 284KB
bootstrap.esm.js.map 283KB
bootstrap.min.js.map 215KB
bootstrap.esm.min.js 71KB
css
bootstrap-grid.css.map 197KB
bootstrap.min.css 160KB
bootstrap-reboot.rtl.min.css.map 47KB
bootstrap.rtl.min.css.map 648KB
bootstrap-utilities.rtl.min.css 52KB
bootstrap-grid.css 71KB
bootstrap-utilities.rtl.css 70KB
bootstrap-grid.min.css.map 119KB
bootstrap-reboot.rtl.css.map 107KB
bootstrap-reboot.min.css.map 39KB
bootstrap-utilities.css 70KB
bootstrap-utilities.css.map 188KB
bootstrap-reboot.rtl.css 7KB
bootstrap.rtl.min.css 160KB
bootstrap.css.map 525KB
bootstrap.css 201KB
bootstrap-utilities.rtl.min.css.map 109KB
bootstrap-grid.rtl.min.css.map 120KB
bootstrap-utilities.rtl.css.map 188KB
bootstrap.rtl.css.map 525KB
bootstrap-reboot.css 7KB
bootstrap-reboot.rtl.min.css 6KB
bootstrap-utilities.min.css.map 109KB
bootstrap-utilities.min.css 52KB
bootstrap-reboot.css.map 107KB
bootstrap-grid.rtl.css.map 197KB
bootstrap-grid.rtl.css 71KB
bootstrap-grid.rtl.min.css 52KB
bootstrap-grid.min.css 52KB
bootstrap.min.css.map 441KB
bootstrap-reboot.min.css 6KB
bootstrap.rtl.css 200KB
happy.jpg 928KB
favicon.ico 15KB
images
azure-icon.svg 2KB
.dockerignore 21B
README.md 8KB
setup.sh 198B
repeat.sh 100B
共 66 条
- 1
资源评论
sec0nd_
- 粉丝: 5789
- 资源: 509
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功