50 lines
1.2 KiB
TypeScript
50 lines
1.2 KiB
TypeScript
import LLM from "./llm";
|
|
import type { AppState } from "../contexts/state";
|
|
|
|
namespace Prompt {
|
|
const tools: LLM.Tool[] = [
|
|
{
|
|
type: 'function',
|
|
function: {
|
|
name: 'test',
|
|
description: 'A simple test function',
|
|
parameters: {
|
|
type: 'object',
|
|
properties: {
|
|
message: {
|
|
type: 'string',
|
|
description: 'The test message',
|
|
},
|
|
},
|
|
required: ['message'],
|
|
},
|
|
},
|
|
},
|
|
];
|
|
|
|
export function compilePrompt(state: AppState, newMessages: LLM.ChatMessage[] = []): LLM.ChatCompletionRequest | null {
|
|
const { currentStory, model } = state;
|
|
|
|
if (!currentStory || !model) {
|
|
return null;
|
|
}
|
|
|
|
const messages: LLM.ChatMessage[] = [
|
|
// TODO system prompt
|
|
// TODO part of story
|
|
...currentStory.chatMessages,
|
|
];
|
|
|
|
messages.push(...newMessages);
|
|
|
|
return {
|
|
model,
|
|
messages,
|
|
tools,
|
|
// TODO banned_tokens
|
|
};
|
|
}
|
|
}
|
|
|
|
export default Prompt;
|