{"id":12379,"date":"2024-06-09T17:23:42","date_gmt":"2024-06-09T15:23:42","guid":{"rendered":"https:\/\/www.palentino.es\/blog\/?p=12379"},"modified":"2024-06-09T17:53:48","modified_gmt":"2024-06-09T15:53:48","slug":"proyectos-con-la-ia-de-llama-3-en-local-y-net","status":"publish","type":"post","link":"https:\/\/www.palentino.es\/blog\/proyectos-con-la-ia-de-llama-3-en-local-y-net\/","title":{"rendered":"Proyectos con la IA de LLaMA 3 en local y .NET"},"content":{"rendered":"<p><strong>LLaMA 3<\/strong> es la \u00faltima versi\u00f3n del modelo de lenguaje desarrollado por <strong>Meta<\/strong>, dise\u00f1ado para comprender y generar texto de manera inteligente. Este modelo se presenta como una herramienta poderosa y accesible, que promete revolucionar el procesamiento del lenguaje natural. En este blog, exploraremos por qu\u00e9 LLaMA 3 es gratuita, qu\u00e9 es un <strong>LLM<\/strong> (Large Language Model), y c\u00f3mo puedes acceder al c\u00f3digo para empezar a usarlo hoy mismo. Adem\u00e1s veremos como sacar provecho de la IA desde .net con el uso de la librer\u00eda desde Visual Studio. Comencemos cuando arranque la llama&#8230;<a href=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/06\/IA-ollama-redes.gif\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-12406 size-full\" src=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/06\/IA-ollama-redes.gif\" alt=\"\" width=\"498\" height=\"518\" \/><\/a><!--more--><\/p>\n<h2><span style=\"color: #800080;\"><strong>\u00bfPor Qu\u00e9 LLaMA 3 es Gratuita?<\/strong><\/span><\/h2>\n<p>Meta ha decidido hacer LLaMA 3 gratuita para democratizar el acceso a la tecnolog\u00eda avanzada de procesamiento del lenguaje natural. Esto permite que investigadores, desarrolladores y empresas de todos los tama\u00f1os puedan utilizar y beneficiarse de esta herramienta sin barreras econ\u00f3micas.<\/p>\n<p>Al proporcionar acceso gratuito, Meta fomenta la investigaci\u00f3n y el desarrollo en el campo de la inteligencia artificial. Esto puede llevar a innovaciones adicionales, mejoras en el modelo y nuevas aplicaciones pr\u00e1cticas.<\/p>\n<p>Ofrecer LLaMA 3 de forma gratuita ayuda a construir una comunidad de usuarios y desarrolladores que pueden colaborar, compartir conocimientos y mejorar colectivamente el modelo. Esto crea un ecosistema din\u00e1mico de desarrollo y uso del modelo<\/p>\n<p>Hacer el modelo gratuito permite un mayor escrutinio p\u00fablico y acad\u00e9mico, lo que ayuda a identificar y mitigar problemas \u00e9ticos, como los sesgos en el modelo, de manera m\u00e1s efectiva.<\/p>\n<p>Al ser gratuito, LLaMA 3 puede competir mejor con otros modelos de lenguaje desarrollados por empresas como OpenAI y Google, aumentando su adopci\u00f3n y uso en diversas aplicaciones.<\/p>\n<p><a href=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/05\/wired-outline-426-brain.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-12184\" src=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/05\/wired-outline-426-brain.gif\" alt=\"\" width=\"100\" height=\"100\" \/><\/a><\/p>\n<h2><span style=\"color: #800080;\">\u00bfQu\u00e9 es un LLM (Large Language Model)?<\/span><\/h2>\n<p>Un LLM, o Large Language Model, es un tipo de modelo de inteligencia artificial dise\u00f1ado para procesar y generar lenguaje natural. Estos modelos est\u00e1n entrenados en grandes vol\u00famenes de texto y utilizan t\u00e9cnicas avanzadas de aprendizaje profundo para comprender y generar texto de manera coherente y contextual.<\/p>\n<p>La arquitectura m\u00e1s com\u00fan utilizada en los LLM es la de Transformer, que permite manejar dependencias a largo plazo en el texto y realizar tareas complejas de procesamiento del lenguaje natural con alta eficiencia.<\/p>\n<p><strong>Capacidades<\/strong>:<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li><strong>Comprensi\u00f3n de Texto<\/strong>: Los LLM pueden analizar y comprender el contexto y el significado del texto.<\/li>\n<li><strong>Generaci\u00f3n de Texto<\/strong>: Pueden generar texto coherente y relevante basado en una entrada dada.<\/li>\n<li><strong>Traducci\u00f3n<\/strong>: Capaces de traducir texto de un idioma a otro.<\/li>\n<li><strong>Resumen<\/strong>: Pueden resumir textos largos en versiones m\u00e1s cortas y comprensibles.<\/li>\n<li><strong>Conversaci\u00f3n<\/strong>: Utilizados en chatbots y asistentes virtuales para interactuar de manera natural con los usuarios.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong>Aplcaciones<\/strong>:<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li><strong>Asistentes Virtuales<\/strong>: Siri, Alexa, Google Assistant.<\/li>\n<li><strong>Generaci\u00f3n de Contenido<\/strong>: Art\u00edculos, blogs, informes.<\/li>\n<li><strong>An\u00e1lisis de Sentimientos<\/strong>: Evaluaci\u00f3n de opiniones en redes sociales, rese\u00f1as de productos.<\/li>\n<li><strong>Traducci\u00f3n y Localizaci\u00f3n<\/strong>: Servicios de traducci\u00f3n autom\u00e1tica.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong>Entrenamiento<\/strong>:<\/p>\n<p>Los <strong>LLM<\/strong> se entrenan en grandes conjuntos de datos que incluyen libros, art\u00edculos, sitios web, y m\u00e1s. Este proceso de entrenamiento permite que el modelo aprenda patrones en el lenguaje y c\u00f3mo utilizarlos para generar texto coherente.<\/p>\n<h2 id=\"c\u00f3mo-instalar-ollama-y-llama3\"><span style=\"color: #800080;\">Instalaci\u00f3n de Ollama y LlaMA3 en el equipo, comencemos<\/span><\/h2>\n<p>Lo vamos a hacer de forma sencilla con ollama, lo primero de todo tene\u00eds que ir a la web:<\/p>\n<p><a href=\"https:\/\/ollama.com\/\" target=\"_blank\" rel=\"noopener\">https:\/\/ollama.com\/<\/a><\/p>\n<p>En mi caso he descargado la versi\u00f3n para windows.<\/p>\n<p><a href=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/06\/ollama-windows.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-12391\" src=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/06\/ollama-windows.png\" alt=\"\" width=\"632\" height=\"425\" srcset=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/06\/ollama-windows.png 632w, https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/06\/ollama-windows-300x202.png 300w\" sizes=\"auto, (max-width: 632px) 100vw, 632px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>Se puede comprobar que se encuentra instalado en el equipo ya que abre un servidor http en localhost ,<\/p>\n<p><strong>http:\/\/localhost:11434\/<\/strong><\/p>\n<p><a href=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/06\/ollama-localhost.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-12383\" src=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/06\/ollama-localhost.png\" alt=\"\" width=\"796\" height=\"246\" srcset=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/06\/ollama-localhost.png 796w, https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/06\/ollama-localhost-300x93.png 300w\" sizes=\"auto, (max-width: 796px) 100vw, 796px\" \/><\/a><\/p>\n<p><a href=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/06\/ollama-ultimo-modelo.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-12392\" src=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/06\/ollama-ultimo-modelo.png\" alt=\"\" width=\"854\" height=\"353\" srcset=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/06\/ollama-ultimo-modelo.png 854w, https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/06\/ollama-ultimo-modelo-300x124.png 300w\" sizes=\"auto, (max-width: 854px) 100vw, 854px\" \/><\/a><\/p>\n<p>Lanzo el \u00faltimo modelo, si no se encuentra lo descarga. En este caso 5 gigas.<\/p>\n<h3><span style=\"color: #800080;\"><strong>Importante<\/strong>:<\/span><\/h3>\n<p>Si tu tarjeta gr\u00e1fica puede cargar el archivo en la memoria, el modelo funcionar\u00e1 muy r\u00e1pido, a un ritmo de alrededor de 500 palabras por segundo. Si tienes que ejecutarlo en la CPU, ser\u00e1 extremadamente lento, procesando entre 2 y 5 palabras por segundo.<\/p>\n<p>Os dejo una imagen demo de unas pocas palabras para ver la velocidad en un equipo sin GPU.<\/p>\n<p><a href=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/06\/ollama-demo.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-12393\" src=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/06\/ollama-demo.gif\" alt=\"\" width=\"871\" height=\"408\" \/><\/a><\/p>\n<p>Una vez en ejecuci\u00f3n podemos usar la consola de comandos o montar una web que use la IA en local, como si fuera chatGPT<\/p>\n<p>Si lo deseas, puedes instalar una interfaz web para facilitar la interacci\u00f3n con tu <strong>Chat Bot Llama 3<\/strong>. Hay varias opciones disponibles; personalmente, recomiendo esta: <a href=\"https:\/\/github.com\/ivanfioravanti\/chatbot-ollama\" target=\"_new\" rel=\"noreferrer noopener\">https:\/\/github.com\/ivanfioravanti\/chatbot-ollama<\/a>, basada en el proyecto chatbot-ui de Mckay Wrigley.<\/p>\n<p>Para instalarlo, primero crea una carpeta en la ubicaci\u00f3n de tu elecci\u00f3n en tu ordenador. Luego, dentro de esa carpeta, sigue estos pasos:<\/p>\n<p>git clone https:\/\/github.com\/ivanfioravanti\/chatbot-ollama.git<br \/>\nnpm ci<br \/>\nnpm run dev<\/p>\n<p>Y listo! Tendr\u00e1s un ChatBot web conectado a tu modelo LLaMA3 funcionando en Ollama.<\/p>\n<p>Tambi\u00e9n puedes instalar docker desktop y despues desplegarlo<\/p>\n<div class=\"markdown-heading\" dir=\"auto\">\n<h2 class=\"heading-element\" dir=\"auto\" tabindex=\"-1\">Docker<\/h2>\n<p>Build local:<\/p>\n<p>docker build -t chatbot-ollama .<br \/>\ndocker run -p 3000:3000 chatbot-ollama<\/p>\n<\/div>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\">\n<div class=\"zeroclipboard-container\">Pull desde ghcr:<\/div>\n<div><\/div>\n<div>docker run -p 3000:3000 ghcr.io\/ivanfioravanti\/chatbot-ollama:main<\/div>\n<div><\/div>\n<\/div>\n<h2><span style=\"color: #800080;\">Instalaci\u00f3n en Visual studio y demo en un programa C#<\/span><\/h2>\n<p><a href=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/06\/llama.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-12404\" src=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/06\/llama.gif\" alt=\"\" width=\"123\" height=\"185\" \/><\/a><\/p>\n<p><a href=\"https:\/\/github.com\/awaescher\/OllamaSharp\" target=\"_blank\" rel=\"noopener\"><strong>OllamaSharp<\/strong> <\/a>es una biblioteca de enlace (binding) de C# dise\u00f1ada para facilitar la interacci\u00f3n con la API de Ollama utilizando los lenguajes del ecosistema .NET. Proporciona una forma sencilla de integrar las capacidades de procesamiento de lenguaje natural y generaci\u00f3n de texto de Ollama en aplicaciones desarrolladas en C#. Con OllamaSharp, los desarrolladores pueden realizar solicitudes a la <strong>API<\/strong> de Ollama, enviar <strong>prompts<\/strong>, recibir respuestas y gestionar la comunicaci\u00f3n con el modelo de inteligencia artificial de Ollama de manera eficiente y con menos c\u00f3digo.<\/p>\n<p>OllamaSharp simplifica la integraci\u00f3n de funcionalidades avanzadas de procesamiento de lenguaje natural en tus aplicaciones .NET, permiti\u00e9ndote enfocarte en el desarrollo de la l\u00f3gica de tu aplicaci\u00f3n sin preocuparte por los detalles de la comunicaci\u00f3n con la API.<\/p>\n<p>Para crear una aplicaci\u00f3n en C# que se conecte con LLaMA3 usando Ollama y <strong>OllamaSharp<\/strong>, podemos seguir estos pasos:<\/p>\n<p><strong>1. Crear un nuevo proyecto en .NET<\/strong><br \/>\nPrimero, crea un nuevo proyecto de consola en .NET. Abre tu terminal y ejecuta el siguiente comando:<\/p>\n<div class=\"dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium\">\n<pre class=\"overflow-y-auto p-4\"><strong>dotnet new console -n OllamaApp cd OllamaApp<\/strong><\/pre>\n<div dir=\"ltr\"><\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><strong>2. A\u00f1adir el paquete OllamaSharp desde NuGet<\/strong><br \/>\nA continuaci\u00f3n, a\u00f1ade el paquete OllamaSharp a tu proyecto usando el siguiente comando:<\/div>\n<\/div>\n<pre><strong>dotnet add package OllamaSharp<\/strong><\/pre>\n<p><strong>3. Escribir el c\u00f3digo para conectar con LLaMA3<\/strong><\/p>\n<p>Edita el archivo <strong>Program.cs<\/strong> para incluir el siguiente c\u00f3digo, que muestra c\u00f3mo utilizar OllamaSharp para conectar con LLaMA3 y realizar consultas.<\/p>\n<pre>using System;\r\nusing System.Threading.Tasks;\r\nusing OllamaSharp;\r\n\r\nclass Program\r\n{\r\nstatic async Task Main(string[] args)\r\n{\r\n\/\/ Configurar la conexi\u00f3n con Ollama\r\nvar client = new OllamaClient(\"your-ollama-api-key\");\r\n\r\n\/\/ Definir la consulta que deseas enviar a LLaMA3\r\nstring query = \"Hola, \u00bfc\u00f3mo est\u00e1s?\";\r\n\r\ntry\r\n{\r\n\/\/ Enviar la consulta y obtener la respuesta\r\nvar response = await client.QueryLLaMA3Async(query);\r\n\r\n\/\/ Mostrar la respuesta en la consola\r\nConsole.WriteLine(\"Respuesta de LLaMA3:\");\r\nConsole.WriteLine(response);\r\n}\r\ncatch (Exception ex)\r\n{\r\nConsole.WriteLine(\"Error al conectar con LLaMA3:\");\r\nConsole.WriteLine(ex.Message);\r\n}\r\n}\r\n}<\/pre>\n<h3>4. Configurar la API Key de Ollama<\/h3>\n<p>Aseg\u00farate de reemplaza &#8220;your-ollama-api-key&#8221; con tu propia clave de API de Ollama. Puedes obtener esta clave registr\u00e1ndote en el sitio web de Ollama y creando un proyecto. Puedes poner la que quieras, al ser gratuito.<\/p>\n<h3>5. Ejecutar la aplicaci\u00f3n<\/h3>\n<p>Finalmente, ejecuta la aplicaci\u00f3n usando el siguiente comando en tu terminal:<\/p>\n<div class=\"dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium\">\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><strong>dotnet run<\/strong><\/div>\n<\/div>\n<p>Si todo est\u00e1 configurado correctamente, deber\u00edas ver la respuesta de LLaMA3 en la consola.<\/p>\n<h3>Consideraciones Adicionales<\/h3>\n<ul>\n<li>Aseg\u00farate de manejar las excepciones adecuadamente en tu c\u00f3digo para una mayor robustez.<\/li>\n<li>Podr\u00edas necesitar configurar permisos de red o ajustes de firewall si est\u00e1s trabajando en un entorno restringido.<\/li>\n<\/ul>\n<p>Este es un ejemplo b\u00e1sico para empezar. Dependiendo de tus necesidades, puedes ampliar esta aplicaci\u00f3n para incluir m\u00e1s funcionalidades, como una interfaz gr\u00e1fica de usuario, almacenamiento de resultados, etc.<\/p>\n<p>&nbsp;<\/p>\n<h2><span style=\"color: #800080;\"><strong>Anexo -&gt;\u00a0 ver una comparativa de LLM.<\/strong><\/span><\/h2>\n<p><a href=\"https:\/\/chat.lmsys.org\/\" target=\"_blank\" rel=\"noopener\">https:\/\/chat.lmsys.org\/<\/a><\/p>\n<p><a href=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/06\/comparativa-llm-1.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-12385 size-full\" src=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/06\/comparativa-llm-1.png\" alt=\"\" width=\"1448\" height=\"687\" srcset=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/06\/comparativa-llm-1.png 1448w, https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/06\/comparativa-llm-1-300x142.png 300w, https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2024\/06\/comparativa-llm-1-1024x486.png 1024w\" sizes=\"auto, (max-width: 1448px) 100vw, 1448px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>LLaMA 3 es la \u00faltima versi\u00f3n del modelo de lenguaje desarrollado por Meta, dise\u00f1ado para comprender y generar texto de manera inteligente. Este modelo se presenta como una herramienta poderosa y accesible, que promete revolucionar el procesamiento del lenguaje natural. En este blog, exploraremos por qu\u00e9 LLaMA 3 es gratuita, qu\u00e9 es un LLM (Large Language Model), y c\u00f3mo puedes acceder al c\u00f3digo para empezar a usarlo hoy mismo. Adem\u00e1s veremos como sacar provecho de la IA desde .net con el uso de la librer\u00eda desde Visual Studio. Comencemos cuando arranque la llama&#8230;<\/p>\n","protected":false},"author":1,"featured_media":11292,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1415],"tags":[2248],"class_list":["post-12379","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sin-categoria-es","tag-ia"],"_links":{"self":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/12379","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/comments?post=12379"}],"version-history":[{"count":17,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/12379\/revisions"}],"predecessor-version":[{"id":12407,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/12379\/revisions\/12407"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/media\/11292"}],"wp:attachment":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/media?parent=12379"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/categories?post=12379"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/tags?post=12379"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}