export declare const CONFIG_TEMPLATE = "# Learn more about building a configuration: https://promptfoo.dev/docs/configuration/guide\ndescription: \"My eval\"\n\nprompts:\n  {% for prompt in prompts -%}\n  - {{prompt | dump }}\n  {% endfor %}\n\nproviders:\n  {% for provider in providers -%}\n  - {{provider | dump }}\n  {% endfor %}\n\ntests:\n{%- if type == 'rag' or type == 'agent' %}\n  - vars:\n      inquiry: \"I have a problem with my order\"\n      {% if language == 'python' -%}\n      context: file://context.py\n      {%- elif language == 'javascript' -%}\n      context: file://context.js\n      {%- else -%}\n      context: file://context.txt\n      {%- endif %}\n\n  - vars:\n      inquiry: \"I want to return my widget\"\n      # See how to use dynamic context to e.g. use a vector store https://promptfoo.dev/docs/guides/evaluate-rag/#using-dynamic-context\n      {% if language == 'javascript' -%}\n      context: file://context.js\n      {%- else -%}\n      context: file://context.py\n      {%- endif %}\n    assert:\n      # For more information on assertions, see https://promptfoo.dev/docs/configuration/expected-outputs\n\n      # Make sure output contains the phrase \"return label\"\n      - type: icontains\n        value: \"return label\"\n\n      # Prefer shorter outputs\n      {% if language == 'python' -%}\n      - type: python\n        value: 1 / (len(output) + 1)\n      {%- else -%}\n      - type: javascript\n        value: 1 / (output.length + 1)\n      {%- endif %}\n\n  - vars:\n      inquiry: \"I need help with my account\"\n      context: |\n        You can also hardcode context directly in the configuration.\n        Username: Foobar\n        Account ID: 123456\n    assert:\n      # For more information on model-graded evals, see https://promptfoo.dev/docs/configuration/expected-outputs/model-graded\n      - type: llm-rubric\n        value: ensure that the output is friendly and empathetic\n{%- else %}\n  - vars:\n      topic: bananas\n\n  - vars:\n      topic: avocado toast\n    assert:\n      # For more information on assertions, see https://promptfoo.dev/docs/configuration/expected-outputs\n\n      # Make sure output contains the word \"avocado\"\n      - type: icontains\n        value: avocado\n\n      # Prefer shorter outputs\n      - type: javascript\n        value: 1 / (output.length + 1)\n\n  - vars:\n      topic: new york city\n    assert:\n      # For more information on model-graded evals, see https://promptfoo.dev/docs/configuration/expected-outputs/model-graded\n      - type: llm-rubric\n        value: ensure that the output is funny\n{% endif %}\n";
export declare const PYTHON_PROVIDER = "# Learn more about building a Python provider: https://promptfoo.dev/docs/providers/python/\nimport json\n\ndef call_api(prompt, options, context):\n    # The 'options' parameter contains additional configuration for the API call.\n    config = options.get('config', None)\n    additional_option = config.get('additionalOption', None)\n\n    # The 'context' parameter provides info about which vars were used to create the final prompt.\n    user_variable = context['vars'].get('userVariable', None)\n\n    # The prompt is the final prompt string after the variables have been processed.\n    # Custom logic to process the prompt goes here.\n    # For instance, you might call an external API or run some computations.\n    output = call_llm(prompt)\n\n\n    # The result should be a dictionary with at least an 'output' field.\n    result = {\n        \"output\": output,\n    }\n\n    if some_error_condition:\n        result['error'] = \"An error occurred during processing\"\n\n    if token_usage_calculated:\n        # If you want to report token usage, you can set the 'tokenUsage' field.\n        result['tokenUsage'] = {\"total\": token_count, \"prompt\": prompt_token_count, \"completion\": completion_token_count}\n\n    return result\n";
export declare const JAVASCRIPT_PROVIDER = "// Learn more about building a JavaScript provider: https://promptfoo.dev/docs/providers/custom-api\n// customApiProvider.js\nimport fetch from 'node-fetch';\n\nclass CustomApiProvider {\n  constructor(options) {\n    // Provider ID can be overridden by the config file (e.g. when using multiple of the same provider)\n    this.providerId = options.id || 'custom provider';\n\n    // options.config contains any custom options passed to the provider\n    this.config = options.config;\n  }\n\n  id() {\n    return this.providerId;\n  }\n\n  async callApi(prompt, context) {\n    // Add your custom API logic here\n    // Use options like: `this.config.temperature`, `this.config.max_tokens`, etc.\n\n    console.log('Vars for this test case:', JSON.stringify(context.vars));\n\n    return {\n      // Required\n      output: 'Model output',\n\n      // Optional\n      tokenUsage: {\n        total: 10,\n        prompt: 5,\n        completion: 5,\n      },\n    };\n  }\n}\n\nmodule.exports = CustomApiProvider;\n";
export declare const BASH_PROVIDER = "# Learn more about building any generic provider: https://promptfoo.dev/docs/providers/custom-script\n\n# Anything printed to standard output will be captured as the output of the provider\n\necho \"This is the LLM output\"\n\n# You can also call external scripts or executables\nphp my_script.php\n";
export declare const PYTHON_VAR = "# Learn more about using dynamic variables: https://promptfoo.dev/docs/configuration/guide/#import-vars-from-separate-files\ndef get_var(var_name, prompt, other_vars):\n    # This is where you can fetch documents from a database, call an API, etc.\n    # ...\n\n    if var_name == 'context':\n        # Return value based on the variable name and test context\n        return {\n            'output': f\"... Documents for {other_vars['inquiry']} in prompt: {prompt} ...\"\n        }\n\n    # Default variable value\n    return {'output': 'Document A, Document B, Document C, ...'}\n\n    # Handle potential errors\n    # return { 'error': 'Error message' }\n";
export declare const JAVASCRIPT_VAR = "// Learn more about using dynamic variables: https://promptfoo.dev/docs/configuration/guide/#import-vars-from-separate-files\nmodule.exports = function (varName, prompt, otherVars) {\n  // This is where you can fetch documents from a database, call an API, etc.\n  // ...\n\n  if (varName === 'context') {\n    // Return value based on the variable name and test context\n    return `... Documents for ${otherVars.inquiry} for prompt: ${prompt} ...`;\n  }\n\n  // Default variable value\n  return {\n    output: 'Document A, Document B, Document C, ...',\n  };\n\n  // Handle potential errors\n  // return { error: 'Error message' }\n};\n";
export declare const DEFAULT_README = "To get started, set your OPENAI_API_KEY environment variable, or other required keys for the providers you selected.\n\nNext, edit promptfooconfig.yaml.\n\nThen run:\n```\npromptfoo eval\n```\n\nAfterwards, you can view the results by running `promptfoo view`\n";
export declare function createDummyFiles(directory: string | null, interactive?: boolean): Promise<{
    numPrompts: number;
    providerPrefixes: string[];
    action: string;
    language: string;
}>;
//# sourceMappingURL=onboarding.d.ts.map