langchain-compressa


Namelangchain-compressa JSON
Version 0.1.4 PyPI version JSON
download
home_pagehttps://github.com/compressa-ai/langchain_compressa
SummaryAn integration package connecting Compressa and LangChain
upload_time2024-09-25 08:39:06
maintainerNone
docs_urlNone
authorcompressa.ai
requires_python<4.0,>=3.8.1
licenseMIT
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # langchain-compressa

Этот пакет содержит интеграцию LangChain и Compressa.

## Установка

```bash
pip install langchain-compressa
```

И вам следует настроить учетные данные, установив следующую переменную окружения:  
COMPRESSA_API_KEY

## Embeddings

`CompressaEmbeddings` класс предоставляет embeddings из Compressa.

```python
from langchain_compressa import CompressaEmbeddings

embeddings = CompressaEmbeddings()
embeddings.embed_query("В чем смысл жизни?")
```


## Chat model
` ChatCompressa` класс предоставляет чат модели из Compressa.

```python
from langchain_openai import ChatCompressa

llm = ChatCompressa(
    temperature=0,    
    # api_key="...",  # если вы предпочитаете передавать ключ непосредственно в конструктор вместо использования переменных окружения   
)

messages = [
    (
        "system",
        "Ты полезный помощник, который переводит с русского на болгарский. Переведи предложение пользователя.",
    ),
    ("human", "Я люблю программирование."),
]

ai_msg = llm.invoke(messages)
print(ai_msg)
print(ai_msg.content)

```

## CompressaRerank
` CompressaRerank` класс предоставляет реранк модели из Compressa.

```python
from langchain_core.documents import Document
from langchain_compressa.reranks import CompressaRerank

documents = [
    Document(
        page_content="""Карсон-Сити — столица американского штата Невада. 
        По данным переписи населения США 2010 года, население Карсон-Сити составляло 55 274 человека.""",
        metadata={"source": "https://пример.ru/1"}
    ),
    Document(
        page_content="""Содружество Северных Марианских островов — группа островов в Тихом океане, 
        которые являются политическим разделением, контролируемым Соединенными Штатами. 
        Столица — Сайпан.""",
        metadata={"source": "https://пример.ru/2"}
    ),
    Document(
        page_content="""Шарлотта-Амалия — столица и крупнейший город Виргинских островов США. 
        В нем проживает около 20 000 человек. Город находится на острове Сент-Томас.""",
        metadata={"source": "https://пример.ru/3"}
    ),
    Document(
        page_content="""Вашингтон, округ Колумбия (также известный как просто Вашингтон или 
        округ Колумбия, и официально как округ Колумбия) — столица Соединенных Штатов. 
        Это федеральный округ. На территории находятся резиденция президента США и многие 
        крупные государственные правительственные учреждения. Это делает его политическим центром 
        Соединенных Штатов Америки.""",
        metadata={"source": "https://пример.ru/4"}
    ), 
    Document(
        page_content="""Смертная казнь существовала в Соединенных Штатах еще до того, 
        как Соединенные Штаты стали страной. По состоянию на 2017 год смертная казнь разрешена 
        в 30 из 50 штатов. Федеральное правительство (включая вооруженные силы США) также 
        применяет смертную казнь.""",
        metadata={"source": "https://пример.ru/5"}
    )
]

query = "Какая столица у Соединенных Штатов Америки?"

reranker = CompressaRerank()
compress_res = reranker.compress_documents(query=query,  documents=documents)
```

## Пример RAG 

```python
import os
from langchain_compressa import CompressaEmbeddings, ChatCompressa, CompressaRerank
from langchain_core.documents import Document
from langchain.chains.combine_documents import create_stuff_documents_chain
from langchain.chains import create_retrieval_chain
from langchain.retrievers.contextual_compression import ContextualCompressionRetriever
from langchain_core.prompts import ChatPromptTemplate
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_community.document_loaders import WebBaseLoader
from langchain_chroma import Chroma

COMPRESSA_API_KEY = os.getenv('COMPRESSA_API_KEY')

compressa_embedding = CompressaEmbeddings(api_key=COMPRESSA_API_KEY)
llm = ChatCompressa(api_key=COMPRESSA_API_KEY)

loader = WebBaseLoader("https://ru.wikipedia.org/wiki/Архитектура_фон_Неймана")
docs = loader.load()

text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=500, chunk_overlap=100, add_start_index=True
)
all_splits = text_splitter.split_documents(docs)

vectorstore = Chroma.from_documents(documents=all_splits, embedding=compressa_embedding)
retriever = vectorstore.as_retriever(search_type="similarity", search_kwargs={"k": 5})

compressor = CompressaRerank(api_key=COMPRESSA_API_KEY)
compression_retriever = ContextualCompressionRetriever(
    base_compressor=compressor, base_retriever=retriever
)

system_template = f"""Ты помощник по вопросам-ответам. Используй следующую контекстную информацию, 
чтобы ответить на вопрос. Если в контексте нет ответа, ответь 'Не знаю ответа на вопрос'. 
Используй максимум три предложения и будь точным но кратким."""

qa_prompt = ChatPromptTemplate.from_messages([
    ("system", system_template),
    ("human", """Контекстная информация:

        {context}
        
        Вопрос: {input}		
    """),
])

question_answer_chain = create_stuff_documents_chain(llm, qa_prompt)

rag_chain = create_retrieval_chain(compression_retriever, question_answer_chain)

answ = rag_chain.invoke({"input": "Какое узкое место у архитектуры фон Неймана?"})
print(answ["answer"])
```


            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/compressa-ai/langchain_compressa",
    "name": "langchain-compressa",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.8.1",
    "maintainer_email": null,
    "keywords": null,
    "author": "compressa.ai",
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/23/a4/7fcacce50409208c1224db29c18c3a3a89dfb28ae371c47fc1efed1e6cca/langchain_compressa-0.1.4.tar.gz",
    "platform": null,
    "description": "# langchain-compressa\n\n\u042d\u0442\u043e\u0442 \u043f\u0430\u043a\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044e LangChain \u0438 Compressa.\n\n## \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\n\n```bash\npip install langchain-compressa\n```\n\n\u0418 \u0432\u0430\u043c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0443\u0447\u0435\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f:  \nCOMPRESSA_API_KEY\n\n## Embeddings\n\n`CompressaEmbeddings` \u043a\u043b\u0430\u0441\u0441 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 embeddings \u0438\u0437 Compressa.\n\n```python\nfrom langchain_compressa import CompressaEmbeddings\n\nembeddings = CompressaEmbeddings()\nembeddings.embed_query(\"\u0412 \u0447\u0435\u043c \u0441\u043c\u044b\u0441\u043b \u0436\u0438\u0437\u043d\u0438?\")\n```\n\n\n## Chat model\n` ChatCompressa` \u043a\u043b\u0430\u0441\u0441 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0447\u0430\u0442 \u043c\u043e\u0434\u0435\u043b\u0438 \u0438\u0437 Compressa.\n\n```python\nfrom langchain_openai import ChatCompressa\n\nllm = ChatCompressa(\n    temperature=0,    \n    # api_key=\"...\",  # \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u043a\u043b\u044e\u0447 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u0432\u043c\u0435\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f   \n)\n\nmessages = [\n    (\n        \"system\",\n        \"\u0422\u044b \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439 \u043f\u043e\u043c\u043e\u0449\u043d\u0438\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 \u0441 \u0440\u0443\u0441\u0441\u043a\u043e\u0433\u043e \u043d\u0430 \u0431\u043e\u043b\u0433\u0430\u0440\u0441\u043a\u0438\u0439. \u041f\u0435\u0440\u0435\u0432\u0435\u0434\u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.\",\n    ),\n    (\"human\", \"\u042f \u043b\u044e\u0431\u043b\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435.\"),\n]\n\nai_msg = llm.invoke(messages)\nprint(ai_msg)\nprint(ai_msg.content)\n\n```\n\n## CompressaRerank\n` CompressaRerank` \u043a\u043b\u0430\u0441\u0441 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0440\u0435\u0440\u0430\u043d\u043a \u043c\u043e\u0434\u0435\u043b\u0438 \u0438\u0437 Compressa.\n\n```python\nfrom langchain_core.documents import Document\nfrom langchain_compressa.reranks import CompressaRerank\n\ndocuments = [\n    Document(\n        page_content=\"\"\"\u041a\u0430\u0440\u0441\u043e\u043d-\u0421\u0438\u0442\u0438 \u2014 \u0441\u0442\u043e\u043b\u0438\u0446\u0430 \u0430\u043c\u0435\u0440\u0438\u043a\u0430\u043d\u0441\u043a\u043e\u0433\u043e \u0448\u0442\u0430\u0442\u0430 \u041d\u0435\u0432\u0430\u0434\u0430. \n        \u041f\u043e \u0434\u0430\u043d\u043d\u044b\u043c \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0438 \u043d\u0430\u0441\u0435\u043b\u0435\u043d\u0438\u044f \u0421\u0428\u0410 2010 \u0433\u043e\u0434\u0430, \u043d\u0430\u0441\u0435\u043b\u0435\u043d\u0438\u0435 \u041a\u0430\u0440\u0441\u043e\u043d-\u0421\u0438\u0442\u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u043e 55 274 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430.\"\"\",\n        metadata={\"source\": \"https://\u043f\u0440\u0438\u043c\u0435\u0440.ru/1\"}\n    ),\n    Document(\n        page_content=\"\"\"\u0421\u043e\u0434\u0440\u0443\u0436\u0435\u0441\u0442\u0432\u043e \u0421\u0435\u0432\u0435\u0440\u043d\u044b\u0445 \u041c\u0430\u0440\u0438\u0430\u043d\u0441\u043a\u0438\u0445 \u043e\u0441\u0442\u0440\u043e\u0432\u043e\u0432 \u2014 \u0433\u0440\u0443\u043f\u043f\u0430 \u043e\u0441\u0442\u0440\u043e\u0432\u043e\u0432 \u0432 \u0422\u0438\u0445\u043e\u043c \u043e\u043a\u0435\u0430\u043d\u0435, \n        \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u043e\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u043c, \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u043c\u044b\u043c \u0421\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u043d\u044b\u043c\u0438 \u0428\u0442\u0430\u0442\u0430\u043c\u0438. \n        \u0421\u0442\u043e\u043b\u0438\u0446\u0430 \u2014 \u0421\u0430\u0439\u043f\u0430\u043d.\"\"\",\n        metadata={\"source\": \"https://\u043f\u0440\u0438\u043c\u0435\u0440.ru/2\"}\n    ),\n    Document(\n        page_content=\"\"\"\u0428\u0430\u0440\u043b\u043e\u0442\u0442\u0430-\u0410\u043c\u0430\u043b\u0438\u044f \u2014 \u0441\u0442\u043e\u043b\u0438\u0446\u0430 \u0438 \u043a\u0440\u0443\u043f\u043d\u0435\u0439\u0448\u0438\u0439 \u0433\u043e\u0440\u043e\u0434 \u0412\u0438\u0440\u0433\u0438\u043d\u0441\u043a\u0438\u0445 \u043e\u0441\u0442\u0440\u043e\u0432\u043e\u0432 \u0421\u0428\u0410. \n        \u0412 \u043d\u0435\u043c \u043f\u0440\u043e\u0436\u0438\u0432\u0430\u0435\u0442 \u043e\u043a\u043e\u043b\u043e 20 000 \u0447\u0435\u043b\u043e\u0432\u0435\u043a. \u0413\u043e\u0440\u043e\u0434 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u043e\u0441\u0442\u0440\u043e\u0432\u0435 \u0421\u0435\u043d\u0442-\u0422\u043e\u043c\u0430\u0441.\"\"\",\n        metadata={\"source\": \"https://\u043f\u0440\u0438\u043c\u0435\u0440.ru/3\"}\n    ),\n    Document(\n        page_content=\"\"\"\u0412\u0430\u0448\u0438\u043d\u0433\u0442\u043e\u043d, \u043e\u043a\u0440\u0443\u0433 \u041a\u043e\u043b\u0443\u043c\u0431\u0438\u044f (\u0442\u0430\u043a\u0436\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u043a\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e \u0412\u0430\u0448\u0438\u043d\u0433\u0442\u043e\u043d \u0438\u043b\u0438 \n        \u043e\u043a\u0440\u0443\u0433 \u041a\u043e\u043b\u0443\u043c\u0431\u0438\u044f, \u0438 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043a\u0430\u043a \u043e\u043a\u0440\u0443\u0433 \u041a\u043e\u043b\u0443\u043c\u0431\u0438\u044f) \u2014 \u0441\u0442\u043e\u043b\u0438\u0446\u0430 \u0421\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u043d\u044b\u0445 \u0428\u0442\u0430\u0442\u043e\u0432. \n        \u042d\u0442\u043e \u0444\u0435\u0434\u0435\u0440\u0430\u043b\u044c\u043d\u044b\u0439 \u043e\u043a\u0440\u0443\u0433. \u041d\u0430 \u0442\u0435\u0440\u0440\u0438\u0442\u043e\u0440\u0438\u0438 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0440\u0435\u0437\u0438\u0434\u0435\u043d\u0446\u0438\u044f \u043f\u0440\u0435\u0437\u0438\u0434\u0435\u043d\u0442\u0430 \u0421\u0428\u0410 \u0438 \u043c\u043d\u043e\u0433\u0438\u0435 \n        \u043a\u0440\u0443\u043f\u043d\u044b\u0435 \u0433\u043e\u0441\u0443\u0434\u0430\u0440\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0443\u0447\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f. \u042d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0435\u0433\u043e \u043f\u043e\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0446\u0435\u043d\u0442\u0440\u043e\u043c \n        \u0421\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u043d\u044b\u0445 \u0428\u0442\u0430\u0442\u043e\u0432 \u0410\u043c\u0435\u0440\u0438\u043a\u0438.\"\"\",\n        metadata={\"source\": \"https://\u043f\u0440\u0438\u043c\u0435\u0440.ru/4\"}\n    ), \n    Document(\n        page_content=\"\"\"\u0421\u043c\u0435\u0440\u0442\u043d\u0430\u044f \u043a\u0430\u0437\u043d\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0430 \u0432 \u0421\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u043d\u044b\u0445 \u0428\u0442\u0430\u0442\u0430\u0445 \u0435\u0449\u0435 \u0434\u043e \u0442\u043e\u0433\u043e, \n        \u043a\u0430\u043a \u0421\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u043d\u044b\u0435 \u0428\u0442\u0430\u0442\u044b \u0441\u0442\u0430\u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u043e\u0439. \u041f\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e \u043d\u0430 2017 \u0433\u043e\u0434 \u0441\u043c\u0435\u0440\u0442\u043d\u0430\u044f \u043a\u0430\u0437\u043d\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0430 \n        \u0432 30 \u0438\u0437 50 \u0448\u0442\u0430\u0442\u043e\u0432. \u0424\u0435\u0434\u0435\u0440\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e (\u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0432\u043e\u043e\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0435 \u0441\u0438\u043b\u044b \u0421\u0428\u0410) \u0442\u0430\u043a\u0436\u0435 \n        \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 \u0441\u043c\u0435\u0440\u0442\u043d\u0443\u044e \u043a\u0430\u0437\u043d\u044c.\"\"\",\n        metadata={\"source\": \"https://\u043f\u0440\u0438\u043c\u0435\u0440.ru/5\"}\n    )\n]\n\nquery = \"\u041a\u0430\u043a\u0430\u044f \u0441\u0442\u043e\u043b\u0438\u0446\u0430 \u0443 \u0421\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u043d\u044b\u0445 \u0428\u0442\u0430\u0442\u043e\u0432 \u0410\u043c\u0435\u0440\u0438\u043a\u0438?\"\n\nreranker = CompressaRerank()\ncompress_res = reranker.compress_documents(query=query,  documents=documents)\n```\n\n## \u041f\u0440\u0438\u043c\u0435\u0440 RAG \n\n```python\nimport os\nfrom langchain_compressa import CompressaEmbeddings, ChatCompressa, CompressaRerank\nfrom langchain_core.documents import Document\nfrom langchain.chains.combine_documents import create_stuff_documents_chain\nfrom langchain.chains import create_retrieval_chain\nfrom langchain.retrievers.contextual_compression import ContextualCompressionRetriever\nfrom langchain_core.prompts import ChatPromptTemplate\nfrom langchain_text_splitters import RecursiveCharacterTextSplitter\nfrom langchain_community.document_loaders import WebBaseLoader\nfrom langchain_chroma import Chroma\n\nCOMPRESSA_API_KEY = os.getenv('COMPRESSA_API_KEY')\n\ncompressa_embedding = CompressaEmbeddings(api_key=COMPRESSA_API_KEY)\nllm = ChatCompressa(api_key=COMPRESSA_API_KEY)\n\nloader = WebBaseLoader(\"https://ru.wikipedia.org/wiki/\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430_\u0444\u043e\u043d_\u041d\u0435\u0439\u043c\u0430\u043d\u0430\")\ndocs = loader.load()\n\ntext_splitter = RecursiveCharacterTextSplitter(\n    chunk_size=500, chunk_overlap=100, add_start_index=True\n)\nall_splits = text_splitter.split_documents(docs)\n\nvectorstore = Chroma.from_documents(documents=all_splits, embedding=compressa_embedding)\nretriever = vectorstore.as_retriever(search_type=\"similarity\", search_kwargs={\"k\": 5})\n\ncompressor = CompressaRerank(api_key=COMPRESSA_API_KEY)\ncompression_retriever = ContextualCompressionRetriever(\n    base_compressor=compressor, base_retriever=retriever\n)\n\nsystem_template = f\"\"\"\u0422\u044b \u043f\u043e\u043c\u043e\u0449\u043d\u0438\u043a \u043f\u043e \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u043c-\u043e\u0442\u0432\u0435\u0442\u0430\u043c. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \n\u0447\u0442\u043e\u0431\u044b \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441. \u0415\u0441\u043b\u0438 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u043d\u0435\u0442 \u043e\u0442\u0432\u0435\u0442\u0430, \u043e\u0442\u0432\u0435\u0442\u044c '\u041d\u0435 \u0437\u043d\u0430\u044e \u043e\u0442\u0432\u0435\u0442\u0430 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441'. \n\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439 \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c \u0442\u0440\u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0431\u0443\u0434\u044c \u0442\u043e\u0447\u043d\u044b\u043c \u043d\u043e \u043a\u0440\u0430\u0442\u043a\u0438\u043c.\"\"\"\n\nqa_prompt = ChatPromptTemplate.from_messages([\n    (\"system\", system_template),\n    (\"human\", \"\"\"\u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f:\n\n        {context}\n        \n        \u0412\u043e\u043f\u0440\u043e\u0441: {input}\t\t\n    \"\"\"),\n])\n\nquestion_answer_chain = create_stuff_documents_chain(llm, qa_prompt)\n\nrag_chain = create_retrieval_chain(compression_retriever, question_answer_chain)\n\nansw = rag_chain.invoke({\"input\": \"\u041a\u0430\u043a\u043e\u0435 \u0443\u0437\u043a\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0443 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0444\u043e\u043d \u041d\u0435\u0439\u043c\u0430\u043d\u0430?\"})\nprint(answ[\"answer\"])\n```\n\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "An integration package connecting Compressa and LangChain",
    "version": "0.1.4",
    "project_urls": {
        "Homepage": "https://github.com/compressa-ai/langchain_compressa",
        "Repository": "https://github.com/compressa-ai/langchain_compressa",
        "Source Code": "https://github.com/compressa-ai/langchain_compressa"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9937f9204173674d1dfd2d2225d394115750685222c5477eee5f9a214fd0324c",
                "md5": "7de515ce2fcb641cbd8acccbf474c9c1",
                "sha256": "b7498a03de656f03d490a97d4c9229292a0ce9d47ced9f36756de7b111afe176"
            },
            "downloads": -1,
            "filename": "langchain_compressa-0.1.4-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "7de515ce2fcb641cbd8acccbf474c9c1",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.8.1",
            "size": 10896,
            "upload_time": "2024-09-25T08:39:04",
            "upload_time_iso_8601": "2024-09-25T08:39:04.624360Z",
            "url": "https://files.pythonhosted.org/packages/99/37/f9204173674d1dfd2d2225d394115750685222c5477eee5f9a214fd0324c/langchain_compressa-0.1.4-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "23a47fcacce50409208c1224db29c18c3a3a89dfb28ae371c47fc1efed1e6cca",
                "md5": "451531cc26316e011686b6c52bf24d42",
                "sha256": "1aa8e99d3c6c5d92ce23b56507df5f7a7cbcceb3cbede1c0a51ed12f7f6d32c2"
            },
            "downloads": -1,
            "filename": "langchain_compressa-0.1.4.tar.gz",
            "has_sig": false,
            "md5_digest": "451531cc26316e011686b6c52bf24d42",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.8.1",
            "size": 10663,
            "upload_time": "2024-09-25T08:39:06",
            "upload_time_iso_8601": "2024-09-25T08:39:06.644564Z",
            "url": "https://files.pythonhosted.org/packages/23/a4/7fcacce50409208c1224db29c18c3a3a89dfb28ae371c47fc1efed1e6cca/langchain_compressa-0.1.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-09-25 08:39:06",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "compressa-ai",
    "github_project": "langchain_compressa",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "langchain-compressa"
}
        
Elapsed time: 0.39241s