forked from ScottLogic/InferLLM
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
FS-60: Add promptfoo test config for suggestions prompt (#14)
* FS-60: Add promptfoo test config for suggestions prompt * Update backend/src/prompts/README.md Co-authored-by: Charlie Leopard <[email protected]> * Move promptfoo to its own folder in /backend. Load OpenAI key from env file. Simplify test structure so less utility .py classes are needed * update readme * rename folder --------- Co-authored-by: Charlie Leopard <[email protected]> Co-authored-by: Ivan Mladjenovic (He/Him) <[email protected]>
- Loading branch information
1 parent
66a6ae4
commit 5109071
Showing
5 changed files
with
78 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
# Promptfoo | ||
|
||
Promptfoo is a CLI and library for evaluating and red-teaming LLM apps. | ||
|
||
See https://www.promptfoo.dev/docs/intro/ | ||
|
||
## Setup | ||
|
||
### Install Promptfoo | ||
Install promptfoo by running `npx install promptfoo` | ||
|
||
### Activate Python venv | ||
Promptfoo must be run in a python virtual environment as python is used to load the jinja prompt templates. | ||
To set up a virtual environment, see [Running Locally](../README.md) | ||
|
||
## Run Promptfoo | ||
Promptfoo configuration (e.g. LLM model) can be set in `promptfooconfig.yaml` | ||
|
||
* Use `promptfoo eval` to run all promptfoo tests. | ||
* Use `promptfoo eval -c generate_message_suggestions_config.yaml` to run a specific test suite. | ||
* Use `promptfoo view` to view the results in browser. |
31 changes: 31 additions & 0 deletions
31
backend/promptfoo/generate_message_suggestions_config.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
description: "Generate Message Suggestions" | ||
|
||
providers: | ||
- id: openai:chat # openai:chat - defaults to gpt-4o-mini | ||
config: | ||
temperature: 0 | ||
|
||
prompts: file://prompt_foo_runner.py:generate_message_suggestions | ||
|
||
tests: | ||
- description: "test the output has the correct format and content when there is no chat history " | ||
vars: | ||
chatHistory: [] | ||
assert: | ||
- type: javascript | ||
value: JSON.parse(output).suggestions.length === 5 | ||
- type: contains | ||
value: ESG | ||
|
||
- description: "test the output has content containing coca-cola when the chat history contains a previous question about coca-cola" | ||
vars: | ||
chatHistory: | ||
[ | ||
"User: Can you find recent news articles discussing the ESG initiatives of Coca-Cola?", | ||
"System: In 2023, Coca-Cola HBC has strengthened its commitment to Environmental, Social, and Governance (ESG) initiatives by embedding sustainability into its operations. The company aims for a net zero carbon footprint and net positive biodiversity by 2040, and it has been recognized as the world's most sustainable beverage company by the Dow Jones Sustainability Indices for the seventh consecutive year. Key efforts include collaborating with suppliers to improve sustainability practices, reducing carbon emissions, and promoting responsible sourcing. Additionally, Coca-Cola HBC has expanded its sustainability strategy to Egypt, reflecting its global approach to these initiatives.", | ||
] | ||
assert: | ||
- type: contains | ||
value: Coca-Cola | ||
- type: llm-rubric | ||
value: the suggestions are all related to the topic of sustainability and ESG (Environment, Social, Governance) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
import sys | ||
import os | ||
sys.path.append("../") | ||
from dotenv import load_dotenv, find_dotenv # noqa: E402 | ||
from src.prompts.prompting import PromptEngine # noqa: E402 | ||
|
||
load_dotenv(find_dotenv()) | ||
|
||
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY") | ||
engine = PromptEngine() | ||
|
||
|
||
def generate_message_suggestions(context): | ||
chat_history = context["vars"]["chatHistory"] | ||
|
||
system_prompt = engine.load_prompt("generate_message_suggestions", chat_history=chat_history) | ||
|
||
return [{"role": "system", "content": system_prompt}, {"role": "user", "content": "Give me 5 suggestions."}] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
providers: | ||
id: openai:chat # openai:chat - defaults to gpt-4o-mini | ||
config: | ||
temperature: 0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters