1. Подсказки langChain
Предыдущая статья кратко представила и использовала langChain. Вы можете знать, что LangChain — это платформа приложений, управляемая языковой моделью LLM . Использование LangChain может значительно снизить затраты на разработку. Эта статья в основном основана на реализации подсказок в LangChain . .
Ниже приводится адрес предыдущей статьи:
Введение в LangChain и краткое описание использования связанных компонентов
Для оперативного управления подсказками текст шаблона используется для добавления подсказок , а затем дорабатывается семантическое понимание модели для предоставления более точной информации. Поэтому с помощью этой функции можно создать множество систем ответов на вопросы в определенных областях.Например, вы очень пользовательский контент , чтобы модель знала свое собственное позиционирование и давала более точные ответы посредством семантического анализа.
Следующие приложения реализуются в определенных полях с помощью различных подсказок в LangChain.
1. Приложение с рекомендациями по осмотру достопримечательностей
Используя PromptTemplate в LangChain , он может генерировать текстовый шаблон , который может быть объединен в полный оператор в виде переменных параметров.
Например: Необходимо внедрить приложение для рекомендации живописных мест.Пользователь может ввести собственное описание, проанализировать и порекомендовать домашнее живописное место, а также указать причину рекомендации:
из langchain.output_parsers импортировать StructuredOutputParser, ResponseSchema
из langchain.prompts импортировать ChatPromptTemplate, HumanMessagePromptTemplate, PromptTemplate
из langchain.llms импортировать OpenAI
импортировать os
openai_api_key = os.environ["OPENAI_API_KEY"]
llm = OpenAI(model_name="text-davinci-003", openai_api_key=openai_api_key)
# определить структуру
response_schemas = [
ResponseSchema(name="area", description="рекомендуемые достопримечательности"),
ResponseSchema(name="reason", description= "Причина физического осмотра местности")
]
# Разбор выходной структуры
output_parser = StructuredOutputParser.from_response_schemas(response_schemas)
format_instructions = output_parser.get_format_instructions()
# Содержимое шаблона
template = "В соответствии с пользовательским содержимым, рекомендуем китайский сценический имя места и укажите рекомендуемую причину {format_instructions}, пользовательский ввод: {value}"
# Создать шаблон приглашения prompt
= PromptTemplate(
input_variables=["value"],
partial_variables={"format_instructions": format_instructions},
шаблон = шаблон
)
# Пользовательский ввод
value="Я хочу увидеть море"
# Генерация полного ввода
final_prompt = prompt.format(value=value)
print("Введите содержимое:", final_prompt)
print("Вывод LLM:", llm(final_prompt))
вставьте сюда описание изображения
2. Приложение для извлечения сущностей
В области НЛП очень распространено извлечение сущностей ner, сейчас это очень просто реализовать с помощью Prompts, достаточно дать точное описание сущности.
Это также можно реализовать с помощью шаблона PromptTemplate, продемонстрированного выше, здесь мы заменяем его шаблоном ChatPromptTemplate, предоставленным LangChain.
Например: извлеките информацию о названии компании и названии региона в соответствии с входным содержимым:
из langchain.schema импортировать HumanMessage
из langchain.prompts импортировать PromptTemplate, ChatPromptTemplate, HumanMessagePromptTemplate
из langchain.chat_models импортировать ChatOpenAI
из langchain.output_parsers импортировать StructuredOutputParser, ResponseSchema
импортировать os
openai_api_key = os.environ["OPENAI_API_KEY"]
chat_model = ChatOpenAI(температура=0, model_name='gpt-3.5-turbo', openai_api_key=openai_api_key)
response_schemas = [
ResponseSchema(name="company", description="извлеченное название компании"),
ResponseSchema(name="area", description="извлеченное название региона")
]
output_parser = StructuredOutputParser.from_response_schemas(response_schemas)
format_instructions = output_parser .get_format_instructions ()
печать (format_instructions)
prompt = ChatPromptTemplate(
messages=[
HumanMessagePromptTemplate.from_template("В соответствии с пользовательским содержимым извлеките название компании и название региона {format_instructions}, пользовательский ввод: {value}") ], input_variables=[ " value"], partial_variables=
{
"
format_instructions ": формат_инструкции}
)
# Введите content
value="Есть ли у Alibaba филиал в Нанкине, провинция Цзянсу?"
fruit_query = prompt.format_prompt(value=value)
print (fruit_query.messages[0].content)
fruit_output = chat_model(fruit_query.to_messages())
output = output_parser.parse(fruit_output.content)
print (вывод)
Вставьте сюда описание изображения
3. Приложение для викторины древней китайской поэзии
Китайская культура обширна и глубока, что отражено в древней поэзии.Кроме того, очень просто понять применение вопросов и ответов древней поэзии через LLM.
Это также может быть реализовано с помощью PromptTemplate и ChatPromptTemplate, продемонстрированных выше.Здесь мы заменяем его примером селектора SemanticSimilarityExampleSelector, предоставленным LangChain, и приводим несколько примеров, чтобы модель понимала семантическое значение, а затем выдавала результат.
Например: поймите, что пользователь вводит название древних стихов и дает содержание стихов, а пользователь вводит содержание стихов и дает названия стихов:
из langchain.prompts.example_selector импортировать SemanticSimilarityExampleSelector
из langchain.vectorstores импортировать FAISS
из langchain.embeddings импортировать OpenAIEmbeddings
из langchain.prompts импортировать FewShotPromptTemplate, PromptTemplate
из langchain.llms импортировать OpenAI
openai_api_key = os.environ["OPENAI_API_KEY"]
llm = OpenAI(model_name="gpt-3.5-turbo", openai_api_key=openai_api_key)
# Создайте шаблон подсказки
example_prompt = PromptTemplate(
input_variables=["input", "output"],
template="Пример ввода: {input}, Пример вывода: {output}"
)
#Пример списка
примеров = [
{"input": "Весенняя заря", "output": "Весенний сон без зари, везде слышно пение птиц"}, {" input": "
Весенней ночью радостный дождь", "output": " Макияж из яшмы В высоту, как дерево, свисают тысячи зеленых шелковых лент"},
{"input": "Старик покинул Башню Желтого Журавля на западе, а фейерверк отправился в Янчжоу в марте", "output": «Башня Желтого Журавля отправила Мэн Хаорана в Гуанлин.»}, {
«input»: «Тысячи гор и птиц улетают, десять тысяч путей людей исчезают», «output»: «Цзян Сюэ»},
]
example_selector = SemanticSimilarityExampleSelector.from_examples(
examples,
OpenAIEmbeddings(openai_api_key=openai_api_key),
FAISS,
k=4
)
# пример приглашения селектора
Similar_prompt = FewShotPromptTemplate(
example_selector=example_selector,
example _prompt=example_prompt,
prefix="В соответствии с приведенным ниже примером запишите вывод " ,
suffix="input:{value}",
input_variables=["value"],
)
# Вводимое содержимое
value = "Spring Hope"
# Содержимое, сгенерированное шаблоном
final_prompt = Similar_prompt.format(value=value)
print("Вводимое содержимое:", final_prompt)
print("Вывод LLM:", llm(final_prompt))
# Введите content
value = "Глядя на яркую луну, склонив голову и думая о своем родном городе"
# Контент, сгенерированный шаблоном
final_prompt = Similar_prompt.format(value=value)
print("Input content:", final_prompt)
print("LLM вывод:", llm(final_prompt))