Skip to content

Commit f024c31

Browse files
authored
Add model indicator to chat playground (#21)
Co-authored-by: Dennis Traub <[email protected]>
1 parent 0726d21 commit f024c31

File tree

5 files changed

+35
-38
lines changed

5 files changed

+35
-38
lines changed

Diff for: frontend/components/chatPlayground/ChatComponent.jsx

+3-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import React, { useState } from "react";
55
import Assistant from "@/components/chatPlayground/Assistant";
66
import Loader from "@/components/chatPlayground/Loader";
77
import GlobalConfig from "@/app/app.config";
8+
import ModelIndicator from "@/components/chatPlayground/ModelIndicator";
89

910
export default function ChatContainer() {
1011
const [conversation, setConversation] = useState([]);
@@ -62,8 +63,9 @@ export default function ChatContainer() {
6263
};
6364

6465
return <div className="flex flex-col flex-auto h-full p-6">
65-
<h3 className="text-3xl font-medium text-gray-700">Chat Playground (Anthropic Claude V2)</h3>
66+
<h3 className="text-3xl font-medium text-gray-700">Chat Playground</h3>
6667
<div className="flex flex-col flex-auto flex-shrink-0 rounded-2xl bg-gray-100 p-4 mt-8">
68+
<ModelIndicator modelName="Anthropic Claude 2" />
6769
<div className="flex flex-col h-full overflow-x-auto mb-4">
6870
<div className="flex flex-col h-full">
6971
<div className="grid grid-cols-12 gap-y-2">
+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
"use client"
2+
3+
export default function ModelIndicator({ modelName }) {
4+
return (
5+
<div className="w-64 mb-4">
6+
<div className="relative w-full">
7+
<div id="dropdown-button"
8+
className="inline-flex justify-left w-full px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md shadow-sm">
9+
<span className="mr-auto">Model: {modelName}</span>
10+
</div>
11+
</div>
12+
</div>
13+
);
14+
};

Diff for: frontend/components/textPlayground/TextComponent.jsx

+16-35
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
import React, { useState } from "react";
44
import GlobalConfig from "@/app/app.config"
5-
import TextModelSelector from "../shared/TextModelSelector";
5+
import TextModelSelector from "./TextModelSelector";
66
import Textarea from "./Textarea";
7-
import { defaultModel, defaultPayload } from "../shared/textModels";
7+
import { defaultModel, defaultPayload } from "@/helpers/modelData";
88
import NumericInput from "./NumericInput";
99

1010
export default function TextContainer() {
@@ -19,42 +19,23 @@ export default function TextContainer() {
1919
setMaxTokens(newModel.maxTokenRange.default);
2020
}
2121

22-
const setPrompt = (newPrompt) => {
23-
setPayload((prevPayload) => ({
24-
...prevPayload,
25-
prompt: newPrompt
26-
}));
27-
}
28-
29-
const setTemperature = (newTemperature) => {
30-
setPayload((prevPayload) => ({
31-
...prevPayload,
32-
temperature: newTemperature
33-
}));
34-
}
22+
const setPrompt = (newPrompt) => setPayload(
23+
(prevPayload) => ({ ...prevPayload, prompt: newPrompt })
24+
);
3525

36-
const setMaxTokens = (newMaxTokens) => {
37-
setPayload((prevPayload) => ({
38-
...prevPayload,
39-
maxTokens: newMaxTokens
40-
}));
41-
};
26+
const setTemperature = (newTemperature) => setPayload(
27+
(prevPayload) => ({ ...prevPayload, temperature: newTemperature })
28+
);
4229

43-
const handlePromptChange = (e) => {
44-
setPrompt(e.target.value);
45-
};
30+
const setMaxTokens = (newMaxTokens) => setPayload(
31+
(prevPayload) => ({ ...prevPayload, maxTokens: newMaxTokens })
32+
);
4633

47-
const handleTemperatureChange = (value) => {
48-
setTemperature(value);
49-
};
34+
const handlePromptChange = (e) => setPrompt(e.target.value);
5035

51-
const handleMaxTokensChange = (value) => {
52-
setMaxTokens(value);
53-
};
36+
const handleTemperatureChange = (value) => setTemperature(value);
5437

55-
const isNullOrBlankOrEmpty = (str) => {
56-
return str == null || str.match(/^ *$/) !== null;
57-
}
38+
const handleMaxTokensChange = (value) => setMaxTokens(value);
5839

5940
const getButtonClass = () => {
6041
const inactiveButtonClass = "flex w-[100px] items-center justify-center bg-indigo-300 rounded-xl text-white px-3 py-2 flex-shrink-0";
@@ -63,7 +44,7 @@ export default function TextContainer() {
6344
}
6445

6546
const sendMessage = async () => {
66-
if (isNullOrBlankOrEmpty(payload.prompt)) { return; }
47+
if (payload.prompt === null || payload.prompt === undefined || payload.prompt.trim() === "") { return; }
6748

6849
setIsLoading(true);
6950

@@ -177,4 +158,4 @@ export default function TextContainer() {
177158
</div>
178159
</div>
179160
)
180-
};
161+
};

Diff for: frontend/components/shared/TextModelSelector.jsx renamed to frontend/components/textPlayground/TextModelSelector.jsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
"use client"
22

33
import React, {useState} from "react";
4-
import { models } from './textModels';
4+
import { models } from '../../helpers/modelData';
55

66
export default function TextModelSelector({ model, onModelChange }) {
77
const [isOpen, setIsOpen] = useState(false);

Diff for: frontend/components/shared/textModels.js renamed to frontend/helpers/modelData.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
export const defaultModel = {
2-
modelName: "Anthropic Claude V2",
2+
modelName: "Anthropic Claude 2",
33
modelId: "anthropic.claude-v2",
44
temperatureRange: {
55
min: 0,

0 commit comments

Comments
 (0)