Package: llm-prompting-gen
LLM Prompt Engineering GeneratorInstallationpip install llm-prompting-genWhat is LLM Prompt Engineering Generator?Large language models (LLMs) are emerging as a transformative technology, enabling developers to build applications that they previously could not. However, fine-tune them is not always possible or too expansive. Prompt Engineering techniques like In-Context Learning or Few-Shot Learning tries to solve this problem. Based onlangchain, this library enables prompt engineering in a straightforward way.How can I use it?This library consists of two main building blocks LLMs and Prompt Engineering. LLMs are provided bylangchain, whereas the Prompt Engineering is part of this library.
Both building blocks are combined in thegeneratorsmodule. The classPromptEngineeringGeneratordefines all requirements for a LLM to generate text based on prompt engineering techniques. If you want your output to be parsed into an pydantic dataclass checkout the classParsablePromptEngineeringGenerator.Simple Example# Task: extract keywords# Wiki article about gen AItext_with_keywords="""Generative artificial intelligence (also generative AI or GenAI[1]) is artificial intelligence capable of generating text, images, or other media, using generative models.[2][3][4] Generative AI models learn the patterns and structure of their input training data and then generate new data that has similar characteristics.In the early 2020s, advances in transformer-based deep neural networks enabled a number of generative AI systems notable for accepting natural language prompts as input. These include large language model chatbots such as ChatGPT, Bing Chat, Bard, and LLaMA, and text-to-image artificial intelligence art systems such as Stable Diffusion, Midjourney, and DALL-E."""fromllm_prompting_gen.generatorsimportPromptEngineeringGeneratorfromllm_prompting_gen.models.prompt_engineeringimportPromptElementsfromlangchain.chat_modelsimportChatOpenAI## Option 1: Simply load a JSON or YAML file following the format of llm_prompting_gen.models.prompt_engineering.PromptElements# Make sure env variable OPENAI_API_KEY is setllm=ChatOpenAI(temperature=0.0)# JSONkeyword_extractor=PromptEngineeringGenerator.from_json("templates/keyword_extractor.json",llm=llm)# YAMLkeyword_extractor=PromptEngineeringGenerator.from_yaml("templates/keyword_extractor.yaml",llm=llm)llm_output=keyword_extractor.generate(text=text_with_keywords)## Option 2: Simply create a Prompt Engineering class yourselfprompt_elements=PromptElements(role="You are a keyword extractor",instruction="Extract the keyword from the text delimited by '''",input="'''{text}'''")llm=ChatOpenAI(temperature=0.0)keyword_extractor=PromptEngineeringGenerator(llm=llm,prompt_elements=prompt_elements)llm_output=keyword_extractor.generate(text=text_with_keywords)How to customise the class for my own use case?The classPromptEngineeringGeneratorcontains two core parts 1. LLM 2. prompt engineering dataclass. If you want to initialise the generator class for your custom use case, you need to define a prompt engineering JSON file matching the format ofllm_prompting_gen.models.prompt_engineering.PromptElements.The JSON file can contain the following prompt elements in any combination tailored to your use case:Role:
The role in which the LLM should respondInstruction:
The task of the LLMContext:
Context with relevant information to solve the taskOutput Format:
Description how the LLM output format should look likeFew Shot Examples:
Few shot examples with optional introductionInput:
Target which the LLM should execute the task on. Could be for example a user question, or a text block to summarize.ShowcasesNotebook Showcase: Midjourney PromptNotebook Showcase: Keyword ExtractorApp: Image Gen AI Prompt GeneratorLicensellm-prompting-genis distributed under the terms of theMITlicense.