LangChain - Parte1

El día de hoy he comenzado con LangChain para estudiar y aprender un poco sobre los LLM. El primer ejemplo ha sido como sigue:

from langchain.llms import LlamaCpp, OpenAI
import config

api = config.OPENAI_API_KEY
llm_openai = OpenAI(api_key=api, model_name='text-davinci-003')
respuesta_openai = llm_openai('Hola como estás?')

print(respuesta_openai)

El siguiente ejemplo ha sido utilizar el paquete ChatModels de langchain y usar HumanMessage para indicar un mensaje "humano" para chatgpt. El ejemplo es como sigue:

from langchain.chat_models import ChatOpenAI
from langchain.schema import HumanMessage
import config

api = config.OPENAI_API_KEY

chatgpt = ChatOpenAI(api_key=api)

respuesta = chatgpt([HumanMessage(content="Hola, como estás?")])
print(respuesta.content)

Por último, he utilizado PromptTemplate del paquete de prompts. La idea es utilizar una frase como prompt y utilizar variables o grupos de variables para reemplazar. Así por ejemplo :

template_basico = """Eres un asistente virtual culinario que responde a preguntas
de manera muy breve. Pregunta: ¿Cuales son los ingredientes para preparar {platillo}. Respuesta:"""

prompt_template = PromptTemplate(input_variables=["platillo"], template=template_basico)

prompt_value: object = prompt_template.format(platillo="tortilla de patata")

El valor entre llaves {platillo} será reemplazado por el valor "tortilla de patata". Es muy similiar al formateo de plantillas que se utilizan en Twig/Symfony. Para obtener el número de tokens que se van a enviar o utilzar podemos utilizar :

python3 -m pip install tiktoken
print(llm_openai.get_num_tokens(prompt_value))