LangChain строит доменную модель на основе управления подсказками.

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))

  

рекомендация

отblog.csdn.net/sinat_37574187/article/details/131776111
рекомендация