jackMort / ChatGPT.nvim

ChatGPT Neovim Plugin: Effortless Natural Language Generation with OpenAI's ChatGPT API
Apache License 2.0
3.57k stars 307 forks source link

Add option for project-specific context files #339

Open charludo opened 7 months ago

charludo commented 7 months ago

General idea

I would love to see a feature similar to what Robitx/gp.nvim#50 has with their :GpContext command, namely being able to add a file like .chatgpt.md to the git root directory, the content of which would then be prepended to new chats - either as a system message, or actually prepended to the first user message.

Usecase

I find myself re-typing the same context quite often, e.g.:

I am working on a django project. I have models A, B, and C. B has a foreign key to C. I also have a modelform AForm, BForm, CForm for each of those models. 

before getting to my actual question.

Another usecase would be something like:

Only use python, typescript, tailwind CSS, and django templates (depending on what is necessary) to accomplish the following task:

Obviously this context is highly project dependant, but it is also very much a constant within each project.

Proposed solution

Add two new options, e.g. project_context_file and project_context_type. If the project_context_file exists in the git root, set its content as the system message if project_context_type == "system" or prepend it to the first message of each new chat if project_context_type == "prepend" (or something along those lines).

jackMort commented 7 months ago

Good point. My initial idea was to introduce some kind of templates by allowing the saving of system messages and parameters. Do you think this will solve the problem and work for you?

charludo commented 7 months ago

Good point. My initial idea was to introduce some kind of templates by allowing the saving of system messages and parameters. Do you think this will solve the problem and work for you?

As long as those are stored and read per project rather than globally, I think it should, yes!