Skip to content

Andrew-Cheung-bot/telegram-chatbot

Repository files navigation

Objective:

Based on the chatbot program used at lab, you are asked to further develop it into a more practical chatbot. Remember, this is not a programming course. We are looking at if you are excel at applying cloud and related technologies to create a practical application. To enhance the power of your chatbot, you are required to use the state-of-the-art large language model ChatGPT in your project.

Context:

ChatGPT can be more powerful if you can provide more specific scenarios and prompts. In this project, your basic requirement is to create a ChatBot that uses ChatGPT API, while 10% points (2 points) will consider the application context and the output quality of your ChatBot.

You are free to choose the context of your chatbot, here we just provide an example context:

During the Covid lock down people are keeping social distance with their friends. They develop new habits of leisure activity such as

  1. watching TV shows on streaming platforms (Netflix/Disney+/Bilibili etc.);
  2. hiking; and
  3. cookary. We want you to develop a chatbot to help them learn/perform ONE of these leisures, at the same time, to help them connect with other people.

Depends on the number of members in your group, you are going to prototype 1 to 2 features on your chatbot. A feature can be, but not limited to, one of the followings:

  • Reading/writing a TV show review
  • Sharing a hiking route and photos to other users.
  • Sharing a cooking video. Note: the data of the chatbot does not need to be accurate or comprehensive, but your chatbot should be able to accept natural language as input.

Technical Requirement

Your project should fulfill the following requirements. Fail to comply will incur penalty:

  • the chatbot must be on telegram;
  • the app must have a database system (SQL or redis or any other) from a database cloud provider other than RedisLab (e.g. Firebase, Heroku PostgreSQL).
  • the app must be hosted on a cloud platform other than Fly.io;
  • the app must use the ChatGPT API (from HKBU, OpenAI, or third parties);
  • the app must be managed by git;
  • container technologies must be used; and
  • monitoring and managing your cloud properly without being charged a lot.

Additional marks will be given to groups who are able to demonstrate:

  • Good Practices of DevOps workflow;
  • the Scalability of their app;
  • the Load balancing of their app;
  • the Orchestration of multiple containers;
  • Security measurements of their app;
  • or any practical consideration

Meanwhile user interface/project completeness/coding quality/documentation will carry only a very small fraction of marks. Most of the marks will be given based on the innovation of your app and the ability of demonstration of cloud technology competence.

Deliverables and Dues

  • Grouping info: By 5/2/2024 (People who did not sign up will work individually)
  • A running telegram chatbot: By the main due day, submit together with the report
  • Code: By the main due day, hosted on GitHub and not modified after the due
  • Report: By the main due day, must contain, but not limited to, the following items:
    • the ID of your chatbot;
    • full name and ID of all members;
    • a Summary of the app;
    • the Job division among members;
    • total charge of your cloud resources (capture the bill perhaps?);
    • Evidence of fulfilling the technical requirements (capture your screen perhaps?);
    • references.
  • Video: By the main due day, you need to submit a link to your demo video, including
    • A brief discussion of your project architecture and techniques used in your project;
    • A live demo of your chatbot.
  • Presentation: tentatively scheduled on 16/4/2024 (Tuesday night).

Use of public resources

You are allowed to use any public resources (both data and code) to construct your chatbot. However, you must cite those works properly. Although our project objective is to play with cloud technologies rather than coding, you should still try to integrate other resources into your base code (the code you received at lab) instead of directly hand in their code.