forked from rjmacarthy/gpt-code-reviewer
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathchat.py
More file actions
91 lines (67 loc) · 2.57 KB
/
chat.py
File metadata and controls
91 lines (67 loc) · 2.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import os
import openai
import yaml
from rich.console import Console
from rich.markdown import Markdown
from prompts import get_system_prompt, get_review_prompt
from helpers import get_repo_and_pr, print_options, fetch_repository_data, add_message
from completion import get_completion
config = yaml.safe_load(open("config.yaml", "r", encoding="utf-8"))
console = Console()
def chat():
messages = []
repository, pull_request = get_repo_and_pr()
print_options(repository, pull_request)
if not pull_request:
get_repo_and_pr()
add_message(messages, get_system_prompt(),
"system", pull_request, repository)
data = fetch_repository_data(
repository, pull_request, "application/vnd.github.v3+json"
)
add_message(messages, data.json()["body"],
"user", pull_request, repository)
add_message(messages, data.json()["title"],
"user", pull_request, repository)
while True:
user_input = input("👨: ")
if user_input == "q":
break
if user_input == "h":
console.print(
Markdown(
"Enter `r` to review the code, `q` to quit and `n` to review a different pull request."
)
)
continue
if user_input == "n":
messages = [{"role": "system", "content": get_system_prompt()}]
repository, pull_request = get_repo_and_pr()
data_type = "application/vnd.github.v3+json"
data = fetch_repository_data(repository, pull_request, data_type)
add_message(messages, data.json()[
"body"], "user", pull_request, repository)
add_message(
messages, data.json()[
"title"], "user", pull_request, repository
)
print_options(repository, pull_request)
continue
if user_input == "r":
add_message(
messages,
get_review_prompt(repository, pull_request),
"user",
pull_request,
repository,
)
if user_input:
console.print("Thinking...")
add_message(messages, user_input, "user", pull_request, repository)
completion = get_completion(messages)
reply = completion["choices"][0]["message"]["content"]
console.print(Markdown("🤖: "))
console.print(Markdown(reply))
add_message(messages, reply, "assistant", pull_request, repository)
if __name__ == "__main__":
chat()