AI story: remove exceptions from templates, fix minichat, fix autotextarea, add gemma
This commit is contained in:
parent
b8090dac86
commit
763085726b
|
|
@ -6,10 +6,10 @@ import { useIsVisible } from '@common/hooks/useIsVisible';
|
||||||
export const AutoTextarea = (props: JSX.HTMLAttributes<HTMLTextAreaElement>) => {
|
export const AutoTextarea = (props: JSX.HTMLAttributes<HTMLTextAreaElement>) => {
|
||||||
const { value } = props;
|
const { value } = props;
|
||||||
const ref = useRef<HTMLTextAreaElement>(null);
|
const ref = useRef<HTMLTextAreaElement>(null);
|
||||||
const isVisible = useIsVisible(ref, true);
|
const isVisible = useIsVisible(ref);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (ref.current) {
|
if (ref.current && isVisible) {
|
||||||
const area = ref.current;
|
const area = ref.current;
|
||||||
|
|
||||||
area.style.height = '0'; // reset
|
area.style.height = '0'; // reset
|
||||||
|
|
|
||||||
|
|
@ -58,11 +58,11 @@ export const MiniChat = ({ history = [], buttons = {}, open, onClose }: IProps)
|
||||||
|
|
||||||
for await (const chunk of generate(prompt)) {
|
for await (const chunk of generate(prompt)) {
|
||||||
text += chunk;
|
text += chunk;
|
||||||
setMessages(MessageTools.updateSwipe(newMessages, messageId, text));
|
setMessages(MessageTools.updateSwipe(newMessages, messageId, { content: text.trim() }));
|
||||||
}
|
}
|
||||||
|
|
||||||
setMessages([
|
setMessages([
|
||||||
...MessageTools.updateSwipe(newMessages, messageId, MessageTools.trimSentence(text)),
|
...MessageTools.updateSwipe(newMessages, messageId, { content: MessageTools.trimSentence(text) }),
|
||||||
MessageTools.create('', 'user', true),
|
MessageTools.create('', 'user', true),
|
||||||
]);
|
]);
|
||||||
MessageTools.playReady();
|
MessageTools.playReady();
|
||||||
|
|
@ -78,7 +78,7 @@ export const MiniChat = ({ history = [], buttons = {}, open, onClose }: IProps)
|
||||||
|
|
||||||
const handleChange = useCallback((i: number, e: InputEvent) => {
|
const handleChange = useCallback((i: number, e: InputEvent) => {
|
||||||
if (e.target instanceof HTMLTextAreaElement) {
|
if (e.target instanceof HTMLTextAreaElement) {
|
||||||
setMessages(MessageTools.updateSwipe(messages, i, e.target.value));
|
setMessages(MessageTools.updateSwipe(messages, i, { content: e.target.value }));
|
||||||
}
|
}
|
||||||
}, [messages]);
|
}, [messages]);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -47,6 +47,8 @@ export enum Instruct {
|
||||||
|
|
||||||
MISTRAL = `{%- if messages[0]['role'] == 'system' %}{%- set system_message = messages[0]['content'] %}{%- set loop_messages = messages[1:] %}{%- else %}{%- set loop_messages = messages %}{%- endif %}{%- for message in loop_messages %}{%- if message['role'] == 'user' %}{%- if loop.first and system_message is defined %}{{- ' [INST] ' + system_message + '\\n\\n' + message['content'] + ' [/INST]' }}{%- else %}{{- ' [INST] ' + message['content'] + ' [/INST]' }}{%- endif %}{%- elif message['role'] == 'assistant' %}{{- ' ' + message['content'] + '</s>'}}{%- endif %}{%- endfor %}`,
|
MISTRAL = `{%- if messages[0]['role'] == 'system' %}{%- set system_message = messages[0]['content'] %}{%- set loop_messages = messages[1:] %}{%- else %}{%- set loop_messages = messages %}{%- endif %}{%- for message in loop_messages %}{%- if message['role'] == 'user' %}{%- if loop.first and system_message is defined %}{{- ' [INST] ' + system_message + '\\n\\n' + message['content'] + ' [/INST]' }}{%- else %}{{- ' [INST] ' + message['content'] + ' [/INST]' }}{%- endif %}{%- elif message['role'] == 'assistant' %}{{- ' ' + message['content'] + '</s>'}}{%- endif %}{%- endfor %}`,
|
||||||
|
|
||||||
|
GEMMA = `{% for message in messages %}{% if (message['role'] == 'assistant') %}{% set role = 'model' %}{% else %}{% set role = message['role'] %}{% endif %}{{ '<start_of_turn>' + role + '\n' + message['content'] | trim + '<end_of_turn>\n' }}{% endfor %}{% if add_generation_prompt %}{{'<start_of_turn>model\n'}}{% endif %}`,
|
||||||
|
|
||||||
ALPACA = `{% for message in messages %}{% if message['role'] == 'system' and message['content'] %}{{ message['content'] + '\\n\\n'}}{% elif message['role'] == 'user' %}{{'### Instruction:\\n\\n' + message['content'] + '\\n\\n'}}{% elif message['role'] == 'assistant' %}{{'### Response:\\n\\n' + message['content'] + '\\n\\n'}}{% endif %}{% endfor %}{% if add_generation_prompt %}{{ '### Response:\\n\\n' }}{% endif %}`,
|
ALPACA = `{% for message in messages %}{% if message['role'] == 'system' and message['content'] %}{{ message['content'] + '\\n\\n'}}{% elif message['role'] == 'user' %}{{'### Instruction:\\n\\n' + message['content'] + '\\n\\n'}}{% elif message['role'] == 'assistant' %}{{'### Response:\\n\\n' + message['content'] + '\\n\\n'}}{% endif %}{% endfor %}{% if add_generation_prompt %}{{ '### Response:\\n\\n' }}{% endif %}`,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -66,7 +68,7 @@ export const loadContext = (): IContext => {
|
||||||
lore: '',
|
lore: '',
|
||||||
userPrompt: `{% if prompt %}{% if isStart %}Start{% else %}Continue{% endif %} this story, taking information into account: {{ prompt | trim }}
|
userPrompt: `{% if prompt %}{% if isStart %}Start{% else %}Continue{% endif %} this story, taking information into account: {{ prompt | trim }}
|
||||||
Remember that this story should be infinite and go forever. Avoid cliffhangers and pauses, be creative.{% elif isStart %}Write a novel using information above as a reference. Make sure to follow the lore exactly and avoid cliffhangers.{% else %}Continue the story forward. Avoid cliffhangers and pauses.{% endif %}`,
|
Remember that this story should be infinite and go forever. Avoid cliffhangers and pauses, be creative.{% elif isStart %}Write a novel using information above as a reference. Make sure to follow the lore exactly and avoid cliffhangers.{% else %}Continue the story forward. Avoid cliffhangers and pauses.{% endif %}`,
|
||||||
summarizePrompt: 'Make the following text shorter, keeping all important details:\n\n{{ message }}\n\nYour answer should only contain the shortened text.',
|
summarizePrompt: 'Shrink following text down to one paragraph, keeping all important details, your answer should contain only the shortened text:\n\n{{ message }}',
|
||||||
bannedWords: [],
|
bannedWords: [],
|
||||||
messages: [],
|
messages: [],
|
||||||
triggerNext: false,
|
triggerNext: false,
|
||||||
|
|
|
||||||
|
|
@ -269,6 +269,7 @@ export namespace Huggingface {
|
||||||
try {
|
try {
|
||||||
let template = compiledTemplates.get(templateString);
|
let template = compiledTemplates.get(templateString);
|
||||||
if (!template) {
|
if (!template) {
|
||||||
|
templateString = templateString.replace(/raise_exception\(('[^')]+'|"[^")]+")\)/g, `''`)
|
||||||
template = new Template(templateString);
|
template = new Template(templateString);
|
||||||
compiledTemplates.set(templateString, template);
|
compiledTemplates.set(templateString, template);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue