Repository: microsoft/TypeChat
File: examples/healthData/src/translator.ts (TypeScript)

Code before:
    const _additional_agent_instructions = additional_agent_instructions;
    
    const translator = createJsonTranslator<T>(model, schema, type_name);
    translator.createRequestPrompt = _create_request_prompt;
    
    const customtranslator: TranslatorWithHistory<T> = {
        _chat_history,
        _max_prompt_length,
        _additional_agent_instructions,
        translator,
        translate,
    };

    return customtranslator;

    async function translate(request: string): Promise<Result<T>> {
        const response = await translator.translate(request);
        if (response.success) {
            _chat_history.push({ source: 'assistant', body: JSON.stringify(response.data) });
        }
        return response;
    }

    function _create_request_prompt(intent: string): string {
        // TODO: drop history entries if we exceed the max_prompt_length
        const history_str = JSON.stringify(_chat_history, undefined, 2);
        
        const now = new Date();

        const prompt = `
        user: You are a service that translates user requests into JSON objects of type "${type_name}" according to the following TypeScript definitions:
        '''
        ${schema}
        '''

        user:
        Use precise date and times RELATIVE TO CURRENT DATE: ${now.toLocaleDateString()} CURRENT TIME: ${now.toTimeString().split(' ')[0]}
        Also turn ranges like next week and next month into precise dates
        
        user:
        ${_additional_agent_instructions}
        
        system:
        IMPORTANT CONTEXT for the user request:
        ${history_str}

        user:
        The following is a user request:
        '''
        ${intent}
        '''

Review comment (suggestion):
```suggestion
        const historyStr = JSON.stringify(chatHistory, undefined, 2);
```

Code after:
    const _additionalAgentInstructions = additionalAgentInstructions;
    
    const _translator = createJsonTranslator<T>(model, schema, typename);
    _translator.createRequestPrompt = createRequestPrompt;
    
    const customtranslator: TranslatorWithHistory<T> = {
        _chatHistory,
        _maxPromptLength,
        _additionalAgentInstructions,
        _translator,
        translate,
    };

    return customtranslator;

    async function translate(request: string): Promise<Result<T>> {
        const response = await _translator.translate(request);
        if (response.success) {
            _chatHistory.push({ source: "assistant", body: response.data });
        }
        return response;

    }

    function createRequestPrompt(intent: string): string {
        // TODO: drop history entries if we exceed the max_prompt_length
        const historyStr = JSON.stringify(_chatHistory, undefined, 2);
        
        const now = new Date();

        const prompt = `
user: You are a service that translates user requests into JSON objects of type "${typename}" according to the following TypeScript definitions:
'''
${schema}
'''

user:
Use precise date and times RELATIVE TO CURRENT DATE: ${now.toLocaleDateString()} CURRENT TIME: ${now.toTimeString().split(' ')[0]}
Also turn ranges like next week and next month into precise dates

user:
${_additionalAgentInstructions}

system:
IMPORTANT CONTEXT for the user request:
${historyStr}

user:
The following is a user request:
'''
${intent}