AppFlowy icon indicating copy to clipboard operation
AppFlowy copied to clipboard

[FR] : AI Writers

Open yatendra2001 opened this issue 1 year ago • 10 comments

Description

AI-powered writing assistant using Flutter and the GPT-4 model from OpenAI. The assistant, tentatively named "AI Writers", will assist users in generating and organizing content efficiently. This includes automatic to-do list generation, blog post drafting, and outline creation.

Similar to the notion AI, we can keep a button or just press space for "ask AI" Screenshot 2023-06-12 at 2 25 55 PM

Timeline:

Week 1 (19/06/2023):

Tasks:

  • [x] Research and Understand GPT-4
  • [x] Understand appflowy coding practices.
  • [x] Research if there are existing Rust libraries that wrap GPT-4

Milestones:

  1. Gain a comprehensive understanding of GPT-4 capabilities and functionalities
  2. Gain in depth understanding of appflowy best coding practices integrated in CI/CD.
  3. Determine if there are existing Rust libraries available for GPT-4 integration

Week 2 (26/06/2023):

Tasks:

  • [x] Develop first working version of Rust wrapper for OpenAI API
  • [x] Initiate exploration of AppFlowy backend system

Milestones: 4. Develop a basic Rust wrapper for OpenAI API with minimal functionality 5. Understand basic structure and components of AppFlowy backend

Week 3 (03/07/2023):

Tasks:

  • [ ] Gain deeper understanding of Creating Systems with OpenAI API
  • [ ] Gain deeper understanding of Langchain for LLM Application Development
  • [ ] Gain deeper understanding of prompt engineering to develop applications
  • [ ] Gain deeper understanding of Rust to build robust & scalable applications

Milestones:

  1. Build an end-to-end demo system using gpt-4 with proper prompting
  2. Build an end-to-end demo system using langchain
  3. Build a multithreaded web server by following RUST documentation

Week 4 (10/07/2023):

Tasks:

  • [ ] Enhance Rust wrapper for OpenAI API with additional features
  • [ ] Delve deeper into the complexities of AppFlowy backend
  • [ ] Finalize application design and user interface

Milestones: 6. Upgrade Rust wrapper for OpenAI API with advanced features 7. Gain a deep understanding of AppFlowy backend, including data flows and dependencies 8. Finalize application design and UI

Week 5 (17/07/2023):

Tasks:

  • [ ] Start integration of GPT-4 Rust Wrapper with Flutter Interface
  • [ ] Complete the integration of GPT-4 Rust Wrapper with Flutter Interface

Milestones: 9. Begin the process of integrating GPT-4 Rust Wrapper with Flutter Interface 10. Successfully integrate GPT-4 Rust Wrapper with Flutter Interface

Week 6 (24/07/2023):

Tasks:

  • [ ] Begin development of auto-generating to-do list feature
  • [ ] Continue development of the to-do list feature
  • [ ] Start development of the outline creation feature

Milestones: 11. Initiate the development of the to-do list feature 12. Complete the development of the to-do list feature 13. Initiate the development of the outline creation feature

Week 7 (31/07/2023):

Tasks:

  • [ ] Continue development of the outline creation feature
  • [ ] Complete the development of the outline creation feature
  • [ ] Begin development of the blog post drafting feature

Milestones: 14. Develop the outline creation feature 15. Complete the development of the outline creation feature 16. Begin the development of the blog post drafting feature

Week 8 (07/08/2023):

Tasks:

  • [ ] Continue development of the blog post drafting feature
  • [ ] Complete the development of the blog post drafting feature
  • [ ] Begin comprehensive testing and debugging of the application

Milestones: 17. Develop the blog post drafting feature 18. Complete the development of the blog post```markdown drafting feature 19. Initiate comprehensive testing and debugging of the application

Week 9 (14/08/2023):

Tasks:

  • [ ] Continue comprehensive testing and debugging of the application
  • [ ] Begin documentation of the project

Milestones: 20. Identify and fix major bugs and issues in the application 21. Begin the documentation of the project, covering architecture, functionality, and usage instructions

Week 10 (21/08/2023):

Tasks:

  • [ ] Complete documentation of the project
  • [ ] Begin migration of current OpenAI features on Flutter side to using Rust wrapper

Milestones: 22. Complete the project documentation 23. Initiate the migration of current OpenAI features to using Rust wrapper

Week 11 (28/08/2023):

Tasks:

  • [ ] Finalize migration of current OpenAI features on Flutter side to using Rust wrapper
  • [ ] Continue comprehensive testing and debugging of the application

Milestones: 24. Successfully migrate all current OpenAI features to use Rust wrapper 25. Continue comprehensive testing and debugging of the entire application

Week 12 (04/09/2023):

Tasks:

  • [ ] Resolve any remaining issues identified during final testing
  • [ ] Prepare the application for live deployment

Milestones: 26. Ensure all identified issues are resolved and application is fully functional 27. Successfully prepare the application for deployment, with all features working as expected

Impact

The successful implementation of this project will provide a powerful tool for users who require assistance with various writing tasks. By automating these tasks, users can focus more on their ideas and less on the mechanical aspects of writing.

Given the increasing demand for AI-powered tools and the widespread use of mobile devices, this project has the potential to be beneficial to a wide range of users.

Additional Context

No response

yatendra2001 avatar Jun 12 '23 09:06 yatendra2001

@LucasXu0 Can you please review this?

yatendra2001 avatar Jun 12 '23 09:06 yatendra2001

Hey, @yatendra2001. It looks good to me. By the way, please add one more task: migrate the current openAI features by using Rust wrapper too.

enum OpenAIRequestType {
  textCompletion,
  textEdit;

  Uri get uri {
    switch (this) {
      case OpenAIRequestType.textCompletion:
        return Uri.parse('https://api.openai.com/v1/completions');
      case OpenAIRequestType.textEdit:
        return Uri.parse('https://api.openai.com/v1/edits');
    }
  }
}

LucasXu0 avatar Jun 12 '23 14:06 LucasXu0

We are currently using text completion and text edit APIs on the Flutter side. We should migrate them to Rust APIs once you finish this FR.

LucasXu0 avatar Jun 12 '23 14:06 LucasXu0

Hey, @yatendra2001. It looks good to me. By the way, please add one more task: migrate the current openAI features by using Rust wrapper too.

enum OpenAIRequestType {
  textCompletion,
  textEdit;

  Uri get uri {
    switch (this) {
      case OpenAIRequestType.textCompletion:
        return Uri.parse('https://api.openai.com/v1/completions');
      case OpenAIRequestType.textEdit:
        return Uri.parse('https://api.openai.com/v1/edits');
    }
  }
}

Yes makes a lot of sense.

We are currently using text completion and text edit APIs on the Flutter side. We should migrate them to Rust APIs once you finish this FR.

Yup added at the end. We'll keep adding subtasks of migration as we figure out to keep a record.

yatendra2001 avatar Jun 12 '23 14:06 yatendra2001

Related to https://github.com/AppFlowy-IO/AppFlowy/issues/2286

annieappflowy avatar Jun 13 '23 06:06 annieappflowy

Hi @annieappflowy, @LucasXu0,

I'm looking forward to contributing to this project and am ready to start working on the issue at hand. However, I want to make sure I align with the selection process properly. Should I wait for the proposal to be accepted before proceeding, or is it acceptable to begin in advance? This is particularly important as I have outlined a timeline in my proposal.

yatendra2001 avatar Jun 17 '23 10:06 yatendra2001

I've sent an official letter to you! You may start working on your project. Congrats!

annieappflowy avatar Jun 17 '23 12:06 annieappflowy

Thanks a lot, @annieappflowy for accepting my proposal. You can bet I'll be bringing my A-game to this mentorship.

yatendra2001 avatar Jun 17 '23 13:06 yatendra2001

Hey @LucasXu0 , Should I create a new PR now to keep you updated of my tasks or once my first commit is ready to get merged??

yatendra2001 avatar Jun 26 '23 23:06 yatendra2001

@yatendra2001 No, we can communicate with them via video meeting, just like we did previously.

LucasXu0 avatar Jul 07 '23 02:07 LucasXu0

When the network is abnormal, keep circling and need to close the software to exit. Snipaste_2023-08-02_23-10-07

lybing avatar Aug 02 '23 15:08 lybing