matt HOFFNER commited on
Commit
fe82d96
·
1 Parent(s): 5de7de7

allow editing system prompt while preserving chat?

Browse files
Files changed (1) hide show
  1. components/Playground/index.tsx +27 -19
components/Playground/index.tsx CHANGED
@@ -45,6 +45,32 @@ const Playground = () => {
45
  const isValidCodeBlock = (markdownCode: string) => {
46
  return markdownCode && markdownCode.length > 10 && markdownCode.includes('\n');
47
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
 
49
  useEffect(() => {
50
  const timer = setInterval(() => {
@@ -65,24 +91,6 @@ const Playground = () => {
65
  },
66
  });
67
 
68
- const modifiedHandleSubmit = async (e: FormEvent<HTMLFormElement>, chatRequestOptions?: ChatRequestOptions) => {
69
- e.preventDefault();
70
-
71
- // If the first message is not a system message, append the system message
72
- if (messages.length === 0 || (messages.length > 0 && messages[0].role !== "system")) {
73
- const systemMessageToAdd: Message = {
74
- id: `${Date.now()}-system`,
75
- createdAt: new Date(),
76
- content: systemMessage,
77
- role: "system"
78
- };
79
- await append(systemMessageToAdd);
80
- }
81
-
82
- // Now handle the user's message
83
- await handleSubmit(e, chatRequestOptions);
84
- };
85
-
86
  useEffect(() => {
87
  if (!esbuildStatus.isReady) {
88
  dispatch(initEsbuild());
@@ -174,7 +182,7 @@ const Playground = () => {
174
  >
175
 
176
  <textarea ref={inputRef} onChange={(e) => setInput(e.target.value)}
177
- placeholder="Create a twitter clone"
178
  onKeyDown={(e) => {
179
  if (e.key === "Enter" && !e.shiftKey) {
180
  formRef.current?.requestSubmit();
 
45
  const isValidCodeBlock = (markdownCode: string) => {
46
  return markdownCode && markdownCode.length > 10 && markdownCode.includes('\n');
47
  }
48
+ const [lastAppendedSystemMessage, setLastAppendedSystemMessage] = useState("");
49
+
50
+ const appendSystemMessage = async () => {
51
+ const systemMessageToAdd: Message = {
52
+ id: `${Date.now()}-system`,
53
+ createdAt: new Date(),
54
+ content: systemMessage,
55
+ role: "system"
56
+ };
57
+ await append(systemMessageToAdd);
58
+ setLastAppendedSystemMessage(systemMessage);
59
+ };
60
+
61
+ useEffect(() => {
62
+ appendSystemMessage();
63
+ }, []);
64
+
65
+ const modifiedHandleSubmit = async (e: FormEvent<HTMLFormElement>, chatRequestOptions?: ChatRequestOptions) => {
66
+ e.preventDefault();
67
+
68
+ if (systemMessage !== lastAppendedSystemMessage) {
69
+ await appendSystemMessage();
70
+ }
71
+
72
+ await handleSubmit(e, chatRequestOptions);
73
+ };
74
 
75
  useEffect(() => {
76
  const timer = setInterval(() => {
 
91
  },
92
  });
93
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
94
  useEffect(() => {
95
  if (!esbuildStatus.isReady) {
96
  dispatch(initEsbuild());
 
182
  >
183
 
184
  <textarea ref={inputRef} onChange={(e) => setInput(e.target.value)}
185
+ placeholder="Enter your message"
186
  onKeyDown={(e) => {
187
  if (e.key === "Enter" && !e.shiftKey) {
188
  formRef.current?.requestSubmit();