100% encontró este documento útil (1 voto)
33 vistas47 páginas

Uso de Azure Cognitive Services en Python

El documento presenta una introducción a los Modelos de Lenguaje Grande (LLMs) y su uso en Python, incluyendo opciones de modelos gestionados y locales, así como librerías para interactuar con ellos. Se discuten técnicas para mejorar los resultados de los LLMs, como el 'prompt engineering' y el uso de ejemplos de 'few-shot'. Además, se abordan consideraciones para desarrollar aplicaciones impulsadas por LLMs y se presentan ejemplos de código para su implementación.

Cargado por

38o69zmdn
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
100% encontró este documento útil (1 voto)
33 vistas47 páginas

Uso de Azure Cognitive Services en Python

El documento presenta una introducción a los Modelos de Lenguaje Grande (LLMs) y su uso en Python, incluyendo opciones de modelos gestionados y locales, así como librerías para interactuar con ellos. Se discuten técnicas para mejorar los resultados de los LLMs, como el 'prompt engineering' y el uso de ejemplos de 'few-shot'. Además, se abordan consideraciones para desarrollar aplicaciones impulsadas por LLMs y se presentan ejemplos de código para su implementación.

Cargado por

38o69zmdn
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd

Python +

IA
Python + IA
🧠 3/11: LLMs
↖️ 3/13: Vector
embeddings
🔍 3/18: RAG
3/19: Modelos de Vision
3/25: Salidas estructuradas
3/27: Calidad
Regístrate y
[Link]/PythonIA/serie
Python + IA
🧠 Modelos de Lenguaje
Grande
Gwyneth Peña-Siguenza
Python Cloud Advocate
[Link]/about
@madebygps
Hoy cubriremos...
• Cómo funcionan los LLM
• Opciones de modelo
• Uso de los LLM desde Python
• Mejora de los resultados del LLM
• Librerías LLM
• Creación de aplicaciones basadas en LLM
Cómo funcionan los LLM
De seguro que has usado un LLM...

ChatGPT, GitHub Copilot, Bing Copilot y muchos otros productos funcionan


con LLM.
LLM: Modelos de Lenguaje Grande
Un LLM es un modelo de machine learning tan grande que
logra comprender y generar lenguaje de uso cotidiana

📖 Characterizing Emergent Phenomena in LLMs


Así funcionan los modelos lingüísticos
Entrada
en lenguaje
natural Preprocesamie
nto
Tokens

Resultado
Modelo en lenguaje
Obtener resultados Descodificación natural
+
posprocesamien
Distribución to
de probabilidad
Preprocesamiento de la entrada:
Tokenizaton
Input “Hablaremos de llms”
:

Tokens:

Token 39 18122 32127 334 11475 1782


IDs:

[Link]/tokenizer
Entradas y salidas del modelo

H abl aremos de ll ms hoy

n tokens de 1 token de
entrada salida
El contexto se expande
Hablaremos de los
llms hoy
Hablaremos de los llms en
hoy
Hablaremos de los llms la
hoy en
Hablaremos de los llms hoy
en la clas
Hablaremos de los llms hoy ene la de
clase
Hablaremos de los llms hoy en la programació
clase de n
Hablaremos de los llms hoy en la clase de .
programación
Hablaremos de los llms hoy en la clase de
programación.
Selección de token
0.01 que

0.02 de

0.00
y
3
H abl aremos de ll ms 0.01
. en
3

0.07
aun
n tokens de 7 1 token de
entrada …
salida

0.00
pero
6

p
📈 The Transformer Explainer
Simplemente, los LLMs predicen el
siguiente token
Entrada
en lenguaje
natural Preprocesamie
nto
Tokens

Resultado
Modelo en lenguaje
Obtener resultados Descodificación natural
+
posprocesamien
Distribución to
de probabilidad
Opciones de modelos
Modelos gestionados
Los LLMs gestionados se pueden acceder a través de una API, desde
una empresa que administra el modelo y la infraestructura para
usted.
Host Models
GPT-3.5
[Link] GPT-4
GPT-4o
OpenAI GPT models, Meta models,
Azure AI
Cohere, Mistral, DeepSeek,...

GitHub Models (GRATIS) Azure AI models


Google Gemini 1, 1.5
Anthropic Claude 3 family
Demo: GitHub Models
Cualquier usuario de GitHub puede usar los modelos y los
playgrounds:

[Link]
Modelos locales
Los modelos locales tienen open weights y pueden funcionar en máquinas personales.
Los SLM = «Small Language Models» son modelos más pequeños, < 100 B parámetros

Local model SLMs


runners: populares:
• Mistral
• Ollama • Llama 3
series • Llava
• Llamafile
• Phi4 series • Gemma
• LM Studio
• DeepSeek-R1
Demo: Ollama
Ollama es una herramienta para ejecutar LLM locales en tu
computadora.
Usando LLMs desde
Python
Librerías de Python para modelos de
Azure AI
Estas librerías soportan directamente modelos gestionados por
Azure/GitHub:
Librería Modelos compatibles
[Link] models, Azure OpenAI models,
openai
OpenAI-compatible models

azure-ai-inference Azure OpenAI, GitHub Models, Azure AI models

azure-ai-agents Azure AI Agents service models

Más adelante hablaremos de librerías wrappers/orquestadores


como Langchain.
Librería OpenAI
La librería Python oficial de openai está disponible en PyPI:

pip install openai

Incluye soporte para chat completions, embeddings, y más.

openai librería es compatible con modelos gestionados en varios


lugares:
•[Link] account
•Azure OpenAI account
•GitHub models
•Local con OpenAI-compatible API (Ollama/llamafile)
OpenAI demos repo
Usaremos este repo hoy o demos:

[Link]

Usa estos enlaces para abrirlo con el host de OpenAI que prefieras:

• [Link]/python-openai-github (GRATIS)
• [Link]/python-openai-openai
• [Link]/python-openai-azure
• [Link]/python-openai-ollama
Autenticación API para hosts OpenAI
Para [Link] OpenAI, configura tu API key:

client =
[Link](api_key=[Link]["OPENAI_KEY"])
Para Azure OpenAI (keyless auth), usa Azure default
credentials:
token_provider = [Link].get_bearer_token_provider(
DefaultAzureCredential(),
"[Link]
)
client = [Link](
api_version=[Link]["AZURE_OPENAI_VERSION"],
azure_endpoint=[Link]["AZURE_OPENAI_ENDPOINT"],
azure_ad_token_provider=token_provider,
)
[Link]
Autenticación API para OpenAI-like
APIs
Para Ollama, configura tu base URL a localhost y key a cualquier valor:

client = [Link](
base_url="[Link]
api_key="nokeyneeded",
)

Para GitHub models, configura tu base URL a GitHub models host y


configura key a PAT (personal access token):

client = [Link](
base_url="[Link]
api_key=[Link]["GITHUB_TOKEN"])

👉🏽 En GitHub Codespaces, GITHUB_TOKEN siempre almacenará tu PAT. Si estás


ejecutando localmente, crea un nuevo PAT.
Llamada a Chat Completion API
response = [Link](
model="gpt-4o",
temperature=0.7,
max_tokens=30,
n=1,
messages=[
{"role": "system", "content": "Eres un asistente útil que
hace muchas referencias a gatos y usa emojis."},
{"role": "user", "content": "Escribe un haiku sobre un gato
hambriento que quiere atún"}
])

print([Link][0].[Link])

Ejemplo completo: [Link]


Transmite la respuesta

completion = [Link](
model=MODEL_NAME,
stream=True,
messages=[
{"role": "system", "content": "Eres un asistente útil que
hace muchas referencias a gatos y usa emojis."},
{"role": "user", "content": "Escribe un haiku sobre un gato
hambriento que quiere atún"}
])

for event in completion:


print([Link][0].[Link], end="", flush=True)

Ejemplo completo: chat_stream.py


LLMs: Pros y Cons
Pros:
• Creativo 😊
• Genial con los patrones
• Bueno con sintaxis (natural y de programación)

Cons:
• Creativo 😖
• Inventa cosas (sin saberlo)
• Ventana de contexto limitada (4K-
128K)

Como mejorar output del
LLM
Maneras de mejorar LLM output
• Prompt engineering: Solicitar un tono y un formato específico
• Few-shot examples: Demostrar el formato de salida deseado
• Llamadas encadenadas: Haz que el LLM reflexione, reduzca la
velocidad, lo descomponga
• 😊 cubriremos hoy
• Recuperación-Aumentada Generación (RAG): Proveer
contexto al LLM just-in-time
• 🔍 cubriremos 3/18

• Llamada a funciones y salidas estructuradas


• cubriremos 3/25
• Fine tuning: Enseñar a LLM nueva información alterando
permanentemente los weights
Prompt engineering
El primer mensaje enviado al modelo se llama «system
message» o «system prompt». Utilízalo para establecer
orientación general y reglas de formato.
response = [Link](
model=MODEL_NAME,
temperature=0.7,
messages=[
{"role": "system", "content": "Responde como Yoda"},
{"role": "user", "content": "¿Que es un LLM?"},
]
)

Ejemplo completo: prompt_engineering.p


y
Few-shot ejemplos
Otra forma de guiar a un modelo de lenguaje es proporcionar "few
shots", es decir, una secuencia de ejemplos de preguntas y
respuestas que demuestran cómo debería responder.
response = [Link](model=MODEL_NAME,
messages=[
{"role": "system", "content": "Eres un tutor que da pistas, no respuestas."},
{"role": "user", "content": "¿Cual es la capital de Francia?"},
{"role": "assistant", "content": "¿Puedes pensar en la ciudad conocida por la
Torre Eiffel?"},
{"role": "user", "content": "¿Cuál es la raíz cuadrada de 144?"},
{"role": "assistant", "content": "¿Qué número multiplicado por sí mismo es
igual a 144?"},
{"role": "user", "content": "¿Cuál es el número atómico del oxígeno?"},
{"role": "assistant", "content": "¿Cuántos protones tiene un átomo de
oxígeno?"},
{"role": "user", "content": "¿Cuál es el planeta más grande del sistema
solar?"},
Ejemplo
]) completo: few_shot_examples.py
Chained calls
response = [Link](model=MODEL_NAME,
messages=[{"role": "user",
"content": "Explica cómo funcionan los LLM en un solo párrafo."}])
explanation = [Link][0].[Link]

response = [Link](model=MODEL_NAME,
messages=[{"role": "user",
"content": f"Eres un editor. Revisa la siguiente explicación y proporciona
comentarios detallados sobre claridad, coherencia y cautivación. \n
Explicación: \n {explanation}"}])
feedback = [Link][0].[Link]

response = [Link](model=MODEL_NAME,
messages=[{"role": "user",
"content": f"Revisa el articulo usando los comentarios siguientes pero
mantenlo a un solo párrafo. \n Explicación:\n {explanation} \n\n Comentarios:\
n{feedback}"}])
final_article = [Link][0].[Link]
Ejemplo completo: chained_calls.py
Librerías populares LLM
LLM librerías
Muchas librerías Python ofrecen una capa de abstracción para trabajar con

• Langchain: Orquestación
• Llamaindex: Orquestación para RAG y Agentes
• PydanticAI: Orquestación para RAG y Agentes
• Semantic Kernel: Orquestación
• Autogen: Orquestación para flujos de agentes
• Litellm: Wrapper para varios hosts
• ...¡y muchos más!
Langchain
Conectando a GitHub models a través de Langchain:
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
model_name=[Link]["GITHUB_MODEL"],
openai_api_base="[Link]
openai_api_key=[Link]["GITHUB_TOKEN"]
)
prompt = ChatPromptTemplate.from_messages(
[("system", "Eres un asistente útil que hace muchas referencias a
gatos."),
("user", "{input}")]
)
chain = prompt | llm
response = [Link](
{"input": "escribe un haiku sobre un gato hambriento que quiere
atún
"})
Ejemplo completo: chat_langchain.py
Llamaindex
Conectando a GitHub models a través de Llamaindex:
from llama_index.llms.openai_like import OpenAILike

llm = OpenAILike(
model=[Link]["GITHUB_MODEL"],
api_base="[Link]
api_key=[Link]["GITHUB_TOKEN"],
is_chat_model=True,
)
chat_msgs = [
ChatMessage(role=[Link],
content="Eres un asistente útil que hace muchas referencias a
gatos."),
ChatMessage(role=[Link],
content="escribe un haiku sobre un gato hambriento que quiere atún"),
]
response = [Link](chat_msgs)
Ejemplo completo: chat_llamaindex.py
Pydantic AI
Conectando a GitHub models a través de Pydantic AI:
from pydantic_ai.[Link] import OpenAIModel

llm = OpenAIModel(
model="gpt-4o",
base_url="[Link]
api_key=[Link]["GITHUB_TOKEN"]
)

agent = Agent(model, system_prompt="Eres un asistente útil que


hace muchas referencias a gatos.

result = agent.run_sync("escribe un haiku sobre un gato hambriento


que quiere atún")

Ejemplo completo: chat_pydanticai.py


Cómo elegir una librería LLM
Considera:
• ¿Es compatible con todos los LLM/host que necesitas?
• ¿Tiene las funciones que necesitas (streaming, herramientas, etc.)?
• ¿Es fácil de usar y debuggear?
• ¿Está activamente mantenido?
• ¿Merecen la pena las ventajas?
Desarrollando aplicaciones
impulsadas por LLMs
Chat + vision app
Supported model hosts:
• Azure OpenAI
• GitHub Models

Features:
• Streaming
• Speech I/O
• Image upload*

Code:
[Link]/chat-vision-app

Profundizaremos en los modelos de


visión
en la sesión del 3/19.
App architectura
Frontend Python backend
(HTML, JavaScript) (Quart, Uvicorn)

User @[Link]("/chat/stream")
question async def chat_handler()

Model

Streamed
response
Transfer-Encoding:
Chunked
{"content": "He"}
{"content": "llo"}
{"content": "It's"}
{"content": "me"}
Streaming respuestas en Quart
@[Link]("/chat/stream")
async def chat_handler():
request_json = await request.get_json()

@stream_with_context
async def response_stream():

chat_coroutine = bp.openai_client.[Link](
model=[Link]["OPENAI_MODEL"],
messages=request_json["messages"],
stream=True,
)
async for event in await chat_coroutine:
event_dict = event.model_dump()
yield [Link](event_dict["choices"][0], ensure_ascii=False) + "\n"

return Response(response_stream())

[Link]/2023/09/best-practices-for-openai-chat-apps_1
[Link]
P: ¿Por qué el backend utiliza Quart?
Muchos desarrolladores empiezan con Flask, uno de los framework
web más popular.

Un framework síncrono (como Flask) solo puede gestionar 1 petición


por worker:

[Link]
ml
R: ¿Por qué el backend utiliza Quart?
Quart es la versión asíncrona de
Flask.
Un framework asíncrono puede gestionar nuevas peticiones mientras
espera
la I/O:
Async frameworks para Python
Hay varias opciones populares:

Framework Ejemplo apps para Azure AI


Quart [Link]/azai/chat
[Link]/chat-vision-app
[Link]/ragchat
FastAPI [Link]/azai/fastapi
[Link]/rag-postgres
Aiohttp [Link]/voicerag/repo
Django con async

[Link]
Próximos pasos 🧠 3/11: LLMs
¡Únete a los próximos
streams! → ↖️ 3/13: Vector
embeddings
Ven a las horas de oficina los
Lunes en Discord:
🔍 3/18: RAG
[Link]/pythonia/ho 3/19: Models de Vision
3/25: Salidas estructuradas
Obtén más recursos de
Python AI 3/27: Calidad y
Regístrate @
[Link]/thesource/Python_AI Seguridad
[Link]/PythonIA/series
Gracias

También podría gustarte