from langchain_openai import ChatOpenAI from langchain.prompts.prompt import PromptTemplate from typing import Tuple, List from langchain.schema import format_document import gradio as gr from langchain.chat_models import ChatOpenAI import os from langchain_openai import ChatOpenAI import os DEFAULT_DOCUMENT_PROMPT = PromptTemplate.from_template(template="{page_content}") def make_pairs(lst): """from a list of even lenght, make tupple pairs""" return [(lst[i], lst[i + 1]) for i in range(0, len(lst), 2)] def reset_textbox(): return gr.update(value="") def _combine_documents( docs, document_prompt=DEFAULT_DOCUMENT_PROMPT, document_separator="\n\n" ): doc_strings = [f"Document {i}: \n'''\n{format_document(doc, document_prompt)}\n'''" for i, doc in enumerate(docs, 1)] return document_separator.join(doc_strings) def _format_chat_history(chat_history: List[Tuple]) -> str: buffer = "" for dialogue_turn in chat_history: human = "Human: " + dialogue_turn[0] ai = "Assistant: " + dialogue_turn[1] buffer += "\n" + "\n".join([human, ai]) return buffer def _format_chat_history(chat_history: List[Tuple]) -> str: turn = 1 buffer = [] for dialogue in chat_history: buffer.append(("Human: " if turn else "Assistant: ") + dialogue.content) turn ^= 1 return "\n".join(buffer) + "\n" def get_llm(model="gpt-4o-mini",max_tokens=1024, temperature=0.0, streaming=True,timeout=30, **kwargs): llm = ChatOpenAI( model=model, api_key=os.environ.get("OPENAI_API_KEY", None), max_tokens = max_tokens, streaming = streaming, temperature=temperature, timeout = timeout, **kwargs, ) return llm def make_html_source(source,i): meta = source.metadata # content = source.page_content.split(":",1)[1].strip() content = source.page_content.strip() card = f"""
{content}