forked from Archives/langchain
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
23 lines
896 B
Python
23 lines
896 B
Python
"""Utility functions for working with prompts."""
|
|
from typing import Sequence, Union
|
|
|
|
from langchain.chains.llm import LLMChain
|
|
from langchain.llms.base import LLM
|
|
from langchain.prompts.data import BaseExample, convert_to_examples
|
|
from langchain.prompts.dynamic import DynamicPrompt
|
|
|
|
TEST_GEN_TEMPLATE_SUFFIX = "Add another example."
|
|
|
|
|
|
def generate_example(examples: Sequence[Union[str, BaseExample]], llm: LLM) -> str:
|
|
"""Return another example given a list of examples for a prompt."""
|
|
full_examples = convert_to_examples(examples)
|
|
prompt = DynamicPrompt(examples=full_examples, suffix=TEST_GEN_TEMPLATE_SUFFIX)
|
|
chain = LLMChain(llm=llm, prompt=prompt)
|
|
return chain.predict()
|
|
|
|
|
|
def generate_example_from_dynamic_prompt(prompt: DynamicPrompt, llm: LLM) -> str:
|
|
"""Return another example given a DynamicPrompt object."""
|
|
return generate_example(prompt.examples, llm)
|