diff --git a/00-course-setup/translations/cn/README.md b/00-course-setup/translations/cn/README.md deleted file mode 100644 index 6a4e9ae0e9..0000000000 --- a/00-course-setup/translations/cn/README.md +++ /dev/null @@ -1,105 +0,0 @@ -# 课程介绍和学习环境设置 - -我们非常高兴您能够开始学习本课程,希望您能通过学习使用生成式 AI 构建有趣的应用! - -为了让您提升学习效率,我们创建了该页面,概述了所有关于本课程需要设置的步骤、相关技术要求以及如何获取帮助。 - -## 安装步骤 - -要开始学习本课程,您需要完成以下设置。 - -### 1. Fork this Repo - -[Fork 这个完整的 repo](https://github.com/microsoft/generative-ai-for-beginners/fork?WT.mc_id=academic-105485-koreyst) 到你自己的 GitHub 账号下以便您能完成代码的修改和完成相关的挑战. 您也可以 [给该 repo star (🌟)](https://docs.github.com/en/get-started/exploring-projects-on-github/saving-repositories-with-stars?WT.mc_id=academic-105485-koreyst) 让您更容易找到它和相关的 Repo. - -### 2. 创建 GitHub Codespaces - -为了避免运行代码时出现任何依赖性问题,我们建议在 GitHub Codespace 中运行本课程的相关例子。 - -这可以通过选择该 Repo 版本上的“Code”选项并选择 **Codespaces** 选项来创建。 - -### 3. 存储您的 API Keys - -在构建任何类型的应用程序时,确保 API Keys 的安全非常重要。 我们建议您不要将任何 API 密钥直接存储在您正在使用的代码中,因为将这些详细信息提交到公共存储库可能会导致不必要的费用成本和问题。 - -![Dialog showing buttons to create a codespace](../../images/who-will-pay.webp?WT.mc_id=academic-105485-koreyst) - -## 在您的设备上本地运行 - -要在本地运行代码,您需要安装某个版本的 Python。 个人建议安装 **[miniconda](https://conda.io/en/latest/miniconda.html?WT.mc_id=academic-105485-koreyst)** - 这是相当轻量级的安装,支持不同 Python **虚拟环境** 的 `conda` 包管理器 。 - -安装 miniconda 后,您需要克隆存储库并创建一个用于本课程的 Python 虚拟环境: - -```bash -git clone http://github.com/microsoft/ai-for-beginners -cd ai-for-beginners -conda env create --name ai4beg --file .devcontainer/environment.yml -conda activate ai4beg -``` - -### 使用 Visual Studio Code Python 插件 - -学习本课程,建议使用 [Visual Studio Code](https://code.visualstudio.com/?WT.mc_id=academic-77998-bethanycheum) 的 [Python 插件](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-77998-bethanycheum). - -> **注意**:在 VS Code 中克隆并打开该目录后,会自动建议您安装 Python 插件。 还必须如上所述要求安装 miniconda。 - -> **注意**:如果 VS Code 建议您在容器中重新打开 Repo,您需要拒绝此操作以使用本地 Python 安装的环境。 - -### 在浏览器中使用 Jupyter - -您还可以直接从自己计算机上的浏览器使用 Jupyter 环境。 实际上,经典的 Jupyter 和 Jupyer Hub 都提供了相当便捷的开发环境,具有代码自动完成、代码高亮等功能。 - -要在本地启动 Jupyter,请转到课程目录,然后执行: - -```bash -jupyter notebook -``` -or -```bash -jupyterhub -``` -然后,您可以导航到任何“.ipynb”文件,打开它们进行学习。 - -### 在容器中运行 - -我们也可以在容器中运行代码。 由于我们的 Repo 包含特殊的 “.devcontainer” 文件夹,该文件夹指示如何为此 Repo 创建容器,因此 VS Code 将允许您重新打开容器中的代码。 这需要安装 Docker,而且会比较复杂,所以我们推荐给更有经验的用户。 - -使用 GitHub Codespaces 时确保 API Secrets 安全的最佳方法之一是使用 Codespace Secrets。 请按照本指南了解如何[管理 Codespace Secrets ](https://docs.github.com/en/codespaces/managing-your-codespaces/managing-secrets-for-your-codespaces?WT.mc_id=academic-105485-koreyst)。 - -## 相关课程和技术要求 - -该课程有 6 节基础课和 6 节相关的编程课。 - -对于编程课,我们使用 Azure OpenAI Service 。 您将需要访问 Azure OpenAI 服务和 API Key 才能运行此代码。 您可以通过这里 [完成此申请](https://customervoice.microsoft.com/Pages/ResponsePage.aspx?id=v4j5cvGGr0GRqy180BHbR7en2Ais5pxKtso_Pz4b1_xUOFA5Qk1UWDRBMjg0WFhPMkIzTzhKQ1dWNyQlQCN0PWcu&culture=en-us&country=us?WT.mc_id=academic-105485-koreyst) 来申请访问权限。 - -当您等待审核时,每个编码课程还包含一个“README.md”文件,您可以在里面查看代码和相关内容 - -## 首次使用 Azure OpenAI Service - -如果这是您第一次使用 Azure OpenAI Service,请按照本指南了解如何[创建和部署 an Azure OpenAI Service 资源.](https://learn.microsoft.com/azure/ai-services/openai/how-to/create-resource?pivots=web-portal&WT.mc_id=academic-105485-koreyst) - -## 找到志同道合的人 - -我们在官方 [AI Community Discord server](https://aka.ms/genai-discord?WT.mc_id=academic-105485-koreyst) 中创建了学习频道,用于结识其他学习者。 这是与其他志同道合的企业家、学生以及任何希望在生成式人工智能领域提升水平的人建立联系的方式。 - -[![加入 Discord 频道](https://dcbadge.limes.pink/api/server/ByRwuEEgH4)](https://aka.ms/genai-discord?WT.mc_id=academic-105485-koreyst) - -项目团队也将在这个 Discord server 上为任何学习者提供帮助。 - -## 贡献该内容 - -本课程是一项开源计划。 如果您发现需要改进的地方或问题,请创建 [Pull Request](https://github.com/microsoft/generative-ai-for-beginners/pulls?WT.mc_id=academic-105485-koreyst) 或记录 [GitHub 问题](https://github.com/microsoft/generative-ai-for-beginners/issues?WT.mc_id=academic-105485-koreyst)。 - -课程项目团队将跟踪所有贡献,为开源做出贡献是在生成人工智能领域建立职业生涯的绝佳方式。 - -大多数贡献都要求您遵循贡献者许可协议 (CLA),声明您有权并且实际上授予我们使用您的贡献的权利。 有关详细信息,请访问[CLA,贡献者许可协议网站](https://cla.microsoft.com?WT.mc_id=academic-105485-koreyst)。 - -重要提示:翻译此存储库中的文本时,请确保不使用机器翻译。 我们将通过社区验证翻译,因此请用您熟悉的语言进行翻译。 - -当您提交拉取请求时,CLA-bot 将自动确定您是否需要提供 CLA 并适当地描述 PR(例如标签、评论)。 只需按照机器人提供的说明进行操作即可。 您只需使用我们的 CLA 在所有存储库中执行一次此操作。 - -该项目采用了微软开源行为准则。 有关更多信息,请阅读行为准则常见问题解答,或联系 [电子邮件 opencode](opencode@microsoft.com) 提出任何其他问题或意见。 - -## 我们一起开始进入学习 - -现在您已经完成了完成本课程所需的设置步骤,让我们开始进入[生成式人工智能和 LLMs 简介](../../../01-introduction-to-genai/translations/cn/README.md?WT.mc_id=academic-105485-koreyst)。 diff --git a/00-course-setup/translations/es-mx/README.md b/00-course-setup/translations/es-mx/README.md deleted file mode 100644 index 5a33c9ea7f..0000000000 --- a/00-course-setup/translations/es-mx/README.md +++ /dev/null @@ -1,141 +0,0 @@ -# Comenzando con este curso - -¡Estamos muy emocionados de que comiences este curso y ver con qué te inspiras para crear con la ayuda de la Inteligencia Artificial Generativa! - -Para apoyarte, hemos creado esta página que describe los pasos de configuración, los requisitos técnicos y cómo obtener ayuda cuando la necesites. - -## Pasos de configuración - -Para comenzar este curso, deberás completar los siguientes pasos. - -### 1. Fork (Bifurca) este repo - -[Fork (Bifurca) todo el repositorio](https://github.com/microsoft/generative-ai-for-beginners/fork?WT.mc_id=academic-105485-koreyst) A tu propia cuenta de GitHub para poder modificar cualquier código y completar los desafíos. También puedes [marcar con una estrella (🌟) este repositorio](https://docs.github.com/en/get-started/exploring-projects-on-github/saving-repositories-with-stars?WT.mc_id=academic-105485-koreyst) para encontrarlo más fácilmente. - -### 2. Crea un espacio en codespace - -Para evitar problemas de dependencias al ejecutar el código, recomendamos realizar este curso en un codespace de GitHub. - -Esto se puede hacer seleccionando la opción `Code` en tu propia versión bifurcada (forked) de este repositorio y luego seleccionando la opción **Codespaces** . - -### 3. Almacena tus claves de API - -Mantenen seguras y protegidas tus claves de API es importante al desarrollar cualquier tipo de aplicación. Te recomendamos no almacenar las claves de API directamente en el código con el que estás trabajando, ya que comprometer esos detalles en un repositorio público podría ocasionar costos no deseados e issues. - -![Diálogo mostrando botones para crear un espacio de código](../../images/who-will-pay.webp?WT.mc_id=academic-105485-koreyst) - -## Cómo ejecutar localmente en tu computadora - -Para ejecutar el código localmente en tu computadora, necesitarás tener alguna versión de [Python instalada](https://www.python.org/downloads/?WT.mc_id=academic-105485-koreyst). - -Para utilizar el repositorio, necesitas clonarlo: - -```shell -git clone https://github.com/microsoft/generative-ai-for-beginners -cd generative-ai-for-beginners -``` - -Ahora tienes todo listo y puedes comenzar a aprender y trabajar con el código. - -### Instalación de Miniconda (paso opcional) - -Hay ventajas en instalar **[miniconda](https://conda.io/en/latest/miniconda.html?WT.mc_id=academic-105485-koreyst)** - es una instalación bastante ligera que admite `conda` administrador de paquetes para diferentes versiones de Python **virtual environments**. `conda` facilita la instalación y el cambio entre diferentes versiones de Python y paquetes, además de permitir la instalación de paquetes que no están disponibles a través de `pip`. - -Después de instalar Miniconda, necesitas clonar el repositorio (si aún no lo has hecho) y crear un entorno virtual para utilizar en este curso: - -Antes de ejecutar el siguiente paso, asegúrate primero de tener un *environment.yml* file. El *environment.yml* archivo se utiliza para crear un entorno conda con las dependencias necesarias y puede lucir así: - -```yml -name: -channels: - - defaults -dependencies: -- python= -- openai -- python-dotenv -``` - -Puedes reemplazar `` con el nombre de tu entorno conda, y `` con la versión de Python que desees usar. Coloca tu archivo *environment.yml* creado -en la capeta *.devcontainer* de tu repo. - -Ahora que idealmente has creado un archivo *environment.yml* , puedes crear un entorno conda con el siguiente comando: - -```bash -conda env create --name ai4beg --file .devcontainer/environment.yml -conda activate ai4beg -``` - -Consulta este enlace sobre cómo crear un [conda environments](https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html?WT.mc_id=academic-105485-koreyst) -si encuentras algún problema. - - -### Usando Visual Studio Code con la Extensión de Python - - -Probablemente la mejor manera de usar el plan de estudios sea abrirlo en [Visual Studio Code](https://code.visualstudio.com/?WT.mc_id=academic-105485-koreyst) con [Python Extension](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-105485-koreyst). - -> **Nota**: Una vez que clones y abras el directorio en VS Code, automáticamente te sugerirá instalar las extensiones de Python. También tendrás que instalar Miniconda como se describe arriba. - -> **Nota**: Si VS Code te sugiere volver a abrir el repositorio en un contenedor, debes rechazarlo para utilizar la instalación local de Python. - -### Usando Jupyter en el navegador - -También puedes utilizar el entorno Jupyter directamente desde el navegador en tu propia computadora. De hecho, tanto Jupyter clásico como Jupyter Hub ofrecen un entorno de desarrollo bastante conveniente con autocompletado, resaltado de código, etc. - -Para iniciar Jupyter localmente, ve al directorio del curso y ejecuta: - -```bash -jupyter notebook -``` - -or - -```bash -jupyterhub -``` - -Luego puedes navegar a cualquiera de los `.ipynb` archivos, abrirlos y empezar a trabajar. - -### Ejecutando en un contenedor - -Una alternativa a la instalación de Python sería ejecutar el código en un contenedor. Dado que nuestro repositorio contiene una carpeta especial `.devcontainer` que indica cómo construir un contenedor para este repositorio, VS Code te ofrecería volver a abrir el código en un contenedor. Esto requerirá la instalación de Docker y será más complejo, así que lo recomendamos para usuarios más experimentados. - -Una de las mejores formas de mantener seguras tus claves de API al usar GitHub Codespaces es mediante el uso de Secrets (Secretos) de Codespace. Sigue esta guía sobre cómo [Administrar secrets para tus codespaces.](https://docs.github.com/en/codespaces/managing-your-codespaces/managing-secrets-for-your-codespaces?WT.mc_id=academic-105485-koreyst). - -## Lecciones y Requisitos Técnicos - -El curso consta de 6 lecciones conceptuales y 6 lecciones de codificación. - -Para las lecciones de codificación, estamos utilizando el servicio Azure OpenAI. Necesitarás acceso al servicio Azure OpenAI y una clave de API para ejecutar este código. Puedes solicitar acceso [completando esta solicitud](https://azure.microsoft.com/products/ai-services/openai-service?WT.mc_id=academic-105485-koreyst). - -Mientras esperas que procesen tu solicitud, cada lección de codificación también incluye un archivo `README.md` donde puedes ver el código y los resultados. - -## Usando el Servicio Azure OpenAI por Primera Vez - -Si es la primera vez que trabajas con el servicio Azure OpenAI, por favor sigue esta guía sobre cómo [crear y desplegar un recurso de Azure OpenAI Service.](https://learn.microsoft.com/azure/ai-services/openai/how-to/create-resource?pivots=web-portal&WT.mc_id=academic-105485-koreyst) - -## Conocer a Otros Aprendices - -Hemos creado canales en nuestro oficial [Servidor de Discord de la Comunidad de IA](https://aka.ms/genai-discord?WT.mc_id=academic-105485-koreyst) para conocer a otros estudiantes. Esta es una excelente manera de conectarte con otros emprendedores, creadores, estudiantes y cualquier persona interesada en avanzar en el campo de la Inteligencia Artificial Generativa. - -[![Unete al canal de Discord](https://dcbadge.limes.pink/api/server/ByRwuEEgH4)](https://aka.ms/genai-discord?WT.mc_id=academic-105485-koreyst) - -El equipo del proyecto también estará en este servidor de Discord para ayudar a cualquier estudiante. - -## Contribuye - -Este curso es una iniciativa de código abierto. Si encuentras áreas de mejora o problemas, por favor crea un [Pull Request](https://github.com/microsoft/generative-ai-for-beginners/pulls?WT.mc_id=academic-105485-koreyst) o registrar un [GitHub issue](https://github.com/microsoft/generative-ai-for-beginners/issues?WT.mc_id=academic-105485-koreyst). - -El equipo del proyecto estará siguiendo todas las contribuciones y contribuir al código abierto es una manera increíble de construir tu carrera en la Inteligencia Artificial Generativa. - -La mayoría de las contribuciones requieren que aceptes un Acuerdo de Licencia para Colaboradores (CLA) en el que declaras que tienes derecho, y de hecho lo haces, a otorgarnos los derechos para usar tu contribución. Para más detalles, visita [CLA, sitio web del Acuerdo de Licencia para Colaboradores](https://cla.microsoft.com?WT.mc_id=academic-105485-koreyst). - -Importante: al traducir texto en este repositorio, asegúrate de no utilizar traducción automática. Verificaremos las traducciones a través de la comunidad, así que por favor ofrécete como voluntario solo para traducir a idiomas en los que seas competente. - -Cuando envíes un pull request, un bot del Acuerdo de Licencia para Colaboradores (CLA-bot) determinará automáticamente si necesitas proporcionar un CLA y decorará la PR apropiadamente (por ejemplo, etiqueta, comentario). Simplemente sigue las instrucciones proporcionadas por el bot. Solo necesitarás hacer esto una vez en todos los repositorios que utilicen nuestro CLA. - -Este proyecto ha adoptado el [Código de Conducta de Código Abierto de Microsoft](https://opensource.microsoft.com/codeofconduct/?WT.mc_id=academic-105485-koreyst). Para más información, lee las Preguntas Frecuentes del Código de Conducta o contacta al [opencode Email](opencode@microsoft.com) con cualquier pregunta o comentario adicional. - -## Empecemos 😄 - -Ahora que has completado los pasos necesarios para terminar este curso, comencemos obteniendo una [Introducción a la Inteligencia Artificial Generativa y Modelos de Lenguaje de Aprendizaje Profundo (LLMs, por sus siglas en inglés).](../../../01-introduction-to-genai/README.md?WT.mc_id=academic-105485-koreyst). diff --git a/00-course-setup/translations/ja-jp/README.md b/00-course-setup/translations/ja-jp/README.md deleted file mode 100644 index 747b403ca6..0000000000 --- a/00-course-setup/translations/ja-jp/README.md +++ /dev/null @@ -1,142 +0,0 @@ -# このコースを始めるための準備 - -私たちは、皆様がこのコースを開始して、生成 AI を使ってどのような物を作り出してくださるのか、それを見るのがとても楽しみです! - -皆様がこのレッスンを成功できるよう、セットアップ手順と技術要件そして必要な時に必要な情報を得るための方法を、このページにまとめました。 - -## セットアップ手順 - -このコースを始める前に、下記の手順を実施してください。 - -### 1. リポジトリのフォーク - -コードを修正したり、レッスン課題を終了するため、このリポジトリをご自身の GitHub アカウントに[フォーク](https://github.com/microsoft/generative-ai-for-beginners/fork?WT.mc_id=academic-105485-yoterada)してください。また後から、簡単にこのリポジトリを見つけられるように、[スター(🌟)をつける](https://docs.github.com/en/get-started/exploring-projects-on-github/saving-repositories-with-stars?WT.mc_id=academic-105485-yoterada)のもお勧めです。 - -### 2. Codespaces を作成 - -コードを実行する際、依存関係の問題を避けるため、GitHub Codespaces で、このコースの実行をお勧めします。 - -Codespaces は、フォークしたリポジトリから、下記の緑のボタンの `Code` を選択し、**Codespaces** オプションを選択し作成できます。 - -![codespaceを作成するボタンを示すダイアログ](../../images/who-will-pay.webp?WT.mc_id=academic-105485-yoterada) - -> [!NOTE] -> (訳者追記): -Organization に所属しないユーザーが Fork したリポジトリで Codespace を利用する場合、[Codespace の使用料は個人のアカウントに課金されます](https://docs.github.com/ja/billing/managing-billing-for-github-codespaces/about-billing-for-github-codespaces?WT.mc_id=academic-105485-yoterada#limiting-the-number-of-organization-owned-codespaces)。 - -### 3. API キーの保管 - -アプリケーション開発において、API キーは安全に扱う必要があります。公開リポジトリにこうした機密情報をコミットすると、不正利用による想定外のコストや問題が発生する可能性があります。そこで、作業中のソース・コードに直接 API キーを保存しないようにしてください。 - -## ローカルのコンピュータで実行する方法 - -ローカルのコンピュータ上で、コードを実行するためには、[Python のインストール](https://www.python.org/downloads/?WT.mc_id=academic-105485-yoterada)が必要です。 - -そして、下記のようにリポジトリをクローンしてください。 - -```shell -git clone https://github.com/microsoft/generative-ai-for-beginners -cd generative-ai-for-beginners -``` - -以上で準備が整ったので、学習と作業を開始できます。 - -### miniconda のインストール (オプションの手順) - -下記は省略可能な手順ですが、可能であれば **[miniconda](https://conda.io/en/latest/miniconda.html?WT.mc_id=academic-105485-yoterada)** のインストールをお勧めします。これは、異なる Python **仮想環境**で `conda` パッケージ・マネージャをサポートする、比較的軽量なインストーラーです。`conda` を利用すると、異なる Python のバージョンやパッケージを簡単にインストールでき、切り替えもできます。さらに、`pip` を利用して公開されているパッケージのインストールもできます。 - -miniconda をインストールした後、リポジトリをクローンしてください(まだ行っていない場合)。そして、このレッスン用に下記の手順で新たな仮想環境を作成してください: - -まず 「*environment.yml*」ファイルが存在しているかご確認ください。「*environment.yml*」ファイルは、conda 環境の構築に必要な依存関係を定義した設定ファイルで、下記の内容を記述します: - -```yml -name: -channels: - - defaults -dependencies: -- python= -- openai -- python-dotenv -``` - -`` には、この conda 環境名を設定し、`` には使用する Python のバージョンを記述してください。作成した「*environment.yml*」ファイルはリポジトリ内の「*.devcontainer*」フォルダ配下に置いてください。 - -「*environment.yml*」ファイルを作成した後、下記のコマンドを実行し、conda 環境を作成します: - -```bash -conda env create --name ai4beg --file .devcontainer/environment.yml -conda activate ai4beg -``` - -仮に何らかの問題が発生した場合は、ユーザ・ガイドの [conda 環境](https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html?WT.mc_id=academic-105485-yoterada)をご参照ください。 - -### Python の拡張機能をインストールした Visual Studio Code の使用 - -このカリキュラムを進める際には、[Python の拡張機能](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-105485-yoterada)をインストールした [Visual Studio Code](https://code.visualstudio.com/?WT.mc_id=academic-105485-yoterada) の使用を特にお勧めします。 - -> **ご注意**: クローンした後、VS Code でディレクトリを開くと、自動的に Python 拡張機能のインストールが提案されます。上記で説明したように miniconda もインストールしてください。 - -> **ご注意**: ローカルにインストールした Python を使いたいと考えている場合は、VS Code からコンテナでリポジトリを開く提案があった際に、その提案を却下してください。 - -### ブラウザで Jupyter の使用 - -ご自分のコンピュータの Web ブラウザを利用して直接 Jupyter 環境を利用できます。実際クラシックな Jupyter と Jupyter Hub は、自動補完、コード・ハイライトなどの機能を備えた非常に便利な開発環境を提供します。 - -Jupyter をローカルで起動するには、レッスン・コースのディレクトリに移動し、下記のコマンドを実行します: - -```bash -jupyter notebook -``` - -もしくは - -```bash -jupyterhub -``` - -次に任意の `.ipynb` ファイルに移動し、ファイルを開いて作業を開始します。 - -### コンテナでの実行 - -ローカル環境に Python をインストールする代わりに、コンテナ上でも実行できます。このプロジェクトを fork するとレポジトリ内に、コンテナ・イメージを構築するために必要な設定を含む `.devcontainer` フォルダが存在します。そして VS Code は設定ファイルに記載した内容を元に、コンテナ上での実行を提案します。ローカルでコンテナを実行する為には、事前に Docker のインストールと起動が必要です。ローカルでのコンテナ環境のセットアップは少し複雑になるため経験豊富な利用者にお勧めします。 - -GitHub Codespaces を使用して API キーを安全に管理するためには、Codespace Secrets の利用をお勧めします。[Ccodespaces のシークレットを管理](https://docs.github.com/en/codespaces/managing-your-codespaces/managing-secrets-for-your-codespaces?WT.mc_id=academic-105485-yoterada)する方法については、リンク先のガイドをご参照ください。 - -## レッスンと技術要件 - -このコースは、6 つの概念レッスンと 6 つのコーディング・レッスンが含まれます。 - -コーディング・レッスンでは、Azure OpenAI サービスを使用します。コードを実行するには、Azure OpenAI サービスへのアクセス権限と API キーが必要です。[こちらのアプリケーション・フォームに記入](https://go.microsoft.com/fwlink/?linkid=2222006&clcid=0x409?WT.mc_id=academic-105485-yoterada)し Azure OpenAI のアクセス申請を行ってください。 - -アプリケーション・フォームの申請処理が完了するまで、何もできないわけでは決してありません。各レッスン中に、`README.md` ファイルとサンプル・コードが含まれていますので、申請処理が完了する前からレッスンの内容をご確認いただけます。 - -## Azure OpenAI サービスをはじめて使用する場合 - -仮に Azure OpenAI サービスをはじめて使用する場合は、[Azure OpenAI サービスのリソースを作成しデプロイする](https://learn.microsoft.com/azure/ai-services/openai/how-to/create-resource?pivots=web-portal&WT.mc_id=academic-105485-yoterada)必要があります。リソースの作成方法はリンク先のガイドをご参照ください。 - -## 他の学習者との交流 - -他の学習者と交流できるように、私たちは[公式の AI Discord サーバー](https://aka.ms/genai-discord?WT.mc_id=academic-105485-yoterada)にチャンネルを作成しました。生成 AI の技術を向上したいと考える他の方々、たとえば、志の同じ起業家、開発者、学生、そして、どなたとでも交流していただく事が可能です。 - -[![Discord チャンネルに参加](https://dcbadge.limes.pink/api/server/ByRwuEEgH4)](https://aka.ms/genai-discord?WT.mc_id=academic-105485-yoterada) - -このプロジェクトを開発したチーム・メンバーも、この Discord サーバーに参加し学習者を支援しています。 - -## 貢献 - -本レッスンはオープンソース・プロジェクトとして公開しています。仮に改善すべき点や問題を発見したら、[プルリクエスト](https://github.com/microsoft/generative-ai-for-beginners/pulls?WT.mc_id=academic-105485-yoterada)をお送りいただくか、もしくは、[GitHub の Issue](https://github.com/microsoft/generative-ai-for-beginners/issues?WT.mc_id=academic-105485-yoterada) で報告していただければ誠に幸いです。 - -このプロジェクトの開発チームは全ての貢献を確認しています。そしてオープン・ソース・プロジェクトに貢献すると、生成 AI の分野で新しいキャリアを築ける可能性もあります。 - -通常、貢献者にはコントリビューター・ライセンス契約(CLA)へ同意して頂く必要があります。この契約によって、貢献者は自らの権利を私たちに譲渡し、私たちがそのご貢献いただいた成果物を利用する権利を得るための契約を行います。詳細については [CLA、コントリビューターライセンス契約のウェブサイト](https://cla.microsoft.com?WT.mc_id=academic-105485-yoterada)をご覧ください。 - -重要なお知らせ: -このリポジトリ内に含まれるテキストを翻訳する場合、機械翻訳の使用は避けてください。翻訳内容はコミュニティで検証するため、ご自身が熟知している言語でのみ翻訳作業にご協力ください。 - -プル・リクエストを提出すると、CLA-bot が自動的に CLA(コントリビューター・ライセンス契約)の提出が必要かどうかを判断し、プル・リクエストに適切なマーク(例:ラベル、コメント)を付けます。bot の指示にお従いください。この処理は、CLA を使用するすべてのリポジトリで一度だけ行う必要があります。 - -このプロジェクトは、[Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/?WT.mc_id=academic-105485-yoterada) を採用しています。詳細は、Code of Conduct FAQ をご覧いただくか、追加の質問やコメントがある場合は、 [opencode 宛てにメールで](mailto:opencode@microsoft.com)お問い合わせください。 - -## それでは、始めましょう - -このレッスンを修了するために必要な手順をすべて完了したので、[生成 AI と大規模言語モデルの紹介](../../../01-introduction-to-genai/translations/ja-jp/README.md?WT.mc_id=academic-105485-yoterada) から始めましょう。 diff --git a/00-course-setup/translations/ko/README.md b/00-course-setup/translations/ko/README.md deleted file mode 100644 index 4f945d35a7..0000000000 --- a/00-course-setup/translations/ko/README.md +++ /dev/null @@ -1,137 +0,0 @@ -# 코스 시작하기 - -이 코스를 시작하시게 되어 정말 기쁩니다. 여러분이 Generative AI와 함께 무엇을 영감받아 만들어낼지 기대됩니다! - -여러분들의 시간을 성공적으로 보내기 위해, 코스 환경 설정, 기술적 요구사항, 도움이 필요한 경우 어떻게 도움을 받을 수 있는지 안내하는 페이지를 만들었습니다. - -## 코스 환경 설정하기 - -이 과정을 시작하려면 다음 단계를 완료해야 합니다. - - -### 1. 레포지토리 포크하기 - -[레포지토리를 포크](https://github.com/microsoft/generative-ai-for-beginners/fork?WT.mc_id=academic-105485-koreyst) 하여 자신의 Github 계정에 업로드하여 코드를 변경하고 과제를 완료할 수 있습니다. 또한 [레포지토리에 스타 (🌟)를 추가](https://docs.github.com/en/get-started/exploring-projects-on-github/saving-repositories-with-stars?WT.mc_id=academic-105485-koreyst) 하여 쉽게 찾아볼 수 있도록 할 수 있습니다. - -### 2. Codespace 만들기 - -코드를 실행하는 동안 의존성 문제를 피하기 위해 Github codepsace를 활용하여 코스를 진행하는 것을 추천합니다. - -이를 위해 포크한 레포지토리에서 `Code` 옵션을 선택하고 **Codespaces** 옵션을 선택하여 생성할 수 있습니다. - -### 3. API 키 저장하기 - -어떠한 종류의 어플리케이션을 개발하든지 API 키를 안전하게 보관하는 것은 중요합니다. 코드에 직접 API 키를 저장하지 않는 것을 권장하며, 이들을 public 레포지토리에 커밋하는 것은 예상치 못한 비용 및 문제를 초래할 수 있습니다. - -![Dialog showing buttons to create a codespace](../../images/who-will-pay.webp?WT.mc_id=academic-105485-koreyst) - -## 로컬 컴퓨터에서 실행하는 방법 - -컴퓨터에서 로컬로 코드를 실행하려면 [Python](https://www.python.org/downloads/?WT.mc_id=academic-105485-koreyst)이 설치되어 있어야 합니다. - -이후 레포지토리를 사용하려면 이를 클론해야 합니다. - -```shell -git clone https://github.com/microsoft/generative-ai-for-beginners -cd generative-ai-for-beginners -``` - -이제 학습을 시작하고 코드와 작업을 진행할 수 있습니다. - -### miniconda 설치하기 (선택) -[miniconda](https://conda.io/en/latest/miniconda.html?WT.mc_id=academic-105485-koreyst)를 설치하면 여러 이점이 있습니다. - 이는 상대적으로 가벼운 설치로 다양한 Python **가상 환경**에 대한 `conda` 패키지 매니저를 지원합니다. `conda`는 다른 Python 버전 및 패키지 간에 쉽게 설치 및 전환할 수 있으며, `pip`를 통해 사용할 수 없는 패키지도 쉽게 설치할 수 있습니다. - -miniconda를 설치한 후, 레포지토리를 clone하고, 이 코스에 사용할 가상 환경을 생성해야 합니다. - -아래 단계를 실행하기 전에 먼저 *environment.yml*이 있는지 확인하세요. *environment.yml* 파일은 필요한 의존성이 포함된 conda 환경을 만드는데 사용되며, 다음과 같이 제공될 수 있습니다. - -```yml -name: -channels: - - defaults -dependencies: -- python= -- openai -- python-dotenv -``` - -``을 여러분의 conda 환경 이름으로 바꿀 수 있으며, ``에는 사용하고 싶은 Python 버전을 기입하면 됩니다. 생성한 *environment.yml* 파일을 레포지토리의 *.devcontainer* 폴더 안에 위치하도록 하세요. - -이제 *environment.yml*을 만들었다면, 다음 명령을 사용하여 conda 환경을 생성할 수 있습니다. - -```bash -conda env create --name ai4beg --file .devcontainer/environment.yml -conda activate ai4beg -``` - -문제가 발생하면 [conda 환경 생성](https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html?WT.mc_id=academic-105485-koreyst)에 대한 링크를 참고하세요. - -### 파이썬 Extension과 함께 Visual Studio Code 사용하기 - -Probably the best way to use the curriculum is to open it in [Visual Studio Code](https://code.visualstudio.com/?WT.mc_id=academic-105485-koreyst) with [Python Extension](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-105485-koreyst). - -> **Note**: “VS Code에서 디렉토리를 클론하고 열면 자동으로 Python 확장을 설치하라는 제안이 나타납니다. 또한 위에서 설명한대로 miniconda도 설치해야 합니다. - -> **Note**: VS Code가 컨테이너에서 저장소를 다시 열 것을 제안하면, 로컬 파이썬 설치를 사용하기 위해 거절해야 합니다. - -### 브라우저에서 Jupyter 사용하기 - -브라우저에서 직접 자신의 컴퓨터에서 Jupyter 환경을 사용할 수도 있습니다. 기존 Jupyter와 Jupyter Hub 모두 자동 완성, 코드 강조 등을 제공하는 매우 편리한 개발 환경을 제공합니다. - -Jupyter를 로컬에서 시작하려면, 코스의 디렉토리로 이동하고 다음을 실행하십시오: - -```bash -jupyter notebook -``` - -또는 - -```bash -jupyterhub -``` - -그런 다음 .ipynb 파일 중 어느 것으로든 이동하여 열고 작업을 시작할 수 있습니다. - -### 컨테이너에서 실행하기 - -Python 설치의 대안으로 컨테이너에서 코드를 실행할 수 있습니다. 저장소에는 이 저장소에 대한 컨테이너를 구축할 수 있는 특별한 `.devcontainer` 폴더가 포함되어 있기 때문에, VS Code는 코드를 컨테이너에서 다시 열 것을 제안할 것입니다. 이것은 Docker 설치를 필요로 하며, 또한 더 복잡할 수 있으므로, 우리는 이것을 더 경험 있는 사용자들에게 추천합니다. - -GitHub Codespaces를 사용할 때 API 키를 안전하게 유지하는 가장 좋은 방법 중 하나는 Codespace Secrets를 사용하는 것입니다. 해당 가이드를 따라서 [코드스페이스에 대한 secrets을 관리](https://docs.github.com/en/codespaces/managing-your-codespaces/managing-secrets-for-your-codespaces?WT.mc_id=academic-105485-koreyst)하는 방법을 알아보세요. - -## 수업과 기술 요구 사항 - -해당 코스에는 6개의 개념 수업와 6개의 코딩 수업이 있습니다. - -코딩 수업에서는 Azure OpenAI 서비스를 사용합니다. 이 코드를 실행하려면 Azure OpenAI 서비스에 접근할 수 있어야 하고 API 키가 필요합니다. [양식](https://azure.microsoft.com/products/ai-services/openai-service?WT.mc_id=academic-105485-koreyst)을 작성하여 접근 권한을 신청할 수 있습니다. - -신청이 처리되기를 기다리는 동안, 각 코딩 수업에는 코드와 출력을 볼 수 있는 `README.md` 파일이 포함되어 있습니다. - -## 처음으로 Azure OpenAI 서비스를 사용하기 - - Azure OpenAI 서비스를 처음 사용하는 경우, [Azure OpenAI 서비스 리소스를 생성하고 배포하는 방법](https://learn.microsoft.com/azure/ai-services/openai/how-to/create-resource?pivots=web-portal&WT.mc_id=academic-105485-koreyst)에 대한 가이드를 따라 주세요. - -## 다른 학습자들 만나기 - -[공식 AI 커뮤니티 디스코드 서버](https://aka.ms/genai-discord?WT.mc_id=academic-105485-koreyst)에 다른 학습자들과 만날 수 있는 채널을 만들었습니다. 여기서 같은 마음을 가진 창업가, 빌더, 학생, 그리고 생성형 AI에서 한 단계 더 나아가고자 하는 모든 사람들과 네트워킹할 수 있습니다. - -[![Join discord channel](https://dcbadge.limes.pink/api/server/ByRwuEEgH4)](https://aka.ms/genai-discord?WT.mc_id=academic-105485-koreyst) - -프로젝트 팀도 해당 디스코드 서버에 있어서 어떤 학습자든 도와드릴 수 있습니다. - -## 기여하기 - -해당 코스는 오픈 소스로 관리됩니다. 개선할 부분이나 문제가 있으면 [Pull Request](https://github.com/microsoft/generative-ai-for-beginners/pulls?WT.mc_id=academic-105485-koreyst)를 생성하거나 [Github issue](https://github.com/microsoft/generative-ai-for-beginners/issues?WT.mc_id=academic-105485-koreyst)를 기록해 주세요. - -프로젝트 팀은 모든 기여를 추적하고 있으며, 오픈 소스에 기여하는 것은 생성형 AI 분야에서 커리어를 구축하는 데 훌륭한 방법입니다. - -대부분의 기여는 CLA(Contributor License Agreement)에 동의해야 합니다. CLA는 귀하가 귀하의 기여를 사용할 권리가 있으며 실제로 그렇게 하는 것에 동의한다고 선언하는 것입니다. 자세한 내용은 [CLA, Contributor License Agreement 웹사이트](https://cla.microsoft.com?WT.mc_id=academic-105485-koreyst)를 방문하세요. - -중요: 이 저장소의 텍스트를 번역할 때 기계 번역을 사용하지 마세요. 커뮤니티를 통해 번역을 검증할 것이므로, 귀하가 능숙한 언어로만 번역에 자원해 주세요. - -풀 리퀘스트를 제출하면 CLA-bot이 자동으로 귀하가 CLA를 제공해야 하는지 여부를 결정하고 적절하게 PR을 꾸며줍니다(예: 레이블, 코멘트). 봇이 제공하는 지침을 따르기만 하면 됩니다. CLA를 사용하는 모든 저장소에서 한 번만 이 작업을 수행하면 됩니다. - -해당 프로젝트는 Microsoft 오픈 소스 행동 강령을 따릅니다. 자세한 내용은 행동 강령 FAQ를 읽거나 추가적인 질문이나 의견이 있으면 [Email opencode](opencode@microsoft.com)으로 연락하세요. - -## 시작해봅시다 - -해당 코스에 필요한 단계를 모두 완료했으니, [생성형 AI와 LLM 소개](../../../01-introduction-to-genai/translations/ko/README.md?WT.mc_id=academic-105485-koreyst)를 통해 시작해 보세요. \ No newline at end of file diff --git a/00-course-setup/translations/pl/README.md b/00-course-setup/translations/pl/README.md deleted file mode 100644 index 635f64b874..0000000000 --- a/00-course-setup/translations/pl/README.md +++ /dev/null @@ -1,214 +0,0 @@ -# Rozpoczęcie Pracy z Tym Kursem - -Jesteśmy bardzo podekscytowani, że rozpoczynasz ten kurs i nie możemy się doczekać, co zostaniesz zainspirowany do zbudowania z pomocą Generatywnej SI! - -Aby zapewnić Twój sukces, ta strona opisuje kroki konfiguracyjne, wymagania techniczne i gdzie uzyskać pomoc, jeśli będzie potrzebna. - -## Kroki Konfiguracyjne - -Aby rozpocząć ten kurs, będziesz musiał wykonać następujące kroki. - -### 1. Wykonaj Fork Tego Repozytorium - -[Utwórz fork całego repozytorium](https://github.com/microsoft/generative-ai-for-beginners/fork?WT.mc_id=academic-105485-koreyst) na swoje własne konto GitHub, aby móc zmieniać kod i wykonywać zadania. Możesz również [oznaczyć gwiazdką (🌟) to repozytorium](https://docs.github.com/en/get-started/exploring-projects-on-github/saving-repositories-with-stars?WT.mc_id=academic-105485-koreyst), aby łatwiej je znaleźć oraz powiązane repozytoria. - -### 2. Utwórz Codespace - -Aby uniknąć problemów z zależnościami podczas uruchamiania kodu, zalecamy uruchamianie tego kursu w [GitHub Codespaces](https://github.com/features/codespaces?WT.mc_id=academic-105485-koreyst). - -Można go utworzyć, wybierając opcję `Code` w swojej sforkowanej wersji tego repozytorium i wybierając opcję **Codespaces**. - -![Dialog pokazujący przyciski do utworzenia codespace](../../images/who-will-pay.webp?WT.mc_id=academic-105485-koreyst) - -### 3. Przechowywanie Kluczy API - -Utrzymywanie twoich kluczy API w bezpieczeństwie jest ważne podczas budowania jakiejkolwiek aplikacji. Zalecamy, aby nie przechowywać kluczy API bezpośrednio w kodzie. Zatwierdzenie tych szczegółów do publicznego repozytorium może skutkować problemami z bezpieczeństwem i nawet niepożądanymi kosztami, jeśli zostaną wykorzystane przez osoby o złych zamiarach. -Oto przewodnik krok po kroku, jak utworzyć plik `.env` dla Pythona i dodać `GITHUB_TOKEN`: - -1. **Przejdź do Katalogu Twojego Projektu**: Otwórz terminal lub wiersz poleceń i przejdź do głównego katalogu projektu, gdzie chcesz utworzyć plik `.env`. - - ```bash - cd ścieżka/do/twojego/projektu - ``` - -2. **Utwórz Plik `.env`**: Użyj swojego ulubionego edytora tekstu, aby utworzyć nowy plik o nazwie `.env`. Jeśli używasz wiersza poleceń, możesz użyć `touch` (w systemach Unix) lub `echo` (w Windows): - - Systemy Unix: - - ```bash - touch .env - ``` - - Windows: - - ```cmd - echo. > .env - ``` - -3. **Edytuj Plik `.env`**: Otwórz plik `.env` w edytorze tekstu (np. VS Code, Notepad++ lub dowolnym innym edytorze). Dodaj następującą linię do pliku, zastępując `twój_token_github_tutaj` swoim rzeczywistym tokenem GitHub: - - ```env - GITHUB_TOKEN=twój_token_github_tutaj - ``` - -4. **Zapisz Plik**: Zapisz zmiany i zamknij edytor tekstu. - -5. **Zainstaluj `python-dotenv`**: Jeśli jeszcze tego nie zrobiłeś, będziesz musiał zainstalować pakiet `python-dotenv`, aby załadować zmienne środowiskowe z pliku `.env` do twojej aplikacji Python. Możesz go zainstalować za pomocą `pip`: - - ```bash - pip install python-dotenv - ``` - -6. **Załaduj Zmienne Środowiskowe w Twoim Skrypcie Python**: W twoim skrypcie Python użyj pakietu `python-dotenv` do załadowania zmiennych środowiskowych z pliku `.env`: - - ```python - from dotenv import load_dotenv - import os - - # Załaduj zmienne środowiskowe z pliku .env - load_dotenv() - - # Uzyskaj dostęp do zmiennej GITHUB_TOKEN - github_token = os.getenv("GITHUB_TOKEN") - - print(github_token) - ``` - -To wszystko! Pomyślnie utworzyłeś plik `.env`, dodałeś swój token GitHub i załadowałeś go do swojej aplikacji Python. - -## Jak Uruchomić Lokalnie na Twoim Komputerze - -Aby uruchomić kod lokalnie na swoim komputerze, będziesz potrzebować jakiejś wersji [zainstalowanego Pythona](https://www.python.org/downloads/?WT.mc_id=academic-105485-koreyst). - -Aby następnie korzystać z repozytorium, musisz je sklonować: - -```shell -git clone https://github.com/microsoft/generative-ai-for-beginners -cd generative-ai-for-beginners -``` - -Po sprawdzeniu wszystkiego, możesz zacząć! - -## Opcjonalne Kroki - -### Instalacja Miniconda - -[Miniconda](https://conda.io/en/latest/miniconda.html?WT.mc_id=academic-105485-koreyst) to lekki instalator do instalacji [Conda](https://docs.conda.io/en/latest?WT.mc_id=academic-105485-koreyst), Pythona, a także kilku pakietów. -Conda sama w sobie jest menedżerem pakietów, który ułatwia konfigurację i przełączanie się między różnymi [**wirtualnymi środowiskami**](https://docs.python.org/3/tutorial/venv.html?WT.mc_id=academic-105485-koreyst) Pythona i pakietami. Jest również przydatna do instalowania pakietów, które nie są dostępne przez `pip`. - -Możesz postępować zgodnie z [przewodnikiem instalacji MiniConda](https://docs.anaconda.com/free/miniconda/#quick-command-line-install?WT.mc_id=academic-105485-koreyst), aby go skonfigurować. - -Po zainstalowaniu Miniconda musisz sklonować [repozytorium](https://github.com/microsoft/generative-ai-for-beginners/fork?WT.mc_id=academic-105485-koreyst) (jeśli jeszcze tego nie zrobiłeś) - -Następnie musisz utworzyć wirtualne środowisko. Aby to zrobić z Conda, utwórz nowy plik środowiska (_environment.yml_). Jeśli używasz Codespaces, utwórz go w katalogu `.devcontainer`, czyli `.devcontainer/environment.yml`. - -Wypełnij swój plik środowiska poniższym fragmentem: - -```yml -name: -channels: - - defaults - - microsoft -dependencies: - - python= - - openai - - python-dotenv - - pip - - pip: - - azure-ai-ml -``` - -Jeśli napotkasz błędy podczas korzystania z conda, możesz ręcznie zainstalować Biblioteki Microsoft AI za pomocą następującego polecenia w terminalu. - -``` -conda install -c microsoft azure-ai-ml -``` - -Plik środowiska określa potrzebne zależności. `` odnosi się do nazwy, którą chcesz nadać swojemu środowisku Conda, a `` to wersja Pythona, której chcesz użyć, na przykład `3` to najnowsza główna wersja Pythona. - -Po tym, możesz utworzyć swoje środowisko Conda, uruchamiając poniższe polecenia w wierszu poleceń/terminalu - -```bash -conda env create --name ai4beg --file .devcontainer/environment.yml # ścieżka podkatalogu .devcontainer dotyczy tylko konfiguracji Codespace -conda activate ai4beg -``` - -Sprawdź [przewodnik po środowiskach Conda](https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html?WT.mc_id=academic-105485-koreyst), jeśli napotkasz jakiekolwiek problemy. - -### Korzystanie z Visual Studio Code z rozszerzeniem wsparcia Pythona - -Zalecamy korzystanie z edytora [Visual Studio Code (VS Code)](https://code.visualstudio.com/?WT.mc_id=academic-105485-koreyst) z zainstalowanym [rozszerzeniem wsparcia Pythona](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-105485-koreyst) dla tego kursu. Jest to jednak bardziej zalecenie niż bezwzględny wymóg. - -> **Uwaga**: Otwierając repozytorium kursu w VS Code, masz możliwość skonfigurowania projektu w kontenerze. Jest to możliwe dzięki [specjalnemu katalogowi `.devcontainer`](https://code.visualstudio.com/docs/devcontainers/containers?itemName=ms-python.python&WT.mc_id=academic-105485-koreyst) znajdującemu się w repozytorium kursu. Więcej na ten temat później. - -> **Uwaga**: Po sklonowaniu i otwarciu katalogu w VS Code, automatycznie zasugeruje ci zainstalowanie rozszerzenia wsparcia Pythona. - -> **Uwaga**: Jeśli VS Code zasugeruje ci ponowne otwarcie repozytorium w kontenerze, odrzuć tę prośbę, aby używać lokalnie zainstalowanej wersji Pythona. - -### Korzystanie z Jupyter w Przeglądarce - -Możesz również pracować nad projektem przy użyciu [środowiska Jupyter](https://jupyter.org?WT.mc_id=academic-105485-koreyst) bezpośrednio w przeglądarce. Zarówno klasyczny Jupyter, jak i [Jupyter Hub](https://jupyter.org/hub?WT.mc_id=academic-105485-koreyst) zapewniają dość przyjemne środowisko programistyczne z funkcjami takimi jak automatyczne uzupełnianie, podświetlanie składni itp. - -Aby uruchomić Jupyter lokalnie, przejdź do terminala/wiersza poleceń, przejdź do katalogu kursu i wykonaj: - -```bash -jupyter notebook -``` - -lub - -```bash -jupyterhub -``` - -Spowoduje to uruchomienie instancji Jupyter, a URL do uzyskania dostępu zostanie wyświetlony w oknie wiersza poleceń. - -Po uzyskaniu dostępu do adresu URL, powinieneś zobaczyć zarys kursu i móc przejść do dowolnego pliku `*.ipynb`. Na przykład, `08-building-search-applications/python/oai-solution.ipynb`. - -### Uruchamianie w kontenerze - -Alternatywą dla konfigurowania wszystkiego na swoim komputerze lub Codespace jest użycie [kontenera](). Specjalny folder `.devcontainer` w repozytorium kursu umożliwia VS Code skonfigurowanie projektu w kontenerze. Poza Codespaces wymaga to instalacji Dockera i, szczerze mówiąc, wymaga trochę pracy, więc zalecamy to tylko osobom mającym doświadczenie w pracy z kontenerami. - -Jednym z najlepszych sposobów zabezpieczenia kluczy API podczas korzystania z GitHub Codespaces jest używanie Sekretów Codespaces. Przejdź do [przewodnika zarządzania sekretami Codespaces](https://docs.github.com/en/codespaces/managing-your-codespaces/managing-secrets-for-your-codespaces?WT.mc_id=academic-105485-koreyst), aby dowiedzieć się więcej na ten temat. - -## Lekcje i Wymagania Techniczne - -Kurs składa się z 6 lekcji koncepcyjnych i 6 lekcji kodowania. - -W przypadku lekcji kodowania korzystamy z usługi Azure OpenAI. Będziesz potrzebować dostępu do usługi Azure OpenAI i klucza API, aby uruchomić ten kod. Możesz ubiegać się o dostęp, [wypełniając ten wniosek](https://azure.microsoft.com/products/ai-services/openai-service?WT.mc_id=academic-105485-koreyst). - -Podczas oczekiwania na rozpatrzenie Twojego wniosku, każda lekcja kodowania zawiera również plik `README.md`, w którym możesz przeglądać kod i wyniki. - -## Korzystanie z Usługi Azure OpenAI po raz pierwszy - -Jeśli jest to Twój pierwszy raz korzystania z usługi Azure OpenAI, postępuj zgodnie z tym przewodnikiem, jak [utworzyć i wdrożyć zasób Azure OpenAI Service.](https://learn.microsoft.com/azure/ai-services/openai/how-to/create-resource?pivots=web-portal&WT.mc_id=academic-105485-koreyst) - -## Korzystanie z API OpenAI po raz pierwszy - -Jeśli jest to Twój pierwszy raz korzystania z API OpenAI, postępuj zgodnie z przewodnikiem, jak [utworzyć konto i korzystać z Interfejsu.](https://platform.openai.com/docs/quickstart?context=pythont&WT.mc_id=academic-105485-koreyst) - -## Poznaj Innych Uczących się - -Stworzyliśmy kanały na naszym oficjalnym [serwerze Discord społeczności AI](https://aka.ms/genai-discord?WT.mc_id=academic-105485-koreyst) do spotykania innych uczących się. To świetny sposób na nawiązywanie kontaktów z innymi podobnie myślącymi przedsiębiorcami, twórcami, studentami i wszystkimi, którzy chcą podnieść swój poziom w dziedzinie Generatywnej SI. - -[![Dołącz do kanału discord](https://dcbadge.limes.pink/api/server/ByRwuEEgH4)](https://aka.ms/genai-discord?WT.mc_id=academic-105485-koreyst) - -Zespół projektowy będzie również obecny na tym serwerze Discord, aby pomóc uczącym się. - -## Przyczyń się - -Ten kurs jest inicjatywą open-source. Jeśli widzisz obszary do poprawy lub problemy, utwórz [Pull Request](https://github.com/microsoft/generative-ai-for-beginners/pulls?WT.mc_id=academic-105485-koreyst) lub zgłoś [problem na GitHub](https://github.com/microsoft/generative-ai-for-beginners/issues?WT.mc_id=academic-105485-koreyst). - -Zespół projektowy będzie śledził wszystkie wkłady. Przyczynianie się do projektów open source to świetny sposób na budowanie swojej kariery w Generatywnej SI. - -Większość wkładów wymaga zgody na Umowę Licencyjną Współtwórcy (CLA), deklarującą, że masz prawo i faktycznie udzielasz nam praw do korzystania z Twojego wkładu. Aby uzyskać szczegółowe informacje, odwiedź [stronę internetową CLA, Umowy Licencyjnej Współtwórcy](https://cla.microsoft.com?WT.mc_id=academic-105485-koreyst). - -Ważne: podczas tłumaczenia tekstu w tym repozytorium upewnij się, że nie używasz tłumaczenia maszynowego. Będziemy weryfikować tłumaczenia za pośrednictwem społeczności, więc zgłaszaj się do tłumaczeń tylko w językach, w których biegle się posługujesz. - -Gdy złożysz Pull Request, bot CLA automatycznie określi, czy musisz dostarczyć CLA i odpowiednio oznaczy PR (np. etykietą, komentarzem). Po prostu postępuj zgodnie z instrukcjami dostarczonymi przez bota. Będziesz musiał to zrobić tylko raz dla wszystkich repozytoriów używających naszego CLA. - -Ten projekt przyjął [Kodeks Postępowania Microsoft Open Source](https://opensource.microsoft.com/codeofconduct/?WT.mc_id=academic-105485-koreyst). Aby uzyskać więcej informacji, przeczytaj FAQ dotyczące Kodeksu Postępowania lub skontaktuj się z [Email opencode](opencode@microsoft.com) w przypadku dodatkowych pytań lub komentarzy. - -## Rozpocznijmy - -Teraz, gdy wykonałeś wszystkie potrzebne kroki do ukończenia tego kursu, zacznijmy od [wprowadzenia do Generatywnej SI i modeli LLM](../../../01-introduction-to-genai/translations/pl/README.md?WT.mc_id=academic-105485-koreyst). diff --git a/00-course-setup/translations/pl/SETUP.md b/00-course-setup/translations/pl/SETUP.md deleted file mode 100644 index 26174ffc8e..0000000000 --- a/00-course-setup/translations/pl/SETUP.md +++ /dev/null @@ -1,135 +0,0 @@ -# Konfiguracja Środowiska Deweloperskiego - -Skonfigurowaliśmy to repozytorium i kurs z [kontenerem deweloperskim](https://containers.dev?WT.mc_id=academic-105485-koreyst), który posiada środowisko uniwersalne wspierające rozwój w Python3, .NET, Node.js i Java. Powiązana konfiguracja jest zdefiniowana w pliku `devcontainer.json` znajdującym się w folderze `.devcontainer/` w głównym katalogu tego repozytorium. - -Aby aktywować kontener deweloperski, uruchom go w [GitHub Codespaces](https://docs.github.com/en/codespaces/overview?WT.mc_id=academic-105485-koreyst) (dla środowiska hostowanego w chmurze) lub w [Docker Desktop](https://docs.docker.com/desktop/?WT.mc_id=academic-105485-koreyst) (dla środowiska hostowanego lokalnie na urządzeniu). Przeczytaj [tę dokumentację](https://code.visualstudio.com/docs/devcontainers/containers?WT.mc_id=academic-105485-koreyst), aby uzyskać więcej szczegółów na temat działania kontenerów deweloperskich w VS Code. - -> [!PORADA] -> Zalecamy korzystanie z GitHub Codespaces, aby szybko rozpocząć pracę przy minimalnym wysiłku. Zapewnia hojny [darmowy limit użycia](https://docs.github.com/billing/managing-billing-for-github-codespaces/about-billing-for-github-codespaces#monthly-included-storage-and-core-hours-for-personal-accounts?WT.mc_id=academic-105485-koreyst) dla kont osobistych. Skonfiguruj [limity czasowe](https://docs.github.com/codespaces/setting-your-user-preferences/setting-your-timeout-period-for-github-codespaces?WT.mc_id=academic-105485-koreyst), aby zatrzymać lub usunąć nieaktywne przestrzenie kodu i zmaksymalizować wykorzystanie limitu. - -## 1. Wykonywanie Zadań - -Każda lekcja będzie zawierać _opcjonalne_ zadania, które mogą być dostarczone w jednym lub kilku językach programowania, w tym: Python, .NET/C#, Java i JavaScript/TypeScript. Ta sekcja zawiera ogólne wskazówki dotyczące wykonywania tych zadań. - -### 1.1 Zadania w Pythonie - -Zadania w Pythonie są dostarczane jako aplikacje (pliki `.py`) lub notebooki Jupyter (pliki `.ipynb`). - -- Aby uruchomić notebook, otwórz go w Visual Studio Code, a następnie kliknij _Wybierz Kernel_ (w prawym górnym rogu) i wybierz domyślną opcję Python 3. Teraz możesz wybrać _Uruchom Wszystko_, aby wykonać notebook. -- Aby uruchomić aplikacje Python z linii poleceń, postępuj zgodnie z instrukcjami specyficznymi dla danego zadania, aby upewnić się, że wybierasz odpowiednie pliki i podajesz wymagane argumenty. - -## 2. Konfiguracja Dostawców - -Zadania **mogą** być również skonfigurowane do pracy z jednym lub wieloma wdrożeniami Large Language Model (LLM) za pośrednictwem wspieranego dostawcy usług, takiego jak OpenAI, Azure lub Hugging Face. Zapewniają one _hostowany punkt końcowy_ (API), do którego możemy uzyskać dostęp programistycznie przy użyciu odpowiednich poświadczeń (klucza API lub tokenu). W tym kursie omawiamy następujących dostawców: - -- [OpenAI](https://platform.openai.com/docs/models?WT.mc_id=academic-105485-koreyst) z różnorodnymi modelami, w tym podstawową serią GPT. -- [Azure OpenAI](https://learn.microsoft.com/azure/ai-services/openai/?WT.mc_id=academic-105485-koreyst) dla modeli OpenAI z naciskiem na gotowość dla przedsiębiorstw -- [Hugging Face](https://huggingface.co/docs/hub/index?WT.mc_id=academic-105485-koreyst) dla modeli open-source i serwera wnioskowania - -**Będziesz musiał użyć własnych kont dla tych ćwiczeń**. Zadania są opcjonalne, więc możesz wybrać konfigurację jednego, wszystkich - lub żadnego - dostawców w zależności od twoich zainteresowań. Niektóre wskazówki dotyczące rejestracji: - -| Rejestracja | Koszt | Klucz API | Plac zabaw | Komentarze | -| :---------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------- | -| [OpenAI](https://platform.openai.com/signup?WT.mc_id=academic-105485-koreyst) | [Cennik](https://openai.com/pricing#language-models?WT.mc_id=academic-105485-koreyst) | [Oparty na projekcie](https://platform.openai.com/api-keys?WT.mc_id=academic-105485-koreyst) | [No-Code, Web](https://platform.openai.com/playground?WT.mc_id=academic-105485-koreyst) | Dostępne wiele modeli | -| [Azure](https://aka.ms/azure/free?WT.mc_id=academic-105485-koreyst) | [Cennik](https://azure.microsoft.com/pricing/details/cognitive-services/openai-service/?WT.mc_id=academic-105485-koreyst) | [Szybki start SDK](https://learn.microsoft.com/azure/ai-services/openai/quickstart?WT.mc_id=academic-105485-koreyst) | [Szybki start Studio](https://learn.microsoft.com/azure/ai-services/openai/quickstart?WT.mc_id=academic-105485-koreyst) | [Musisz złożyć wniosek o dostęp z wyprzedzeniem](https://learn.microsoft.com/azure/ai-services/openai/?WT.mc_id=academic-105485-koreyst) | -| [Hugging Face](https://huggingface.co/join?WT.mc_id=academic-105485-koreyst) | [Cennik](https://huggingface.co/pricing) | [Tokeny dostępu](https://huggingface.co/docs/hub/security-tokens?WT.mc_id=academic-105485-koreyst) | [Hugging Chat](https://huggingface.co/chat/?WT.mc_id=academic-105485-koreyst) | [Hugging Chat ma ograniczoną liczbę modeli](https://huggingface.co/chat/models?WT.mc_id=academic-105485-koreyst) | -| | | | | | - -Postępuj zgodnie z poniższymi instrukcjami, aby _skonfigurować_ to repozytorium do użytku z różnymi dostawcami. Zadania, które wymagają konkretnego dostawcy, będą zawierać jeden z tych znaczników w nazwie pliku: - -- `aoai` - wymaga punktu końcowego Azure OpenAI, klucza -- `oai` - wymaga punktu końcowego OpenAI, klucza -- `hf` - wymaga tokenu Hugging Face - -Możesz skonfigurować jednego, żadnego lub wszystkich dostawców. Powiązane zadania po prostu zgłoszą błąd w przypadku braku poświadczeń. - -### 2.1. Utworzenie pliku `.env` - -Zakładamy, że już przeczytałeś powyższe wskazówki i zarejestrowałeś się u odpowiedniego dostawcy oraz uzyskałeś wymagane dane uwierzytelniające (API_KEY lub token). W przypadku Azure OpenAI zakładamy, że masz również prawidłowe wdrożenie usługi Azure OpenAI (punkt końcowy) z co najmniej jednym modelem GPT wdrożonym do uzupełniania czatu. - -Następnym krokiem jest skonfigurowanie **lokalnych zmiennych środowiskowych** w następujący sposób: - -1. Poszukaj w głównym folderze pliku `.env.copy`, który powinien mieć zawartość podobną do tej: - - ```bash - # OpenAI Provider - OPENAI_API_KEY='' - - ## Azure OpenAI - AZURE_OPENAI_API_VERSION='2024-02-01' # Domyślnie ustawione! - AZURE_OPENAI_API_KEY='' - AZURE_OPENAI_ENDPOINT='' - AZURE_OPENAI_DEPLOYMENT='' - AZURE_OPENAI_EMBEDDINGS_DEPLOYMENT='' - - ## Hugging Face - HUGGING_FACE_API_KEY='' - ``` - -2. Skopiuj ten plik do `.env` używając poniższego polecenia. Ten plik jest _ignorowany przez git_, co zapewnia bezpieczeństwo tajnych danych. - - ```bash - cp .env.copy .env - ``` - -3. Wypełnij wartości (zastąp elementy zastępcze po prawej stronie `=`) zgodnie z opisem w następnej sekcji. - -4. (Opcja) Jeśli korzystasz z GitHub Codespaces, masz możliwość zapisania zmiennych środowiskowych jako _sekrety Codespaces_ powiązane z tym repozytorium. W tym przypadku nie będziesz musiał konfigurować lokalnego pliku .env. **Jednak pamiętaj, że ta opcja działa tylko wtedy, gdy korzystasz z GitHub Codespaces.** Nadal będziesz musiał skonfigurować plik .env, jeśli zamiast tego używasz Docker Desktop. - -### 2.2. Wypełnianie pliku `.env` - -Przyjrzyjmy się nazwom zmiennych, aby zrozumieć, co reprezentują: - -| Zmienna | Opis | -| :--------------------------------- | :------------------------------------------------------------------------------------------------ | -| HUGGING_FACE_API_KEY | To jest token dostępu użytkownika, który konfigurujesz w swoim profilu | -| OPENAI_API_KEY | To jest klucz autoryzacyjny do korzystania z usługi dla punktów końcowych OpenAI innych niż Azure | -| AZURE_OPENAI_API_KEY | To jest klucz autoryzacyjny do korzystania z tej usługi | -| AZURE_OPENAI_ENDPOINT | To jest wdrożony punkt końcowy dla zasobu Azure OpenAI | -| AZURE_OPENAI_DEPLOYMENT | To jest punkt końcowy wdrożenia modelu _generowania tekstu_ | -| AZURE_OPENAI_EMBEDDINGS_DEPLOYMENT | To jest punkt końcowy wdrożenia modelu _embeddingów tekstu_ | -| | | - -Uwaga: Ostatnie dwie zmienne Azure OpenAI odzwierciedlają domyślny model dla uzupełniania czatu (generowanie tekstu) i wyszukiwania wektorowego (embeddingi). Instrukcje dotyczące ich ustawienia będą zdefiniowane w odpowiednich zadaniach. - -### 2.3 Konfiguracja Azure: Z Portalu - -Wartości punktu końcowego i klucza Azure OpenAI można znaleźć w [Portalu Azure](https://portal.azure.com?WT.mc_id=academic-105485-koreyst), więc zacznijmy od tego. - -1. Przejdź do [Portalu Azure](https://portal.azure.com?WT.mc_id=academic-105485-koreyst) -1. Kliknij opcję **Klucze i punkt końcowy** w pasku bocznym (menu po lewej stronie). -1. Kliknij **Pokaż klucze** - powinieneś zobaczyć następujące informacje: KLUCZ 1, KLUCZ 2 i Punkt końcowy. -1. Użyj wartości KLUCZ 1 dla AZURE_OPENAI_API_KEY -1. Użyj wartości Punkt końcowy dla AZURE_OPENAI_ENDPOINT - -Następnie potrzebujemy punktów końcowych dla konkretnych modeli, które wdrożyliśmy. - -1. Kliknij opcję **Wdrożenia modeli** w pasku bocznym (menu po lewej) dla zasobu Azure OpenAI. -1. Na stronie docelowej kliknij **Zarządzaj wdrożeniami** - -Przeniesie Cię to do witryny Azure OpenAI Studio, gdzie znajdziesz pozostałe wartości opisane poniżej. - -### 2.4 Konfiguracja Azure: Ze Studio - -1. Przejdź do [Azure OpenAI Studio](https://oai.azure.com?WT.mc_id=academic-105485-koreyst) **ze swojego zasobu**, jak opisano powyżej. -1. Kliknij zakładkę **Wdrożenia** (pasek boczny, po lewej), aby zobaczyć aktualnie wdrożone modele. -1. Jeśli twój pożądany model nie jest wdrożony, użyj **Utwórz nowe wdrożenie**, aby go wdrożyć. -1. Będziesz potrzebować modelu _generowania tekstu_ - zalecamy: **gpt-35-turbo** -1. Będziesz potrzebować modelu _embeddingów tekstu_ - zalecamy **text-embedding-ada-002** - -Teraz zaktualizuj zmienne środowiskowe, aby odzwierciedlały użytą _nazwę wdrożenia_. Zazwyczaj będzie ona taka sama jak nazwa modelu, chyba że wyraźnie ją zmieniłeś. Więc, jako przykład, możesz mieć: - -```bash -AZURE_OPENAI_DEPLOYMENT='gpt-35-turbo' -AZURE_OPENAI_EMBEDDINGS_DEPLOYMENT='text-embedding-ada-002' -``` - -**Nie zapomnij zapisać pliku .env po zakończeniu**. Możesz teraz wyjść z pliku i wrócić do instrukcji dotyczących uruchamiania notebooka. - -### 2.5 Konfiguracja OpenAI: Z Profilu - -Twój klucz API OpenAI można znaleźć na twoim [koncie OpenAI](https://platform.openai.com/api-keys?WT.mc_id=academic-105485-koreyst). Jeśli go nie masz, możesz zarejestrować konto i utworzyć klucz API. Po uzyskaniu klucza możesz użyć go do wypełnienia zmiennej `OPENAI_API_KEY` w pliku `.env`. - -### 2.6 Konfiguracja Hugging Face: Z Profilu - -Twój token Hugging Face można znaleźć w twoim profilu w sekcji [Tokeny dostępu](https://huggingface.co/settings/tokens?WT.mc_id=academic-105485-koreyst). Nie publikuj ani nie udostępniaj ich publicznie. Zamiast tego utwórz nowy token do użytku w tym projekcie i skopiuj go do pliku `.env` w zmiennej `HUGGING_FACE_API_KEY`. _Uwaga:_ Technicznie nie jest to klucz API, ale służy do uwierzytelniania, więc zachowujemy tę konwencję nazewnictwa dla spójności. diff --git a/00-course-setup/translations/pt-br/README.md b/00-course-setup/translations/pt-br/README.md deleted file mode 100644 index 9a3f846507..0000000000 --- a/00-course-setup/translations/pt-br/README.md +++ /dev/null @@ -1,138 +0,0 @@ -# Iniciando com este curso - -Estamos muito animados por você iniciar este curso e ver que se inspira em criar aplicações com IA Generativa! - -Para tornar o seu tempo bem-sucedido(a), criamos esta página que descreve as etapas de configuração, requisitos técnicos e como obter ajuda quando precisar. - -## Etapas de Configuração - -Para começar este curso, você precisará concluir as seguintes etapas. - -### 1. Faça um Fork deste Repositório - -[Faça um fork deste repositório](https://github.com/microsoft/generative-ai-for-beginners/fork?WT.mc_id=academic-105485-koreyst) para a sua própria conta no GitHub para que possa alterar qualquer código e concluir os desafios. Você também pode [marcar com uma (🌟) este repositório](https://docs.github.com/en/get-started/exploring-projects-on-github/saving-repositories-with-stars?WT.mc_id=academic-105485-koreyst) para encontrar com mais facilidade esse repositório. - -### 2. Crie um Codespaces - -Para evitar problemas de dependência ao executar o código, recomendamos a execução deste curso em um Codespaces do GitHub. - -Isso pode ser criado selecionando a opção `Code` na sua versão `birfucada` deste repositório e selecionando a opção **Codespaces**. - -### 3. Armazenando Suas Chaves da API - -Manter suas chaves da API seguras e protegidas é importante quando você cria qualquer tipo de aplicação. Recomendamos que você não armazene suas chaves da API diretamente no código com o qual está trabalhando. Pois a inclusão dessas informações num repositório público pode resultar em custos indesejados e problemas a você. - -![Dialog showing buttons to create a codespace](../../images/who-will-pay.webp?WT.mc_id=academic-105485-koreyst) - -## Como Executar Localmente no seu Computador - -Para executar o código localmente no seu computador, você precisará ter alguma versão do [Python instalada](https://www.python.org/downloads?WT.mc_id=academic-105485-koreyst). - -Para utilizar o repositório, você precisará clonar primeiramente: - -```shell -git clone https://github.com/microsoft/generative-ai-for-beginners -cd generative-ai-for-beginners -``` - -Agora, você tem tudo configurado e pode começar a aprender e trabalhar com o código. - -### Instalando o miniconda (etapa opcional) - -Existem vantagens em instalar o **[miniconda](https://conda.io/en/latest/miniconda.html)** - que é uma instalação bastante leve que suporta o gerenciador de pacotes `conda` para diferentes **ambientes virtuais** do Python. O `conda` facilita a instalação e alternância entre diferentes versões e pacotes do Python e também a instalação de pacotes que não estão disponíveis via `pip`. - -Depois de instalar o miniconda, você precisará clonar o repositório (se ainda não o fez) e criar um ambiente virtual a ser usado neste curso: - -Antes de executar a etapa abaixo, tenha certeza de que você já possui um arquivo *environment.yml*. O arquivo *environment.yml* é usado para criar um ambiente conda com as dependências necessárias e que pode se parecer com isto: - -```yml -name: -channels: - - defaults -dependencies: -- python= -- openai -- python-dotenv -``` - -Você pode substituir `` pelo nome do seu ambiente conda e `` pela versão do Python que você deseja usar. Coloque o arquivo *environment.yml* criado na pasta *.devcontainer* do seu repositório. - -Agora que você criou um arquivo *environment.yml*, você pode criar um ambiente conda com o seguinte comando: - -```bash -conda env create --name ai4beg --file .devcontainer/environment.yml -conda activate ai4beg -``` - -Se você tiver problemas, consulte este link sobre a criação de [ambientes conda](https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html). - -### Usando o Visual Studio Code com a Extensão do Python - -Provavelmente a melhor maneira de usar o currículo é abrindo no [Visual Studio Code](https://code.visualstudio.com/?WT.mc_id=academic-105485-koreyst) com a [Extensão Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-105485-koreyst). - -> **Observação**: Uma vez que você clonar e abrir o diretório no VS Code, ele automaticamente vai sugerir que você instale as extensões do Python. Você também precisará instalar o `Miniconda` conforme descrito acima. - -> **Observação**: Se o VS Code sugerir que você reabra o repositório em um container, você precisará recusar isso para usar a instalação local do Python. - -### Usando o Jupyter no Navegador - -Você também pode usar o ambiente Jupyter diretamente do navegador em seu próprio computador. Na verdade, tanto o Jupyter clássico quanto o Jupyter Hub proporcionam um ambiente de desenvolvimento bastante conveniente com autocompletamento, destaque de código, etc. - -Para iniciar o Jupyter localmente, vá para o diretório do curso e execute: - -```bash -jupyter notebook -``` - -ou - -```bash -jupyterhub -``` - -Você pode navegar para qualquer um dos arquivos `.ipynb`, abre esses arquivos e comece a trabalhar. - -### Executando em um Contêiner - -Uma alternativa à instalação do Python seria executar o código em um contêiner. Como nosso repositório contém uma pasta especial chamada `.devcontainer`, que instrui como criar um contêiner para este repositório, o VS Code oferecerá a opção de reabrir o código em um contêiner. Isso requer a instalação do Docker e é mais complexo. Assim sendo, recomendado para usuários mais experientes. - -Uma das melhores maneiras de manter suas chaves da API seguras ao usar GitHub Codespaces é usando `Codespace Secrets`. Siga este guia sobre como [gerenciar segredos para seus Codespaces](https://docs.github.com/en/codespaces/managing-your-codespaces/managing-secrets-for-your-codespaces?WT.mc_id=academic-105485-koreyst). - -## Lições e Requisitos Técnicos - -O curso possui 6 lições conceituais e 6 lições incluem codificações. - -Para as lições de codificação, estamos usando o Serviço Azure OpenAI. Você precisará de acesso ao serviço do Azure OpenAI e de uma chave de API para executar o código. Você pode solicitar acesso ao [completar esta aplicação](https://customervoice.microsoft.com/Pages/ResponsePage.aspx?id=v4j5cvGGr0GRqy180BHbR7en2Ais5pxKtso_Pz4b1_xUOFA5Qk1UWDRBMjg0WFhPMkIzTzhKQ1dWNyQlQCN0PWcu&culture=en-us&country=us?WT.mc_id=academic-105485-koreyst). - -Enquanto aguarda o processamento da sua inscrição, cada lição que tenha codificação também inclui um arquivo `README.md` onde você pode visualizar o código e as suas respectivas saídas. - -## Usando o Serviço Azure OpenAI pela Primeira Vez - -Se esta for a primeira vez que você está trabalhando com o serviço Azure OpenAI, siga este guia sobre como [criar e implantar um recurso do Serviço Azure OpenAI](https://learn.microsoft.com/azure/ai-services/openai/how-to/create-resource?pivots=web-portal&WT.mc_id=academic-105485-koreyst). - -## Conheça Outros Aprendizes - -Criamos canais em nosso servidor oficial da [Comunidade de Inteligência Artificial no Discord](https://aka.ms/genai-discord?WT.mc_id=academic-105485-koreyst) para que você possa conhecer outros aprendizes. Esta é uma ótima maneira de se conectar com outros empreendedores, pessoas desenvolvedoras, estudantes e qualquer pessoa que queira se aprofundar sobre Inteligência Artificial Generativa. - -[![Participe do canal no Discord](https://dcbadge.limes.pink/api/server/ByRwuEEgH4)](https://aka.ms/genai-discord?WT.mc_id=academic-105485-koreyst) - -A equipe do projeto também estará presente neste servidor do Discord para ajudar à todos(as). - -## Contribua - -Este curso é uma iniciativa de Código Aberto. Se você identificar áreas de melhoria ou problemas, por favor crie um [Pull Request](https://github.com/microsoft/generative-ai-for-beginners/pulls?WT.mc_id=academic-105485-koreyst) ou registre uma [issue no Github](https://github.com/microsoft/generative-ai-for-beginners/issues?WT.mc_id=academic-105485-koreyst). - -A equipe do projeto acompanhará todas as contribuições. Sem contar que, contribuir para o código aberto é uma maneira incrível de construir sua carreira em Inteligência Artificial Generativa. - -A maioria das contribuições requer que você concorde com um Contrato de Licença de Contribuidor (CLA) declarando que você tem o direito e realmente nos concede os direitos de usar sua contribuição. Para mais detalhes, visite o site do [CLA, Contrato de Licença de Contribuidor](https://cla.microsoft.com?WT.mc_id=academic-105485-koreyst). - -Importante: ao traduzir texto neste repositório, certifique-se de não utilizar tradução automática. Verificaremos as traduções por meio da comunidade. Portanto, se ofereça voluntariamente para traduzir apenas em idiomas nos quais você seja proficiente. - -Quando você for enviar um Pull Request, um robô CLA automaticamente determinará se você precisa fornecer um CLA e decorará o PR adequadamente (por exemplo, etiqueta, comentário). Basta seguir as instruções fornecidas pelo robô. Você só precisará fazer isso uma vez em todos os repositórios que utilizam nosso CLA. - -Este projeto adotou o Código de Conduta de Código Aberto da Microsoft. Para obter mais informações, leia o FAQ do Código de Conduta ou entre em contato com [Email opencode](opencode@microsoft.com) com quaisquer perguntas ou comentários adicionais. - -## Vamos Começar? - -Agora que você concluiu as etapas necessárias para concluir este curso, vamos começar com a lição [Introdução à Inteligência Artificial Generativa e Grandes Modelos de Linguagens (LLMs)](../../../01-introduction-to-genai/translations/pt-br/README.md?WT.mc_id=academic-105485-koreyst). - diff --git a/00-course-setup/translations/tr/README.md b/00-course-setup/translations/tr/README.md deleted file mode 100644 index 4cabe81634..0000000000 --- a/00-course-setup/translations/tr/README.md +++ /dev/null @@ -1,208 +0,0 @@ -# Kursa Başlarken - -Bu kursa başlamanız ve Üretken Yapay Zeka (Generative AI) ile neler inşa edebileceğinizi keşfetmeniz için çok heyecanlıyız! - -Başarıya ulaşmanızı sağlamak için bu sayfada kurulum adımları, teknik gereksinimler ve gerektiğinde nasıl yardım alabileceğiniz açıklanmaktadır. - -## Kurulum Adımları - -Bu kursu almaya başlamak için aşağıdaki adımları tamamlamanız gerekmektedir. - -### 1. Bu repoyu kendi deponuza ekleyin - -Bu kurs kapsamında kodu değiştirebilmek ve alıştırmaları tamamlayabilmek için [bu depoyu kendi GitHub hesabınıza forklayın](https://github.com/microsoft/generative-ai-for-beginners/fork?WT.mc_id=academic-105485-koreyst) Ayrıca, bu ve ilgili diğer depoları daha kolay bulmak için [bu repoyu yıldızlayabilirsiniz (🌟).](https://docs.github.com/en/get-started/exploring-projects-on-github/saving-repositories-with-stars?WT.mc_id=academic-105485-koreyst) - -### 2. Bir Codespace Oluşturun - -Kodun çalıştırılması sırasında bağımlılık sorunlarını önlemek için, bu kursu bir [GitHub Codespace](https://github.com/features/codespaces?WT.mc_id=academic-105485-koreyst) ortamında yürütmenizi öneririz. - -Bunun için, çatalladığınız depo üzerinde `Code` oseçeneğine tıklayın ve **Codespaces** seçeneğini belirleyin. - -![Kod alanı oluşturmak için düğmeleri gösteren iletişim kutusu](../../images/who-will-pay.webp?WT.mc_id=academic-105485-koreyst) - -### 3. API Anahtarlarınızı Güvenli Bir Şekilde Saklayın - -API anahtarlarınızı güvenli bir şekilde saklamak, herhangi bir uygulama geliştirirken önemlidir. API anahtarlarını doğrudan koda kaydetmemenizi öneririz. Anahtarları herkese açık bir depoya yüklemek güvenlik sorunlarına ve kötü niyetli kullanım nedeniyle maliyetlere yol açabilir. -`.env` Dosyası ile `GITHUB_TOKEN` Anahtarlarını Saklama: - -1. **Proje Dizininize Gidin**: Terminalinizi veya komut isteminizi açın ve `.env` dosyasını oluşturmak istediğiniz projenizin kök dizinine gidin. - - ```bash - cd path/to/your/project - ``` - -2. **`.env` Dosyasını Oluşturun**: Tercih ettiğiniz metin editörünü kullanarak `.env` adında yeni bir dosya oluşturun. Komut satırını kullanıyorsanız, `touch` (Unix tabanlı sistemlerde) veya `echo` (Windows'ta) kullanabilirsiniz: - - Unix tabanlı sistemler: - ```bash - touch .env - ``` - - Windows: - ```cmd - echo. > .env - ``` - -3. **`.env` Dosyasını Düzenleyin**: `.env` dosyasını bir metin düzenleyicide açın (örneğin, VS Code, Notepad++ veya başka bir düzenleyici). Aşağıdaki satırı dosyaya ekleyin ve `your_github_token_here` yerine gerçek GitHub tokenınızı yazın: - - ```env - GITHUB_TOKEN=your_github_token_here - ``` - -4. **Dosyayı Kaydet**: Değişiklikleri kaydedin ve metin düzenleyiciyi kapatın. - -5. **`python-dotenv`** paketini yükleyin: Henüz yüklemediyseniz, ortam değişkenlerini `.env` dosyasından Python uygulamanıza yüklemek için `python-dotenv` paketini yüklemeniz gerekir. Bunu `pip` kullanarak yükleyebilirsiniz: - - ```bash - pip install python-dotenv - ``` - -6. **Ortam Değişkenlerini Python Betiklerinize Yükleyin**: Python betiğinizde, `.env` dosyasından ortam değişkenlerini yüklemek için `python-dotenv` paketini kullanın: - - ```python - from dotenv import load_dotenv - import os - - # .env dosyasından ortam değişkenlerini yükle - load_dotenv() - - # GITHUB_TOKEN değişkenine erişin - github_token = os.getenv("GITHUB_TOKEN") - - print(github_token) - ``` - -İşte bu kadar! Başarıyla bir `.env` dosyası oluşturdunuz, GitHub token'ınızı eklediniz ve Python uygulamanıza yüklediniz. - -## Bilgisayarınızda yerel olarak nasıl çalıştırılır - -Kodu bilgisayarınızda yerel olarak çalıştırmak için, aşağıdaki programların bir sürümüne sahip olmanız gerekir [Python'u yükleyin](https://www.python.org/downloads/?WT.mc_id=academic-105485-koreyst). - -Daha sonra depoyu kullanmak için onu klonlamanız gerekir: - -```shell -git clone https://github.com/microsoft/generative-ai-for-beginners -cd generative-ai-for-beginners -``` - -Her şeyi kontrol ettikten sonra başlayabilirsiniz! - -### Miniconda Kurulumu (isteğe bağlı) - -[Miniconda](https://conda.io/en/latest/miniconda.html?WT.mc_id=academic-105485-koreyst), [Conda](https://docs.conda.io/en/latest?WT.mc_id=academic-105485-koreyst), Python ve birkaç paket yüklemek için hafif bir yükleyicidir. -Conda'nın kendisi, farklı Python [**sanal ortamlar**](https://docs.python.org/3/tutorial/venv.html?WT.mc_id=academic-105485-koreyst) ve paketler arasında kurulum ve geçişi kolaylaştıran bir paket yöneticisidir. Ayrıca `pip` aracılığıyla kullanılamayan paketleri yüklemek için de kullanışlıdır. - -Kurulum için [MiniConda kurulum kılavuzu](https://docs.anaconda.com/free/miniconda/#quick-command-line-install?WT.mc_id=academic-105485-koreyst)'nu takip edebilirsiniz. - -Miniconda yüklendiğinde, [repository](https://github.com/microsoft/generative-ai-for-beginners/fork?WT.mc_id=academic-105485-koreyst)'yi klonlamanız gerekir (eğer henüz yapmadıysanız) - -Ardından, sanal bir ortam oluşturmanız gerekir. Bunu Conda ile yapmak için, devam edin ve yeni bir ortam dosyası (_environment.yml_) oluşturun. Codespaces kullanarak takip ediyorsanız, bunu `.devcontainer` dizini içinde oluşturun, böylece `.devcontainer/environment.yml`. - -Devam edin ve ortam dosyanızı aşağıdaki kod parçacığı ile doldurun: - -```yml -name: -channels: - - defaults -dependencies: -- python= -- openai -- python-dotenv -- microsoft azure-ai-ml - -``` - -Eğer conda kullanırken hata alıyorsanız, aşağıdaki komutu terminalde kullanarak Microsoft AI Kütüphanelerini manuel olarak yükleyebilirsiniz. - -``` -conda install -c microsoft azure-ai-ml -``` - -Ortam dosyası ihtiyacımız olan bağımlılıkları belirtir. `` Conda ortamınız için kullanmak istediğiniz ismi, `` ise kullanmak istediğiniz Python sürümünü ifade eder, örneğin `3` Python'un en son ana sürümüdür. - -Bunu yaptıktan sonra, aşağıdaki komutları komut satırınızda/terminalinizde çalıştırarak Conda ortamınızı oluşturabilirsiniz - -```bash -conda env create --name ai4beg --file .devcontainer/environment.yml # .devcontainer alt yolu yalnızca Codespace kurulumları için geçerlidir -conda activate ai4beg -``` - -Herhangi bir sorunla karşılaşırsanız [Conda ortamları kılavuzuna] (https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html?WT.mc_id=academic-105485-koreyst) bakın. - -### Visual Studio Code'u Python eklentisi ile kullanma - -Bu kurs için [Python eklentisi](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-105485-koreyst) yüklü [Visual Studio Code (VS Code)](https://code.visualstudio.com/?WT.mc_id=academic-105485-koreyst) düzenleyicisini kullanmanızı öneririz. Ancak bu daha çok bir tavsiyedir ve kesin bir gereklilik değildir - -> **Not**: Kurs deposunu VS Code'da açtığınızda, projeyi bir konteyner içinde kurma seçeneğiniz vardır. Bunun nedeni, kurs deposunda bulunan [özel `.devcontainer`](https://code.visualstudio.com/docs/devcontainers/containers?itemName=ms-python.python&WT.mc_id=academic-105485-koreyst) dizinidir. Bu konuda daha sonra bilgi vereceğiz. - -> **Not**: Dizini klonlayıp VS Code'da açtığınızda, otomatik olarak bir Python destek uzantısı yüklemenizi önerecektir. - -> **Not**: VS Code, depoyu bir kapsayıcıda yeniden açmanızı önerirse, Python'un yerel olarak yüklenmiş sürümünü kullanmak için bu isteği reddedin. - -### Tarayıcıda Jupyter Kullanımı - -Ayrıca [Jupyter environment](https://jupyter.org?WT.mc_id=academic-105485-koreyst)'ı doğrudan tarayıcınızda kullanarak proje üzerinde çalışabilirsiniz. Hem klasik Jupyter hem de [Jupyter Hub](https://jupyter.org/hub?WT.mc_id=academic-105485-koreyst) otomatik tamamlama, kod vurgulama gibi özelliklerle oldukça hoş bir geliştirme ortamı sağlar. - -Jupyter'i yerel olarak başlatmak için terminal/komut satırına gidin, kurs dizinine gidin ve çalıştırın: - -```bash -jupyter notebook -``` - -or - -```bash -jupyterhub -``` - -Bu, bir Jupyter örneği başlatacak ve ona erişmek için URL komut satırı penceresinde gösterilecektir. - -URL'ye eriştiğinizde, kurs taslağını görmeli ve herhangi bir `*.ipynb` dosyasına gidebilmelisiniz. Örneğin, `08-building-search-applications/python/oai-solution.ipynb`. - -### Konteyner içinde çalıştırma - -Her şeyi bilgisayarınızda veya Codespace'de kurmanın bir alternatifi de [container](https://en.wikipedia.org/wiki/Containerization_(computing)?WT.mc_id=academic-105485-koreyst) kullanmaktır. Kurs deposundaki özel `.devcontainer` klasörü, VS Code'un projeyi bir konteyner içinde kurmasını mümkün kılar. Codespaces dışında, bu Docker'ın kurulmasını gerektirecektir ve açıkçası, biraz çalışma gerektirir, bu nedenle bunu yalnızca konteynerlerle çalışma deneyimi olanlara öneririz. - -GitHub Codespaces kullanırken API anahtarlarınızı güvende tutmanın en iyi yollarından biri Codespace Secrets kullanmaktır. Bu konuda daha fazla bilgi edinmek için lütfen [Codespaces secrets management](https://docs.github.com/en/codespaces/managing-your-codespaces/managing-secrets-for-your-codespaces?WT.mc_id=academic-105485-koreyst) kılavuzunu izleyin. - -## Dersler ve Teknik Gereksinimler - -Kursta 6 kavram dersi ve 6 kodlama dersi bulunmaktadır. - -Kodlama dersleri için Azure OpenAI Hizmetini kullanıyoruz. Bu kodu çalıştırmak için Azure OpenAI hizmetine erişmeniz ve bir API anahtarına ihtiyacınız olacak. Erişim almak için [bu başvuruyu tamamlayarak](https://azure.microsoft.com/products/ai-services/openai-service?WT.mc_id=academic-105485-koreyst) başvurabilirsiniz. - -Siz uygulamanızın işlenmesini beklerken her kodlama dersi, kodu ve çıktıları görüntüleyebileceğiniz bir `README.md` dosyası da içerir. - -## Azure OpenAI Hizmetini ilk kez kullanma - -Azure OpenAI hizmeti ile ilk kez çalışıyorsanız, lütfen [Azure OpenAI Hizmeti kaynağı oluşturma ve dağıtma](https://learn.microsoft.com/azure/ai-services/openai/how-to/create-resource?pivots=web-portal&WT.mc_id=academic-105485-koreyst) hakkındaki bu kılavuzu izleyin. - -## OpenAI API'sini ilk kez kullanma - -OpenAI API ile ilk kez çalışıyorsanız, lütfen [Arayüzün nasıl oluşturulacağı ve kullanılacağı](https://platform.openai.com/docs/quickstart?context=pythont&WT.mc_id=academic-105485-koreyst) hakkındaki kılavuzu izleyin. - -## Diğer Öğrencilerle Tanışın - -Diğer öğrencilerle tanışmak için resmi [AI Community Discord sunucumuzda](https://aka.ms/genai-discord?WT.mc_id=academic-105485-koreyst) kanallar oluşturduk. Bu, benzer düşünen diğer girişimciler, inşaatçılar, öğrenciler ve Üretken Yapay Zeka'da seviye atlamak isteyen herkesle ağ kurmak için harika bir yoldur. - -[![Discord kanalına katılın](https://dcbadge.limes.pink/api/server/ByRwuEEgH4)](https://aka.ms/genai-discord?WT.mc_id=academic-105485-koreyst) - -Proje ekibi de öğrencilere yardımcı olmak için bu Discord sunucusunda olacaktır. - -## Katkıda bulunun - -Bu kurs bir açık kaynak girişimidir. İyileştirme alanları veya sorunlar görürseniz, lütfen bir [Çekme İsteği](https://github.com/microsoft/generative-ai-for-beginners/pulls?WT.mc_id=academic-105485-koreyst) oluşturun veya bir [GitHub sorunu](https://github.com/microsoft/generative-ai-for-beginners/issues?WT.mc_id=academic-105485-koreyst) kaydedin. - -Proje ekibi tüm katkıları takip edecektir. Açık kaynağa katkıda bulunmak, Üretken Yapay Zeka alanında kariyerinizi geliştirmenin harika bir yoludur. - -Çoğu katkı, katkınızı kullanma hakkına sahip olduğunuzu ve aslında bize katkınızı kullanma haklarını verdiğinizi beyan eden bir Katılımcı Lisans Sözleşmesini (CLA) kabul etmenizi gerektirir. Ayrıntılar için [CLA, Contributor License Agreement web sitesini](https://cla.microsoft.com?WT.mc_id=academic-105485-koreyst) ziyaret edin. - -Önemli: Bu depodaki metni çevirirken lütfen makine çevirisi kullanmadığınızdan emin olun. Çevirileri topluluk aracılığıyla doğrulayacağız, bu nedenle lütfen yalnızca yetkin olduğunuz dillerdeki çeviriler için gönüllü olun. - -Pull request gönderdiğinizde, bir CLA-bot otomatik olarak bir Katkıda Bulunma Lisans Sözleşmesi (CLA) gerekip gerekmediğini belirler ve PR'nizi uygun şekilde etiketler (örneğin, etiket, yorum ekler). Bot tarafından verilen talimatları takip etmeniz yeterlidir. Bu işlemi, CLA kullanan tüm depolar için yalnızca bir kez yapmanız gerekecektir. - -Bu proje [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/?WT.mc_id=academic-105485-koreyst) sayfasını okuyabilir veya ek sorularınız için [Email opencode](opencode@microsoft.com) adresine e-posta gönderebilirsiniz. - -## Başlayalım - -Bu kursu tamamlamak için gerekli adımları tamamladığınıza göre, şimdi [Üretken Yapay Zeka ve Büyük Dil Modellerine (LLM'ler)](../../../01-introduction-to-genai/README.md?WT.mc_id=academic-105485-koreyst) giriş yaparak başlayalım. diff --git a/00-course-setup/translations/tr/SETUP.md b/00-course-setup/translations/tr/SETUP.md deleted file mode 100644 index 8e0c650058..0000000000 --- a/00-course-setup/translations/tr/SETUP.md +++ /dev/null @@ -1,147 +0,0 @@ -# Geliştirme Ortamınızı Kurun - -Bu depo ve kurs, Python3, .NET, Node.js ve Java geliştirmesini destekleyen Evrensel bir çalışma zamanı içeren bir [geliştirme konteyneri](https://containers.dev?WT.mc_id=academic-105485-koreyst) ile yapılandırılmıştır. İlgili yapılandırma, bu deposunun kök dizininde bulunan `.devcontainer/` klasöründeki `devcontainer.json` dosyasında tanımlanmıştır. - -Geliştirme konteynerini etkinleştirmek için: [GitHub Codespaces](https://docs.github.com/en/codespaces/overview?WT.mc_id=academic-105485-koreyst) kullanarak (bulut tabanlı çalışma zamanı) ya da [Docker Desktop](https://docs.docker.com/desktop/?WT.mc_id=academic-105485-koreyst) kullanarak (yerel cihaz üzerinde barındırılan çalışma zamanı). Geliştirme konteynerlerinin VS Code içinde nasıl çalıştığını daha detaylı öğrenmek için [bu dokümantasyona](https://code.visualstudio.com/docs/devcontainers/containers?WT.mc_id=academic-105485-koreyst) göz atabilirsiniz. - -> [!TIP] -> Hızlı ve kolay bir başlangıç için GitHub Codespaces kullanmanızı öneririz. Kişisel hesaplar için cömert bir [ücretsiz kullanım kotası](https://docs.github.com/billing/managing-billing-for-github-codespaces/about-billing-for-github-codespaces#monthly-included-storage-and-core-hours-for-personal-accounts?WT.mc_id=academic-105485-koreyst) sunar. Ayrıca, boşta kalan çalışma alanlarını durdurmak veya silmek için [zaman aşımı ayarlarını](https://docs.github.com/codespaces/setting-your-user-preferences/setting-your-timeout-period-for-github-codespaces?WT.mc_id=academic-105485-koreyst) yapılandırarak kotanızı verimli şekilde kullanabilirsiniz. 🚀 - - -## 1. Görevleri Çalıştırma - -Her derste, Python, .NET/C#, Java ve JavaScript/TypeScript gibi farklı programlama dillerinde sunulabilecek **isteğe bağlı** görevler yer alacaktır. Bu bölüm, bu görevleri çalıştırmaya yönelik genel yönergeleri sağlar. - -### 1.1 Python Görevleri - -Python görevleri, uygulamalar (`.py` dosyaları) veya Jupyter not defterleri (`.ipynb` dosyaları) olarak sağlanır. - -- **Jupyter not defterini çalıştırmak için**: - - Visual Studio Code'da açın. - - Sağ üst köşede bulunan _"Select Kernel"_ seçeneğine tıklayın. - - Varsayılan **Python 3** seçeneğini seçin. - - **"Run All"** butonuna basarak tüm hücreleri çalıştırabilirsiniz. - -- **Python uygulamalarını komut satırından çalıştırmak için**: - - Doğru dosyaları seçtiğinizden ve gerekli argümanları sağladığınızdan emin olun. - - Göreve özel talimatları takip edin. - - -## 2. Sağlayıcıları Yapılandırma - -Görevler, desteklenen bir hizmet sağlayıcı aracılığıyla bir veya daha fazla Büyük Dil Modeli (LLM) dağıtımıyla çalışacak şekilde ayarlanabilir. Bu sağlayıcılar, uygun kimlik bilgileri (API anahtarı veya token) ile programlı olarak erişebileceğimiz **barındırılmış uç noktalar (API)** sağlar. Bu kursta aşağıdaki sağlayıcıları ele alıyoruz: - -- [OpenAI](https://platform.openai.com/docs/models?WT.mc_id=academic-105485-koreyst) – Çekirdek GPT serisi de dahil olmak üzere çeşitli modeller sunar. -- [Azure OpenAI](https://learn.microsoft.com/azure/ai-services/openai/?WT.mc_id=academic-105485-koreyst) – OpenAI modellerine kurumsal ölçekli erişim sağlar. -- [Hugging Face](https://huggingface.co/docs/hub/index?WT.mc_id=academic-105485-koreyst) – Açık kaynak modelleri ve çıkarım sunucusu (inference server) sunar. - -**Bu alıştırmalar için kendi hesaplarınızı kullanmanız gerekecek**. Görevler isteğe bağlıdır, bu yüzden ilginize bağlı olarak birini, tümünü veya hiçbirini kurmayı seçebilirsiniz. Kayıt süreciyle ilgili bazı rehberlik aşağıda verilmiştir: - - -| Kayıt | Maliyet | API Anahtarı | Playground | Açıklamalar | -|:---|:---|:---|:---|:---| -| [OpenAI](https://platform.openai.com/signup?WT.mc_id=academic-105485-koreyst) | [Fiyatlandırma](https://openai.com/pricing#language-models?WT.mc_id=academic-105485-koreyst) | [Proje Bazlı](https://platform.openai.com/api-keys?WT.mc_id=academic-105485-koreyst) | [Kod Gerektirmeyen, Web](https://platform.openai.com/playground?WT.mc_id=academic-105485-koreyst) | Birden Fazla Model Mevcut | -| [Azure](https://aka.ms/azure/free?WT.mc_id=academic-105485-koreyst) | [Fiyatlandırma](https://azure.microsoft.com/pricing/details/cognitive-services/openai-service/?WT.mc_id=academic-105485-koreyst) | [SDK Hızlı Başlangıç](https://learn.microsoft.com/azure/ai-services/openai/quickstart?WT.mc_id=academic-105485-koreyst) | [Studio Hızlı Başlangıç](https://learn.microsoft.com/azure/ai-services/openai/quickstart?WT.mc_id=academic-105485-koreyst) | [Önceden Başvuru Gerekir](https://learn.microsoft.com/azure/ai-services/openai/?WT.mc_id=academic-105485-koreyst) | -| [Hugging Face](https://huggingface.co/join?WT.mc_id=academic-105485-koreyst) | [Fiyatlandırma](https://huggingface.co/pricing) | [Erişim Tokenları](https://huggingface.co/docs/hub/security-tokens?WT.mc_id=academic-105485-koreyst) | [Hugging Chat](https://huggingface.co/chat/?WT.mc_id=academic-105485-koreyst) | [Hugging Chat sınırlı modellere sahiptir](https://huggingface.co/chat/models?WT.mc_id=academic-105485-koreyst) | -| | | | | | - -Aşağıdaki talimatları izleyerek bu depoyu farklı sağlayıcılarla kullanım için _yapılandırın_. Belirli bir sağlayıcı gerektiren ödevlerin dosya adlarında aşağıdaki etiketlerden biri bulunacaktır: - - `aoai` - Azure OpenAI uç noktası ve anahtarı gerektirir - - `oai` - OpenAI uç noktası ve anahtarı gerektirir - - `hf` - Hugging Face token gerektirir - -Bir veya daha fazla sağlayıcıyı yapılandırabilirsiniz. İlgili ödevler, gerekli kimlik bilgileri eksikse hata verecektir. - - -### 2.1. Create `.env` file - -İlgili sağlayıcıya kaydolduğunuzu ve gerekli kimlik doğrulama bilgilerini (API_KEY veya token) aldığınızı varsayıyoruz. Azure OpenAI durumunda, sohbet tamamlama için en az bir GPT modeli dağıtılmış olan geçerli bir Azure OpenAI Hizmeti (uç nokta) dağıtımınız olduğunu varsayıyoruz. - -Bir sonraki adım, **yerel ortam değişkenlerinizi** aşağıdaki gibi yapılandırmaktır: - -1. Ana dizinde `.env.copy` adlı bir dosya bulun. İçeriği şu şekilde olmalıdır: - - ```bash - # OpenAI Sağlayıcısı - OPENAI_API_KEY='' - - ## Azure OpenAI - AZURE_OPENAI_API_VERSION='2024-02-01' # Varsayılan ayar - AZURE_OPENAI_API_KEY='' - AZURE_OPENAI_ENDPOINT='' - AZURE_OPENAI_DEPLOYMENT='' - AZURE_OPENAI_EMBEDDINGS_DEPLOYMENT='' - - ## Hugging Face - HUGGING_FACE_API_KEY='' - ``` - -2. Bu dosyayı `.env` olarak kopyalamak için aşağıdaki komutu kullanın. Bu dosya _gitignore-d_, olduğu için gizli bilgileriniz korunur. - - ```bash - cp .env.copy .env - ``` - -3. Değerleri (`=` işaretinin sağ tarafındaki yer tutucuları) bir sonraki bölümde açıklandığı gibi doldurun. - -3. (İsteğe bağlı) GitHub Codespaces kullanıyorsanız, ortam değişkenlerini bu depoya bağlı _Codespaces sırları_ olarak kaydetme seçeneğiniz vardır. Bu durumda, yerel bir .env dosyası kurmanıza gerek kalmaz. **Ancak, bu seçeneğin yalnızca GitHub Codespaces kullanıyorsanız çalıştığını unutmayın.** Bunun yerine Docker Desktop kullanıyorsanız, yine de .env dosyasını kurmanız gerekecektir. - - -### 2.2. Populate `.env` file - -Değişken adlarının ne anlama geldiğini anlamak için hızlıca göz atalım: - -| Değişken | Açıklama | -| :--- | :--- | -| HUGGING_FACE_API_KEY | Profilinizde kurduğunuz kullanıcı erişim tokeni | -| OPENAI_API_KEY | Azure olmayan OpenAI uç noktaları için hizmeti kullanma yetkilendirme anahtarı | -| AZURE_OPENAI_API_KEY | Bu hizmeti kullanmak için yetkilendirme anahtarı | -| AZURE_OPENAI_ENDPOINT | Azure OpenAI kaynağı için dağıtılmış uç nokta | -| AZURE_OPENAI_DEPLOYMENT | _Metin üretimi_ model dağıtım uç noktası | -| AZURE_OPENAI_EMBEDDINGS_DEPLOYMENT | _Metin gömme_ model dağıtım uç noktası | -| | | - -Not: Son iki Azure OpenAI değişkeni, sırasıyla sohbet tamamlama (metin üretimi) ve vektör arama (gömme) için varsayılan bir modeli yansıtır. Bunları ayarlama talimatları ilgili ödevlerde tanımlanacaktır. - - -### 2.3 Configure Azure: From Portal - -Azure OpenAI uç noktası ve anahtar değerleri [Azure Portal](https://portal.azure.com?WT.mc_id=academic-105485-koreyst)'da bulunacaktır, bu yüzden oradan başlayalım. - -1. [Azure Portal](https://portal.azure.com?WT.mc_id=academic-105485-koreyst)'a gidin -2. Kenar çubuğundaki (soldaki menü) **Anahtarlar ve Uç Nokta** seçeneğine tıklayın. -3. **Anahtarları Göster**'e tıklayın - şunları görmelisiniz: ANAHTAR 1, ANAHTAR 2 ve Uç Nokta. -4. ANAHTAR 1 değerini AZURE_OPENAI_API_KEY için kullanın -5. Uç Nokta değerini AZURE_OPENAI_ENDPOINT için kullanın - -Ardından, dağıttığımız belirli modeller için uç noktaları belirlememiz gerekiyor. - -1. Azure OpenAI kaynağı için kenar çubuğundaki (sol menü) **Model dağıtımları** seçeneğine tıklayın. -2. Hedef sayfada **Dağıtımları Yönet**'e tıklayın - -Bu sizi Azure OpenAI Studio web sitesine götürecek, burada diğer değerleri aşağıda açıklandığı gibi bulacağız. - -### 2.4 Configure Azure: From Studio - -1. Yukarıda açıklandığı gibi **kaynağınızdan** [Azure OpenAI Studio](https://oai.azure.com?WT.mc_id=academic-105485-koreyst)'ya gidin. -2. Şu anda dağıtılmış modelleri görüntülemek için **Dağıtımlar** sekmesine tıklayın (kenar çubuğu, sol). -3. İstediğiniz model dağıtılmamışsa, dağıtmak için **Yeni dağıtım oluştur**'u kullanın. -4. Bir _metin üretimi_ modeline ihtiyacınız olacak - önerimiz: **gpt-35-turbo** -5. Bir _metin gömme_ modeline ihtiyacınız olacak - önerimiz: **text-embedding-ada-002** - -Şimdi ortam değişkenlerini kullanılan _Dağıtım adını_ yansıtacak şekilde güncelleyin. Bu genellikle açıkça değiştirmediyseniz model adıyla aynı olacaktır. Örneğin, şöyle olabilir: - -```bash -AZURE_OPENAI_DEPLOYMENT='gpt-35-turbo' -AZURE_OPENAI_EMBEDDINGS_DEPLOYMENT='text-embedding-ada-002' -``` - -**İşlem bittiğinde .env dosyasını kaydetmeyi unutmayın**. Artık dosyadan çıkabilir ve not defterini çalıştırma talimatlarına dönebilirsiniz. - -### 2.5 Configure OpenAI: From Profile - -OpenAI API anahtarınızı [OpenAI hesabınızda](https://platform.openai.com/api-keys?WT.mc_id=academic-105485-koreyst) bulabilirsiniz. Eğer hesabınız yoksa, bir hesap oluşturup API anahtarı oluşturabilirsiniz. Anahtarı aldıktan sonra, `.env` dosyasındaki `OPENAI_API_KEY` değişkenini doldurabilirsiniz. - -### 2.6 Configure Hugging Face: From Profile - -Hugging Face tokeninizi profilinizde [Erişim Tokenleri](https://huggingface.co/settings/tokens?WT.mc_id=academic-105485-koreyst) altında bulabilirsiniz. Bunları herkese açık olarak paylaşmayın. Bunun yerine, bu proje kullanımı için yeni bir token oluşturun ve bunu `.env` dosyasında `HUGGING_FACE_API_KEY` değişkeni altına kopyalayın. _Not:_ Bu teknik olarak bir API anahtarı değildir ancak kimlik doğrulama için kullanılır, bu yüzden tutarlılık için bu isimlendirme kuralını koruyoruz. diff --git a/00-course-setup/translations/tw/README.md b/00-course-setup/translations/tw/README.md deleted file mode 100644 index d337eddfca..0000000000 --- a/00-course-setup/translations/tw/README.md +++ /dev/null @@ -1,151 +0,0 @@ -# 開始這門課程 - -我們非常興奮地期待你開始這門課程,看看你會受到什麼啟發來使用生成式 AI 建構! - -為了確保您的成功,本頁概述了設定步驟、技術需求以及在需要時獲取幫助的地方。 - -## 設定步驟 - -要開始這門課程,你需要完成以下步驟。 - -### 1. 複製這個 Repo - -[複製這個整個 repo](https://github.com/microsoft/generative-ai-for-beginners/fork?WT.mc_id=academic-105485-koreyst) 到你自己的 GitHub 帳號,以便更改任何程式碼並完成挑戰。你也可以[標記 (🌟) 這個 repo](https://docs.github.com/en/get-started/exploring-projects-on-github/saving-repositories-with-stars?WT.mc_id=academic-105485-koreyst) 以更容易找到它和相關的 repo。 - -### 2. 建立一個程式碼空間 - -為了避免在執行程式碼時出現任何相依性問題,我們建議在[GitHub Codespaces](https://github.com/features/codespaces?WT.mc_id=academic-105485-koreyst)中執行本課程。 - -這可以通過在您分叉的這個 repo 版本上選擇 `程式碼` 選項並選擇 **Codespaces** 選項來建立。 - -![顯示按鈕以建立程式碼空間的對話框](../../images/who-will-pay.webp?WT.mc_id=academic-105485-koreyst) - -### 3. 儲存您的 API 金鑰 - -保持您的 API 金鑰安全是建構任何類型應用程式時的重要事項。我們建議不要將任何 API 金鑰直接儲存在您的程式碼中。如果將這些詳細資訊提交到公共儲存庫,可能會導致安全問題,甚至在被惡意使用者利用時產生不必要的費用。 - -## 如何在本地電腦上執行 - -要在本機電腦上執行程式碼,你需要安裝某個版本的[Python](https://www.python.org/downloads/?WT.mc_id=academic-105485-koreyst)。 - -要使用這個儲存庫,你需要複製它: - -```shell -git clone https://github.com/microsoft/generative-ai-for-beginners -cd generative-ai-for-beginners -``` - -一旦你檢查完所有內容,就可以開始了! - -### 安裝 Miniconda (可選步驟) - -[Miniconda](https://conda.io/en/latest/miniconda.html?WT.mc_id=academic-105485-koreyst) 是一個輕量級的安裝程式,用於安裝 [Conda](https://docs.conda.io/en/latest?WT.mc_id=academic-105485-koreyst)、Python 以及一些套件。 -Conda 本身是一個套件管理器,使得設定和切換不同的 Python [**虛擬環境**](https://docs.python.org/3/tutorial/venv.html?WT.mc_id=academic-105485-koreyst)和套件變得容易。它也方便用於安裝無法通過 `pip` 獲取的套件。 - -你可以按照[MiniConda 安裝指南](https://docs.anaconda.com/free/miniconda/#quick-command-line-install?WT.mc_id=academic-105485-koreyst)來設定。 - -安裝 Miniconda 後,你需要複製這個[repository](https://github.com/microsoft/generative-ai-for-beginners/fork?WT.mc_id=academic-105485-koreyst) (如果你還沒有的話) - -接下來,你需要建立一個虛擬環境。要使用 Conda 來完成此操作,請繼續建立一個新的環境檔案 (_environment.yml_)。如果你正在使用 Codespaces,請在 `.devcontainer` 目錄中建立此檔案,因此為 `.devcontainer/environment.yml`。 - -請繼續並使用以下程式碼片段填充您的環境文件: - -```yml -name: -channels: - - defaults -dependencies: -- python= -- openai -- python-dotenv -``` - -環境文件指定了我們需要的相依套件。`` 指的是你想用於 Conda 環境的名稱,而 `` 是你想使用的 Python 版本,例如,`3` 是最新的 Python 主要版本。 - -完成後,您可以在命令列/終端機中執行以下命令來建立您的 Conda 環境 - -```bash -conda env create --name ai4beg --file .devcontainer/environment.yml # .devcontainer 子路徑僅適用於 Codespace 設定 -conda activate ai4beg -``` - -請參考[Conda 環境指南](https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html?WT.mc_id=academic-105485-koreyst)如果你遇到任何問題。 - -### 使用 Visual Studio Code 搭配 Python 支援擴充功能 - -我們建議在本課程中使用安裝了[Python 支援擴充功能](https://marketplace.visualstudio.com/items?itemName=ms-python.python&WT.mc_id=academic-105485-koreyst)的[Visual Studio Code (VS Code)](https://code.visualstudio.com/?WT.mc_id=academic-105485-koreyst)編輯器。不過,這只是建議,並不是絕對的要求。 - -> **注意**: 通過在 VS Code 中打開課程儲存庫,你可以選擇在容器中設定專案。這是因為在課程儲存庫中發現的[特殊 `.devcontainer`](https://code.visualstudio.com/docs/devcontainers/containers?itemName=ms-python.python&WT.mc_id=academic-105485-koreyst)目錄。更多內容稍後介紹。 - -> **注意**: 一旦你複製並在 VS Code 中打開目錄,它會自動建議你安裝一個 Python 支援擴充套件。 - -> **注意**: 如果 VS Code 建議你在容器中重新開啟這個儲存庫,請拒絕此請求以使用本地安裝的 Python 版本。 - -### 在瀏覽器中使用 Jupyter - -你也可以在瀏覽器中使用[Jupyter 環境](https://jupyter.org?WT.mc_id=academic-105485-koreyst)來進行專案。經典的 Jupyter 和 [Jupyter Hub](https://jupyter.org/hub?WT.mc_id=academic-105485-koreyst)都提供了相當愉快的開發環境,具有自動完成、程式碼高亮等功能。 - -要在本地啟動 Jupyter,請前往終端機/命令列,導航到課程目錄,並執行: - -```bash -jupyter notebook -``` - -或 - -```bash -jupyterhub -``` - -這將啟動一個 Jupyter 實例,並且訪問它的 URL 將顯示在命令行視窗中。 - -一旦你訪問該 URL,你應該會看到課程大綱並能夠導航到任何 `*.ipynb` 文件。例如,`08-building-search-applications/python/oai-solution.ipynb`。 - -### 執行在容器中 - -設定所有內容在您的電腦或 Codespace 上的替代方法是使用一個[容器](https://en.wikipedia.org/wiki/Containerization_(computing)?WT.mc_id=academic-105485-koreyst)。課程儲存庫中的特殊 `.devcontainer` 資料夾使 VS Code 能夠在容器內設定專案。在 Codespaces 之外,這將需要安裝 Docker,坦白說,這涉及一些工作,因此我們只建議有容器工作經驗的人使用。 - -使用 GitHub Codespaces 時,保持 API 金鑰安全的最佳方法之一是使用 Codespace Secrets。請按照[Codespaces secrets management](https://docs.github.com/en/codespaces/managing-your-codespaces/managing-secrets-for-your-codespaces?WT.mc_id=academic-105485-koreyst)指南來了解更多資訊。 - -## 課程和技術需求 - -這門課程有6個概念課和6個程式碼課。 - -在程式碼課程中,我們使用 Azure OpenAI 服務。您將需要訪問 Azure OpenAI 服務和一個 API 金鑰來執行這段程式碼。您可以通過[完成此申請](https://azure.microsoft.com/products/ai-services/openai-service?WT.mc_id=academic-105485-koreyst)來申請訪問權限。 - -在等待您的應用程式處理時,每個編碼課程還包括一個 `README.md` 文件,您可以在其中查看程式碼和輸出。 - -## 第一次使用 Azure OpenAI 服務 - -如果這是您第一次使用 Azure OpenAI 服務,請按照此指南了解如何[建立和部署 Azure OpenAI 服務資源](https://learn.microsoft.com/azure/ai-services/openai/how-to/create-resource?pivots=web-portal&WT.mc_id=academic-105485-koreyst)。 - -## 第一次使用 OpenAI API - -如果這是您第一次使用 OpenAI API,請按照指南[建立和使用介面](https://platform.openai.com/docs/quickstart?context=pythont&WT.mc_id=academic-105485-koreyst)。 - -## 認識其他學習者 - -我們已經在我們的官方[AI 社群 Discord 伺服器](https://aka.ms/genai-discord?WT.mc_id=academic-105485-koreyst)中建立了頻道,以便與其他學習者會面。這是一個與其他志同道合的企業家、建構者、學生和任何希望在生成式 AI 中提升的人聯繫的好方法。 - -[![加入 discord 頻道](https://dcbadge.limes.pink/api/server/ByRwuEEgH4)](https://aka.ms/genai-discord?WT.mc_id=academic-105485-koreyst) - -專案團隊也會在這個 Discord 伺服器上幫助任何學習者。 - -## 貢獻 - -這門課程是一個開放原始碼計劃。如果您看到改進的地方或問題,請建立一個[Pull Request](https://github.com/microsoft/generative-ai-for-beginners/pulls?WT.mc_id=academic-105485-koreyst)或記錄一個[GitHub issue](https://github.com/microsoft/generative-ai-for-beginners/issues?WT.mc_id=academic-105485-koreyst)。 - -專案團隊將追蹤所有貢獻。對開放原始碼做出貢獻是建立你在生成式 AI 領域職業生涯的驚人方式。 - -大多數的貢獻需要您同意貢獻者許可協議(CLA),聲明您有權並實際上授予我們使用您的貢獻的權利。詳情請訪問[CLA, Contributor License Agreement website](https://cla.microsoft.com?WT.mc_id=academic-105485-koreyst)。 - -重要事項: 在翻譯此 repo 中的文字時,請確保不要使用機器翻譯。我們將通過社群驗證翻譯,因此請僅在您精通的語言中自願進行翻譯。 - -當你提交一個拉取請求時,CLA-bot 會自動判斷你是否需要提供 CLA 並適當地裝飾 PR (例如,標籤、評論)。只需按照 bot 提供的指示操作。你只需在所有使用我們 CLA 的儲存庫中執行一次此操作。 - -此專案已採用[Microsoft 開放原始碼行為準則](https://opensource.microsoft.com/codeofconduct/?WT.mc_id=academic-105485-koreyst)。如需更多資訊,請閱讀行為準則常見問題或聯絡[Email opencode](opencode@microsoft.com)以獲取任何其他問題或意見。 - -## 讓我們開始吧 - -現在你已經完成了完成這門課程所需的步驟,讓我們開始[介紹生成式 AI 和 LLMs](../../../01-introduction-to-genai/translations/tw/README.md?WT.mc_id=academic-105485-koreyst)。 - diff --git a/00-course-setup/translations/tw/SETUP.md b/00-course-setup/translations/tw/SETUP.md deleted file mode 100644 index 4ef65403dc..0000000000 --- a/00-course-setup/translations/tw/SETUP.md +++ /dev/null @@ -1,136 +0,0 @@ -# 設定 Your Dev Environment - -我們設定了這個資料庫和課程,並使用[開發容器](https://containers.dev?WT.mc_id=academic-105485-koreyst),該容器具有通用執行環境,可以支援 Python3、.NET、Node.js 和 Java 開發。相關配置定義在此資料庫根目錄的 `.devcontainer/` 資料夾中的 `devcontainer.json` 文件中。 - -要啟動開發容器,請在[GitHub Codespaces](https://docs.github.com/en/codespaces/overview?WT.mc_id=academic-105485-koreyst)(用於雲端託管的執行環境)或[Docker Desktop](https://docs.docker.com/desktop/?WT.mc_id=academic-105485-koreyst)(用於本地設備託管的執行環境)中啟動它。閱讀[此文件](https://code.visualstudio.com/docs/devcontainers/containers?WT.mc_id=academic-105485-koreyst)以獲取有關開發容器在 VS Code 中如何工作的更多詳細資訊。 - -> [!TIP] -> 我們建議使用 GitHub Codespaces 來快速開始並減少努力。它為個人帳戶提供慷慨的[免費使用配額](https://docs.github.com/billing/managing-billing-for-github-codespaces/about-billing-for-github-codespaces#monthly-included-storage-and-core-hours-for-personal-accounts?WT.mc_id=academic-105485-koreyst)。配置[超時](https://docs.github.com/codespaces/setting-your-user-preferences/setting-your-timeout-period-for-github-codespaces?WT.mc_id=academic-105485-koreyst)以停止或刪除不活動的 codespaces 以最大化您的配額使用。 - -## 1. 執行指派任務 - -每節課將有_可選的_作業,可能會以一種或多種程式語言提供,包括: Python、.NET/C#、Java 和 JavaScript/TypeScript。本節提供與執行這些作業相關的一般指導。 - -### 1.1 Python 指派 - -Python 指派是以應用程式(`.py` 檔案)或 Jupyter 筆記本(`.ipynb` 檔案)提供。 - -- 要執行筆記本,請在 Visual Studio Code 中打開它,然後點擊 _Select Kernel_ (在右上角),並選擇顯示的預設 Python 3 選項。現在你可以 _Run All_ 來執行筆記本。 -- 要從命令列執行 Python 應用程式,請遵循特定作業的指示,以確保選擇正確的檔案並提供所需的參數。 - -## 2. 設定提供者 - -作業**可能**也會被設定為通過像 OpenAI、Azure 或 Hugging Face 這樣的支援服務提供者來對抗一個或多個大型語言模型(LLM)部署。這些提供一個_託管端點_(API),我們可以使用正確的憑證(API 金鑰或令牌)以程式化方式訪問。在本課程中,我們討論這些提供者: - -- [OpenAI](https://platform.openai.com/docs/models?WT.mc_id=academic-105485-koreyst) 包含多樣化模型,包括核心的 GPT 系列。 - - [Azure OpenAI](https://learn.microsoft.com/azure/ai-services/openai/?WT.mc_id=academic-105485-koreyst) 提供專注於企業準備的 OpenAI 模型 - - [Hugging Face](https://huggingface.co/docs/hub/index?WT.mc_id=academic-105485-koreyst) 提供開放原始碼模型和推論伺服器 - -**你將需要使用你自己的帳戶來完成這些練習**。作業是可選的,所以你可以根據自己的興趣選擇設定一個、全部或不設定任何提供者。以下是一些註冊的指導: - -| 註冊 | 費用 | API 金鑰 | 操作平台 | 評論 | -|:---|:---|:---|:---|:---| -| [OpenAI](https://platform.openai.com/signup?WT.mc_id=academic-105485-koreyst)| [價格](https://openai.com/pricing#language-models?WT.mc_id=academic-105485-koreyst)| [基於專案](https://platform.openai.com/api-keys?WT.mc_id=academic-105485-koreyst) | [無程式碼, 網頁](https://platform.openai.com/playground?WT.mc_id=academic-105485-koreyst) | 多種模型可用 | -| [Azure](https://aka.ms/azure/free?WT.mc_id=academic-105485-koreyst)| [價格](https://azure.microsoft.com/pricing/details/cognitive-services/openai-service/?WT.mc_id=academic-105485-koreyst)| [SDK 快速入門](https://learn.microsoft.com/azure/ai-services/openai/quickstart?WT.mc_id=academic-105485-koreyst)| [Studio 快速入門](https://learn.microsoft.com/azure/ai-services/openai/quickstart?WT.mc_id=academic-105485-koreyst) | [必須提前申請訪問](https://learn.microsoft.com/azure/ai-services/openai/?WT.mc_id=academic-105485-koreyst)| -| [Hugging Face](https://huggingface.co/join?WT.mc_id=academic-105485-koreyst) | [價格](https://huggingface.co/pricing) | [存取權杖](https://huggingface.co/docs/hub/security-tokens?WT.mc_id=academic-105485-koreyst) | [Hugging Chat](https://huggingface.co/chat/?WT.mc_id=academic-105485-koreyst)| [Hugging Chat 有限的模型](https://huggingface.co/chat/models?WT.mc_id=academic-105485-koreyst) | -| | | | | | - -按照以下指示來_配置_此儲存庫以供不同提供者使用。需要特定提供者的作業將在其檔案名中包含以下標籤之一: - -- `aoai` - 需要 Azure OpenAI 端點, 金鑰 - - `oai` - 需要 OpenAI 端點, 金鑰 - - `hf` - 需要 Hugging Face token - -您可以設定一個、沒有或所有提供者。相關的分配將在缺少憑證時簡單地出錯。 - -### 2.1. 建立 `.env` 文件 - -我們假設您已經閱讀了上述指南並註冊了相關提供者,並獲得了所需的身份驗證憑證(API_KEY 或 token)。在 Azure OpenAI 的情況下,我們假設您還擁有一個有效的 Azure OpenAI 服務部署(endpoint),並至少部署了一個 GPT 模型以完成聊天。 - -下一步是按如下方式配置你的**本地環境變數**: - -1. 在根目錄中查找 `.env.copy` 文件,內容應如下所示: - - ```bash - # OpenAI Provider - OPENAI_API_KEY='' - - ## Azure OpenAI - AZURE_OPENAI_API_VERSION='2024-02-01' # Default is set! - AZURE_OPENAI_API_KEY='' - AZURE_OPENAI_ENDPOINT='' - AZURE_OPENAI_DEPLOYMENT='' - AZURE_OPENAI_EMBEDDINGS_DEPLOYMENT='' - - ## Hugging Face - HUGGING_FACE_API_KEY='' - ``` - -2. 使用以下命令將該文件複製到 `.env`。此文件已被 _gitignore-d_,以保護秘密資訊。 - - ```bash - cp .env.copy .env - ``` - -3. 按照下一節中的描述填寫值(替換 `=` 右側的佔位符)。 - -3. (選項) 如果您使用 GitHub Codespaces,您可以選擇將環境變數保存為與此存儲庫關聯的 _Codespaces secrets_。在這種情況下,您不需要設置本地 .env 文件。**但是,請注意,此選項僅在您使用 GitHub Codespaces 時有效。**如果您使用 Docker Desktop,仍然需要設置 .env 文件。 - -### 2.2. 填寫 `.env` 檔案 - -讓我們快速看一下變數名稱,以了解它們代表什麼: - -| Variable | Description | -| :--- | :--- | -| HUGGING_FACE_API_KEY | 這是您在個人資料中設定的使用者存取權杖 | -| OPENAI_API_KEY | 這是用於非 Azure OpenAI 端點服務的授權金鑰 | -| AZURE_OPENAI_API_KEY | 這是用於該服務的授權金鑰 | -| AZURE_OPENAI_ENDPOINT | 這是 Azure OpenAI 資源的部署端點 | -| AZURE_OPENAI_DEPLOYMENT | 這是 _文本生成_ 模型的部署端點 | -| AZURE_OPENAI_EMBEDDINGS_DEPLOYMENT | 這是 _文本嵌入_ 模型的部署端點 | -| | | - -注意: 最後兩個 Azure OpenAI 變數分別反映了聊天完成(文字產生)和向量搜尋(嵌入)的預設模型。設定它們的說明將在相關作業中定義。 - -### 2.3 設定 Azure: 從 Portal - -Azure OpenAI 端點和金鑰值可以在 [Azure Portal](https://portal.azure.com?WT.mc_id=academic-105485-koreyst) 找到,所以讓我們從那裡開始。 - -1. 前往 [Azure Portal](https://portal.azure.com?WT.mc_id=academic-105485-koreyst) -1. 點擊側邊欄中的 **Keys and Endpoint** 選項(左側選單)。 -1. 點擊 **Show Keys** - 你應該會看到以下內容: KEY 1, KEY 2 和 Endpoint。 -1. 使用 KEY 1 的值作為 AZURE_OPENAI_API_KEY -1. 使用 Endpoint 的值作為 AZURE_OPENAI_ENDPOINT - -接下來,我們需要已部署的特定模型的端點。 - -1. 在側邊欄(左側選單)中點擊 **Model deployments** 選項以獲取 Azure OpenAI 資源。 -1. 在目標頁面中,點擊 **Manage Deployments** - -這將帶你到 Azure OpenAI Studio 網站,我們會在那裡找到如下所述的其他值。 - -### 2.4 設定 Azure: 從 Studio - -1. 按照上述說明從你的資源導航到 [Azure OpenAI Studio](https://oai.azure.com?WT.mc_id=academic-105485-koreyst)。 -1. 點擊 **Deployments** 標籤(側邊欄,左側)以查看當前部署的模型。 -1. 如果你想要的模型尚未部署,使用 **Create new deployment** 來部署它。 -1. 你將需要一個 _text-generation_ 模型 - 我們推薦: **gpt-35-turbo** -1. 你將需要一個 _text-embedding_ 模型 - 我們推薦 **text-embedding-ada-002** - -現在更新環境變數以反映所使用的_部署名稱_。這通常與模型名稱相同,除非你明確更改了它。因此,作為範例,你可能會有: - -```bash -AZURE_OPENAI_DEPLOYMENT='gpt-35-turbo' -AZURE_OPENAI_EMBEDDINGS_DEPLOYMENT='text-embedding-ada-002' -``` - -**不要忘記在完成後保存.env文件**。你現在可以退出文件並返回執行筆記本的說明。 - -### 2.5 設定 OpenAI: 從 Profile - -你的 OpenAI API 金鑰可以在你的 [OpenAI 帳戶](https://platform.openai.com/api-keys?WT.mc_id=academic-105485-koreyst)中找到。如果你沒有,你可以註冊一個帳戶並建立一個 API 金鑰。一旦你有了金鑰,你可以用它來填充 `.env` 檔案中的 `OPENAI_API_KEY` 變數。 - -### 2.6 設定 Hugging Face: 從個人資料 - -您的 Hugging Face token 可以在您的個人資料中的[Access Tokens](https://huggingface.co/settings/tokens?WT.mc_id=academic-105485-koreyst)找到。不要公開張貼或分享這些資訊。相反地,為此專案使用建立一個新的 token,並將其複製到 `.env` 檔案中的 `HUGGING_FACE_API_KEY` 變數下。_注意:_ 這在技術上不是 API key,但用於身份驗證,因此我們保持這個命名慣例以保持一致性。 - diff --git a/01-introduction-to-genai/translations/cn/README.md b/01-introduction-to-genai/translations/cn/README.md deleted file mode 100644 index 352cbe0888..0000000000 --- a/01-introduction-to-genai/translations/cn/README.md +++ /dev/null @@ -1,136 +0,0 @@ -# 第一章 : 生成式人工智能和 LLMs 介绍 - -[![Introduction to Generative AI and Large Language Models](../../images/01-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson-1-gh?WT.mc_id=academic-105485-koreyst) - -_(点击该图片看本章导学视频)_ - -生成式人工智能是能够生成文本、图像和其他类型内容的人工智能。 它之所以成为一项出色的技术,是因为它使人工智能更通用化,任何人都可以使用它,只需简单文本提示,使用自然语言编写的提示词。 你不需要学习 Java 或 SQL 这样的语言来完成一些有价值的事情,你只需要使用你的日常语言,描述需要的东西,然后 LLMs 就会给出相关建议。 其应用场景和影响是巨大的,您可以在几秒钟内完成写作或理解报告、编写应用程序等。 - -在本课程中,我们将探讨我们的初创公司如何利用生成式人工智能来解锁教育界的新场景,以及如何利用生成式人工智能解决与该应用的社会影响和技术限制相关的不可避免的挑战。 - -## 本章概述 - -本课程将包含以下内容: - -- 业务场景介绍:我们的创业理念和使命。 -- 生成式人工智能以及我们如何适应当前的技术格局。 -- LLMs 的内部工作原理。 -- LLMs 的主要功能和实际用例。 - -## 学习目标 - -学习完本课程后,您将会了解到: - -- 什么是生成式人工智能以及 LLMs 如何工作。 -- 如何针对不同的使用 LLMs 的例子(这里我们重点关注教育场景)。 - -## 场景: our educational startup - -生成人工智能 (AI) 代表了人工智能技术的巅峰,突破了曾经被认为不可能的界限。 生成式人工智能模型具有多模态的功能,在本课程中,我们将会讲述一间虚构的初创公司利用生成式人工智能改变传统教育方式的故事。 我们将这家初创公司称为“Our startup”。 Our startup 致力于教育领域,其雄心勃勃的使命宣言是 - -> _在全球范围内提高学习的可及性,确保公平的受教育机会,并根据每个学习者的需求为他们提供个性化的学习体验_。 - -我们的初创团队意识到,如果不利用现代最强大的工具之—— LLM,我们将无法实现这一目标。 - -生成式人工智能有望彻底改变我们今天的学习和教学方式,学生可以每天 24 小时使用虚拟教师,虚拟教室不仅能提供大量信息和示例,也能够利用创新的工具来评估学生并提供反馈。 - -![Five young students looking at a monitor - image by DALLE2](../../images/students-by-DALLE2.png?WT.mc_id=academic-105485-koreyst) - -首先,让我们来学习一些将在整个课程系列中使用的基本概念和术语。 - -## 我们是如何获得生成式人工智能的? - -尽管最近因生成人工智能模型的发布而引起了对人工智能技术的“炒作”,但人工智能已经有数十年的历史,最早的研究工作可以追溯到上世纪 60 年代。 我们现在正处于 AI 具有人类认知能力的阶段,例如 [OpenAI ChatGPT](https://openai.com/chatgpt?WT.mc_id=academic-105485-koreyst) 或 [Bing Chat](https://www.microsoft.com/edge/features/bing-chat?WT.mc_id=academic-105485-koreyst) 也在用 GPT 模型进行对话。 - -稍微回顾一下,人工智能的第一个原型是打字的聊天机器人,依赖于从一组专家系统中提取到计算机中的知识库。 知识库中的答案是由输入文本中出现的关键字触发的。 -然而,很快大家就发现,这种使用打字聊天机器人的方法并不能很好地扩展。 - -### 人工智能的统计学:机器学习 - -随着统计学在文本分析中的应用,20 世纪 90 年代出现了一个转折点。 这导致了新算法的发展——被称为机器学习——能够从数据中学习的模式,不需要使用显式编程。 这种方法允许机器模拟人类语言理解:在文本标签配对上训练统计模型,使模型能够使用代表消息意图的预定义标签对未知输入文本进行分类。 - -### 神经网络和现代虚拟助手的出现 - -近年来,硬件技术的发展能够处理更大量的数据和更复杂的计算,让人工智能领域的研究得以加速,从而导致了更先进的机器学习算法(称为神经网络或深度学习算法)的发展。 - -神经网络(特别是循环神经网络 - RNN)显著增强了自然语言处理领域的应用,能够以更有意义的方式表示文本含义,并重视句子中单词的上下文之间的联系。 - -这项技术为新世纪第一个十年诞生的虚拟助手提供了动力,它们非常精通解释人类语言、识别需求并执行满足需求的操作,例如使用预定义的脚本进行回答或使用第三方服务。 - -### 今天 - 生成式人工智能的诞生 - -这就是我们今天提出生成式人工智能的原因,它可以被视为深度学习的一个子集。 - -![AI、ML、DL 和生成式 AI](../../images/AI-diagram.png?WT.mc_id=academic-105485-koreyst) - -经过人工智能领域数十年的研究,一种名为 _Transformer_ 的新模型架构克服了 RNN 的限制,能够获得更长的文本序列作为输入。 Transformer 基于注意力机制,使模型能够为其接收到的输入赋予不同的权重,“更加专注于”关联信息集中的地方,不管它们在文本序列中的顺序如何。 - -生成式人工智能模型也称为 LLM,因为它们使用文本输入和输出的架构。 这些模型的有趣之处在于,它们经过来自书籍、文章和网站等不同来源的大量未标记数据的训练,可以适应各种各样的任务,并以创造性的方式生成语法正确的文本。 因此,它们不仅极大地增强了机器“理解”输入文本的能力,而且使机器能够以人类语言生成原始响应。 - -## LLMs 如何工作? - -在下一章中,我们将探索不同类型的生成式 AI 模型,但现在让我们看看大型语言模型是如何工作的,重点是 OpenAI GPT(生成式预训练 Transformer)模型。 - -- **分词器,文本到数字**:大型语言模型接收文本作为输入并生成文本作为输出。 然而,作为统计模型,它们对数字的处理效果对比起文本序列的处理效果要好得多。 这就是为什么模型的每个输入在被核心模型使用之前都由分词器处理。 标记是一段文本——由可变数量的字符组成,因此标记器的主要任务是将输入分割成标记数组。 然后,每个令牌都映射有一个令牌索引,该索引是原始文本块的整数编码。 - -![Example of tokenization](../../images/tokenizer-example.png?WT.mc_id=academic-105485-koreyst) - -- **预测输出标记**:给定 n 个标记作为输入(最大 n 因模型而异),模型能够预测一个标记作为输出。 然后,该标记会以扩展窗口模式合并到下一次迭代的输入中,从而获得一个(或多个)句子作为答案,生成结果有更好的用户体验。 这解释了为什么如果您曾经使用过 ChatGPT,您可能会注意到有时它在生成结果时在句子中间出现停顿。 - -- **选择过程,概率分布**:模型根据其在当前文本序列之后出现的概率来选择输出标记。 这是因为该模型预测了根据其训练计算出的所有可能的“下一个标记”的概率分布。 然而,并不总是从结果分布中选择概率最高的标记。 这种选择增加了一定程度的随机性,模型以非确定性方式运行——对于相同的输入,我们不会得到完全相同的输出。 添加这种程度的随机性是为了模拟人类创造性思维的过程,您可以使用称为温度的模型参数进行调整。 - -## “Our startup” 如何利用 LLMs ? - -现在我们对 LLMs 的内部工作有了更好的了解,让我们看看它们可以很好地执行的最常见任务的一些实际示例,并着眼于我们的业务场景。 -我们说过, LLMs 的主要功能是*从头开始生成文本,从文本输入开始,用自然语言编写*。 - -但是是什么样的文本输入和输出呢? -大型语言模型的输入称为提示,而输出称为补全,术语指的是生成下一个标记来完成当前输入的模型机制。 我们将深入探讨什么是提示以及如何设计它以充分和我们的模型进行交流。 但现在,我们假设提示可能包括: - -- 通过一条**指令**,指定我们期望模型输出的类型。 该指令有时可能会嵌入一些示例或一些附加数据。 - - 1. 文章、书籍、产品评论等的总结,以及从非结构化数据中提取见解。 - - ![摘要示例](../../images/summarization-example.png?WT.mc_id=academic-105485-koreyst) - - 2. 文章、论文、作业等的创意构思和设计。 - - ![创意写作示例](../../images/creative-writing-example.png?WT.mc_id=academic-105485-koreyst) - -- **问题**,以与代理对话的形式提出。 - - ![对话示例](../../images/conversation-example.png?WT.mc_id=academic-105485-koreyst) - -- **文本补全**,这隐含着对写作帮助的请求。 - - ![文本完成示例](../../images/text-completion-example.png?WT.mc_id=academic-105485-koreyst) - -- **代码**解释和记录需求,或者要求生成执行特定任务的一段代码的注释。 - - ![编码示例](../../images/coding-example.png?WT.mc_id=academic-105485-koreyst) - -以上的例子非常简单,并不是对生成式人工智能功能的详尽演示。 只是想展示使用生成式人工智能的潜力,并不局限于教育领域。 - -此外,生成式人工智能模型的输出并不完美,有时模型的创造力可能会对其产生不利影响,导致输出是人类用户可以将其解释为现实神秘化的单词组合,或者具有攻击性。 生成式人工智能并不智能——至少在更全面的智能定义中是这样,包括批判性和创造性推理或情商; 它不是确定性的,也不值得信赖,因为错误的引用、内容和陈述等幻觉可能会与正确的信息结合起来,并以有说服力和自信的方式呈现。 在接下来的课程中,我们将处理所有这些限制,并了解可以采取哪些措施来降低影响。 - -## 任务 - -你的任务是阅读更多关于生成式人工智能(https://en.wikipedia.org/wiki/Generative_artificial_intelligence)的内容,并尝试找出一个你现在可以添加生成式人工智能但目前还没有的领域。 与用“旧式方法”做有什么不同,你能做一些你以前做不到的事情吗,或者生成的时候速度更快吗? 写一篇 300 字的摘要,描述您梦想的人工智能初创公司的样子,包括“问题”、“我将如何使用人工智能”、“影响”等标题,还可以选择做一份商业计划。 - -如果您完成了此任务,您甚至可以准备好申请 Microsoft 的创业孵化器[Microsoft for Startups Founders Hub](https://www.microsoft.com/startups?WT.mc_id=academic-105485-koreyst),我们为您提供 Azure 和 OpenAIc redits 以及相关指导等等 - -## 知识检查 - -大型语言模型的真实情况是什么? - -1. 你每次都会得到完全相同的回应。 -2. 它做得很完美,擅长添加数字、生成工作代码等 -3. 尽管使用相同的提示,但响应可能会有所不同。 它还非常适合为您提供某些内容的初稿,无论是文本还是代码。 但你需要改进结果。 - -正确答案:3、LLM 是不确定性的,响应会有所不同,但是您可以通过温度设置来控制其输出。 你也不应该期望它能完美地完成事情,它是为你做繁重的工作的,这通常意味着你需要不断改进才能得到了良好的结果。 - -## 继续您的学习旅程 - -想要了解更多关于不同的生成人工智能概念吗? 请到[进阶学习的页面](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) 查找有关此主题的其他学习资源。 - -前往第二章,我们将了解如何[探索和比较不同的 LLM 类型](../../../02-exploring-and-comparing-different-llms/translations/cn/README.md?WT.mc_id=academic-105485-koreyst)! diff --git a/01-introduction-to-genai/translations/es-mx/README.md b/01-introduction-to-genai/translations/es-mx/README.md deleted file mode 100644 index 487cba993a..0000000000 --- a/01-introduction-to-genai/translations/es-mx/README.md +++ /dev/null @@ -1,144 +0,0 @@ -# 📚 Introducción a la Inteligencia Artificial Generativa y a los Modelos de Lenguaje Grandes - -[![Introducción a la Inteligencia Artificial Generativa y a los Modelos de Lenguaje Grandes](../../images/01-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson-1-gh?WT.mc_id=academic-105485-koreyst) - -_(Haz clic en la imagen de arriba para ver el video de esta lección)_ - -La Inteligencia Artificial Generativa es una forma de inteligencia artificial capaz de generar texto, imágenes y otros tipos de contenido. Lo que la hace una tecnología fantástica es que democratiza la IA; cualquiera puede utilizarla con tan solo una indicación de texto, una oración escrita en un lenguaje natural. No es necesario que aprendas un lenguaje como Java o SQL para lograr algo valioso; todo lo que necesitas es usar tu propio lenguaje, expresar lo que deseas, y obtendrás sugerencias de un modelo de IA. Las aplicaciones e impacto de esto son enormes: puedes redactar o entender informes, escribir aplicaciones y mucho más, todo en cuestión de segundos. - -En este plan de estudios, exploraremos cómo nuestra startup aprovecha la inteligencia artificial generativa para desbloquear nuevos escenarios en el mundo de la educación, y cómo abordamos los inevitables desafíos asociados con las implicaciones sociales de su aplicación y las limitaciones tecnológicas. - -## Introducción - -Esta lección cubrirá: - -- Introducción al escenario empresarial: nuestra idea y misión como startup. -- Inteligencia Artificial Generativa y cómo llegamos al panorama tecnológico actual. -- Funcionamiento interno de un modelo de lenguaje grande. -- Principales capacidades y casos de uso prácticos de los Modelos de Lenguaje Grandes. - -## Objetivos de Aprendizaje - -Después de completar esta lección, comprenderás: - -- Qué es la inteligencia artificial generativa y cómo funcionan los Modelos de Lenguaje Grandes. -- Cómo puedes aprovechar los modelos de lenguaje grandes para diferentes casos de uso, con un enfoque en escenarios educativos. - -## Escenario: nuestra startup educativa - -La Inteligencia Artificial Generativa (IA) representa la cúspide de la tecnología de la IA, empujando los límites de lo que antes se consideraba imposible. Los modelos de IA generativa tienen varias capacidades y aplicaciones, pero en este plan de estudios exploraremos cómo está revolucionando la educación a través de una startup ficticia. Nos referiremos a esta startup como nuestra startup. Nuestra startup opera en el ámbito educativo con la ambiciosa declaración de misión de: - -> _mejorar la accesibilidad en el aprendizaje a escala global, garantizando un acceso equitativo a la educación y proporcionando experiencias de aprendizaje personalizadas a cada estudiante, según sus necesidades._. - -Nuestro equipo de startup es consciente de que no podremos alcanzar este objetivo sin aprovechar una de las herramientas más poderosas de los tiempos modernos: los Modelos de Lenguaje Grandes (LLMs). - -Se espera que la Inteligencia Artificial Generativa revolucione la forma en que aprendemos y enseñamos hoy en día, con estudiantes teniendo a su disposición profesores virtuales las 24 horas del día que proporcionan grandes cantidades de información y ejemplos, y profesores capaces de aprovechar herramientas innovadoras para evaluar a sus estudiantes y brindar retroalimentación. - -![Cinco jóvenes estudiantes mirando un monitor. - image by DALLE2](../../images/students-by-DALLE2.png?WT.mc_id=academic-105485-koreyst) - -Para empezar, definamos algunos conceptos y terminología básicos que utilizaremos a lo largo del plan de estudios. - -## ¿Cómo llegamos a la Inteligencia Artificial Generativa? - -A pesar del extraordinario _hype_ creado recientemente por el anuncio de modelos de IA generativa, esta tecnología lleva décadas en desarrollo, con los primeros esfuerzos de investigación remontándose a los años 60. Ahora estamos en un punto en el que la IA tiene capacidades cognitivas humanas, como la conversación, como se muestra, por ejemplo [OpenAI ChatGPT](https://openai.com/chatgpt) o [Bing Chat](https://www.microsoft.com/edge/features/bing-chat?WT.mc_id=academic-105485-koreyst), que también utiliza un modelo GPT para las conversaciones de búsqueda web en Bing. - -Volviendo un poco atrás, los primeros prototipos de IA consistían en chatbots mecanografiados, que dependían de una base de conocimientos extraída de un grupo de expertos y representada en una computadora. Las respuestas en la base de conocimientos eran activadas por palabras clave que aparecían en el texto de entrada. Sin embargo, pronto quedó claro que este enfoque, utilizando chatbots mecanografiados, no escalaba bien. - -### Enfoque estadístico para la Inteligencia Artificial: Aprendizaje Automático - -Un punto de inflexión llegó durante los años 90, con la aplicación de un enfoque estadístico para el análisis de texto. Esto llevó al desarrollo de nuevos algoritmos, conocidos con el nombre de aprendizaje automático, capaces de aprender patrones a partir de datos sin ser programados explícitamente. Este enfoque permite que una máquina simule la comprensión del lenguaje humano: un modelo estadístico se entrena en pares de texto y etiquetas, lo que permite al modelo clasificar texto de entrada desconocido con una etiqueta predefinida que representa la intención del mensaje. - -### Redes neuronales y asistentes virtuales modernos - -En tiempos más recientes, la evolución tecnológica del hardware, capaz de manejar mayores cantidades de datos y cálculos más complejos, estimuló la investigación en los campos de la inteligencia artificial, llevando al desarrollo de algoritmos avanzados de aprendizaje automático, llamados redes neuronales o algoritmos de aprendizaje profundo. - -Las redes neuronales (y en particular las Redes Neuronales Recurrentes - RNN) mejoraron significativamente el procesamiento del lenguaje natural, permitiendo la representación del significado del texto de una manera más significativa, valorando el contexto de una palabra en una oración. - -Esta es la tecnología que impulsó a los asistentes virtuales nacidos en la primera década del nuevo siglo, muy competentes en interpretar el lenguaje humano, identificar una necesidad y realizar una acción para satisfacerla, como responder con un guion predefinido o consumir un servicio de terceros. - -### En la actualidad, la Inteligencia Artificial Generativa - -Así es como llegamos a la Inteligencia Artificial Generativa hoy en día, que se puede considerar como un subconjunto del aprendizaje profundo. - -![AI, ML, DL y IA Generativa](../../images/AI-diagram.png?WT.mc_id=academic-105485-koreyst) - -Después de décadas de investigación en el campo de la inteligencia artificial, una nueva arquitectura de modelo, - llamada _Transformer_ – superó los límites de las RNN, siendo capaz de manejar secuencias de texto mucho más largas como entrada. Los Transformers se basan en el mecanismo de atención, lo que permite al modelo asignar diferentes pesos a las entradas que recibe, ‘prestando más atención’ donde se concentra la información más relevante, independientemente de su orden en la secuencia de texto. - -La mayoría de los modelos recientes de Inteligencia Artificial Generativa, también conocidos como Modelos de Lenguaje Grandes (LLMs, por sus siglas en inglés), ya que trabajan con entradas y salidas de texto, están basados de hecho en esta arquitectura. Lo interesante de estos modelos, entrenados con una gran cantidad de datos no etiquetados de diversas fuentes como libros, artículos y sitios web, es que pueden adaptarse a una amplia variedad de tareas y generar texto gramaticalmente correcto con un atisbo de creatividad. Por lo tanto, no solo mejoraron de manera increíble la capacidad de una máquina para 'entender' un texto de entrada, sino que también habilitaron su capacidad para generar una respuesta original en lenguaje humano. - -## ¿Cómo funcionan los grandes modelos de lenguaje? - -En el próximo capítulo exploraremos diferentes tipos de modelos de Inteligencia Artificial Generativa, pero por ahora echemos un vistazo a cómo funcionan los grandes modelos de lenguaje, con un enfoque en los modelos de OpenAI GPT (Generative Pre-trained Transformer). - -- **Tokenizador, texto a números**: Los grandes modelos de lenguaje reciben un texto como entrada y generan un texto como salida. Sin embargo, al ser modelos estadísticos, funcionan mucho mejor con números que con secuencias de texto. Es por eso que cada entrada al modelo se procesa mediante un tokenizador antes de ser utilizada por el modelo central. Un token es un fragmento de texto, que consiste en un número variable de caracteres. La tarea principal del tokenizador es dividir la entrada en un conjunto de tokens. Luego, cada token se asigna con un índice de token, que es la codificación entera del fragmento de texto original. - -![Ejemplo de tokenización](../../images/tokenizer-example.png?WT.mc_id=academic-105485-koreyst) - -- **Predicción de tokens de salida**: Dado un conjunto de n tokens como entrada (con un máximo n que varía de un modelo a otro), el modelo es capaz de predecir un token como salida. Este token se incorpora luego a la entrada de la siguiente iteración, en un patrón de ventana expansiva, lo que permite una mejor experiencia del usuario al obtener una (o varias) oraciones como respuesta. Esto explica por qué, si alguna vez has interactuado con ChatGPT, es posible que hayas notado que a veces parece detenerse en medio de una oración. - -- **Proceso de selección, distribución de probabilidad**: El token de salida es elegido por el modelo de acuerdo con su probabilidad de ocurrir después de la secuencia de texto actual. Esto se debe a que el modelo predice una distribución de probabilidad sobre todos los posibles 'próximos tokens', calculados en base a su entrenamiento. Sin embargo, no siempre se elige el token con la probabilidad más alta de la distribución resultante. Se añade un grado de aleatoriedad a esta elección, de manera que el modelo actúa de manera no determinista; no obtenemos la misma salida exacta para la misma entrada. Este grado de aleatoriedad se agrega para simular el proceso de pensamiento creativo y se puede ajustar utilizando un parámetro del modelo llamado temperatura. - -## ¿Cómo puede nuestra startup aprovechar los grandes modelos de lenguaje? - -Ahora que tenemos una mejor comprensión del funcionamiento interno de un modelo de lenguaje grande, veamos algunos ejemplos prácticos de las tareas más comunes que pueden realizar bastante bien, con atención a nuestro escenario empresarial. Dijimos que la capacidad principal de un Modelo de Lenguaje Grande es _generar texto desde cero, a partir de una entrada textual escrita en lenguaje natural_. - -¿Pero qué tipo de entrada y salida textual? -La entrada de un gran modelo de lenguaje se conoce como "prompt" (indicación), mientras que la salida se conoce como "completion" (completado), término que se refiere al mecanismo del modelo de generar el próximo token para completar la entrada actual. Vamos a profundizar en lo que es un "prompt" y cómo diseñarlo de manera que aprovechemos al máximo nuestro modelo. Pero por ahora, simplemente diremos que un "prompt" puede incluir: - -- Una **instrucción** especificando el tipo de salida que esperamos del modelo. Esta instrucción a veces puede incluir algunos ejemplos o datos adicionales. - - 1. Resumen de un artículo, libro, reseñas de productos y más, junto con la extracción de información clave a partir de datos no estructurados. - - ![Ejemplo de resumen](../../images/summarization-example.png?WT.mc_id=academic-105485-koreyst) - -
- - 2. Ideación creativa y diseño de un artículo, un ensayo, una tarea u otros. - - ![Ejemplo de escritura creativa](../../images/creative-writing-example.png?WT.mc_id=academic-105485-koreyst) - -
- -- Una **pregunta**, preguntado en forma de conversación con un agente. - -![Ejemplo de conversación](../../images/conversation-example.png?WT.mc_id=academic-105485-koreyst) - -
- -- Un fragmento de **texto por completar**, lo cual implícitamente es una solicitud de ayuda en la escritura. - -![Ejemplo de finalización de texto](../../images/text-completion-example.png?WT.mc_id=academic-105485-koreyst) - -
- -- Un trozo de **código** junto con la petición de explicarlo y documentarlo, o un comentario pidiendo generar un fragmento de código que realice una tarea específica. - -![Ejemplo de código](../../images/coding-example.png?WT.mc_id=academic-105485-koreyst) - -
- -Los ejemplos anteriores son bastante simples y no pretenden ser una demostración exhaustiva de las capacidades de los modelos de lenguaje grandes. Solo quieren mostrar el potencial del uso de la IA generativa, en particular, pero no limitado al contexto educativo. - -Además, el resultado de un modelo de IA generativa no es perfecto y, a veces, la creatividad del modelo puede ir en su contra, dando como respuesta un resultado que es una combinación de palabras que el usuario humano puede interpretar como una mistificación de la realidad, o puede ser ofensivo. La IA generativa no es inteligente, al menos en la definición más amplia de inteligencia, que incluye el razonamiento crítico y creativo o la inteligencia emocional; no es determinista y no es confiable, ya que las mentiras, como referencias, contenidos y declaraciones erróneas, pueden combinarse con información correcta y presentarse de manera persuasiva y segura. En las siguientes lecciones, abordaremos todas estas limitaciones y veremos qué podemos hacer para mitigarlas. - -## Asignación - -Tu tarea es investigar más sobre [IA generativa](https://en.wikipedia.org/wiki/Generative_artificial_intelligence?WT.mc_id=academic-105485-koreyst) e intentar identificar un área donde agregarías inteligencia artificial generativa hoy en día que aún no la tenga. ¿Cómo sería diferente el impacto de hacerlo de la "manera antigua"? ¿Puedes hacer algo que no podrías hacer antes o eres más rápido? Escribe un resumen de 300 palabras sobre cómo sería tu ideal startup de inteligencia artificial e incluye los encabezados como "Problema", "¿Cómo usaría la IA?", "Impacto" y opcionalmente un plan de negocios. - -Si realizas esta tarea, incluso podrías estar listo para postularte al programa de incubación de Microsoft, [Microsoft for Startups Founders Hub](https://www.microsoft.com/startups?WT.mc_id=academic-105485-koreyst) Ofrecemos créditos para Azure, OpenAI, mentoría y mucho más, échale un vistazo.! - -## Verificación de conocimientos - -¿Qué es cierto acerca de los grandes modelos de lenguaje (LLM's, Large Language Models en ingles)? - -1. Obtienes la misma respuesta exacta cada vez. -2. Realiza tareas de manera perfecta, es excelente sumando números, produciendo código funcional, etc. -3. La respuesta puede variar a pesar de usar el mismo prompt. También es excelente para ofrecerte un primer borrador de algo, ya sea texto o código. Sin embargo, necesitas mejorar los resultados. - -A: 3. Un LLM (Large Language Model) es no determinista, las respuestas varían, sin embargo, puedes controlar su variabilidad mediante un ajuste de temperatura. Tampoco debes esperar que haga las cosas de manera perfecta; está aquí para hacer el trabajo pesado por ti, lo que a menudo significa que obtienes un buen primer intento en algo que necesitas mejorar gradualmente. - -## ¡Gran trabajo! ¡Continúa el viaje! - -Después de completar esta lección, echa un vistazo a nuestra [Colección de Aprendizaje de IA Generativa](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) Para seguir mejorando tu conocimiento en IA Generativa! - -Dirígete a la Lección 2 donde veremos cómo [explorar y comparar diferentes tipos de LLM](../../../02-exploring-and-comparing-different-llms/README.md?WT.mc_id=academic-105485-koreyst)! diff --git a/01-introduction-to-genai/translations/ja-jp/README.md b/01-introduction-to-genai/translations/ja-jp/README.md deleted file mode 100644 index 5047b05e43..0000000000 --- a/01-introduction-to-genai/translations/ja-jp/README.md +++ /dev/null @@ -1,176 +0,0 @@ -# 生成 AI と大規模言語モデルの紹介 - -[![Introduction to Generative AI and Large Language Models](../../images/01-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson-1-gh?WT.mc_id=academic-105485-koreyst) - -> _(上記の画像をクリックすると、レッスン・ビデオを表示します)_ - -生成 AI は、テキストや画像などのコンテンツを生成する人工知能 (Artificial Intelligence) です。この技術が素晴らしいのは、AI を誰でも使えるようにしている所で、自然言語で書いた文章やテキスト・プロンプトだけで利用できます。 -皆様にとって価値のある何らかの成果を生み出すために、Java や SQL のような言語を学ぶ必要はありません。普段使っている自分の言葉で要望を伝えるだけで、AI モデルから提案が返ってきます。この技術を使えば、報告書を書いたり、その内容を理解するためのアプリケーションが、わずか数秒でできるようになります。その可能性と影響力は計り知れません。 - -このカリキュラムで、スタートアップ企業が教育分野で新たな可能性を切り開くために生成 AI をどのように利用しているか、またその適用に伴う社会的影響や、技術的な制限で避けられない問題にどう対処していくのかを詳しく見ていきます。 - -## レッスン内容の紹介 - -このレッスンでは、下記の内容について説明します。 - -- ビジネスシナリオの紹介: スタートアップのアイデアとミッション -- 生成 AI と、技術的な歴史背景 -- 大規模言語モデルの内部動作 -- 大規模言語モデルの主な機能と実用的なユースケース - -## 学習目標 - -このレッスンを修了すると、下記を理解できます: - -- 生成 AI とは何か、そして大規模言語モデルの仕組みを理解する -- 教育シナリオに重点を置き、さまざまなユース・ケースで大規模言語モデルを活用する方法を理解する - -## シナリオ: 教育関連事業をターゲットにするスタートアップ企業 - -生成 AI は AI 技術の最高峰に位置付けられ、かつて不可能と思われていた領域にも挑戦し、新たな可能性を広げています。 -生成 AI モデルは様々な機能と用途で利用可能ですが、このカリキュラムでは、架空のスタートアップ企業を通じて教育分野でどのように革新していくのかを学んでいきます。この新興企業を「スタートアップ」と呼びます。 -スタートアップは、教育の領域において下記の野心的な目標を持って事業を行っています。 - -> _世界規模で学習の利便性を高め、教育に対する平等な機会を実現し、学習者一人ひとりの要望に応える個別学習体験を提供します。_ - -スタートアップチームは、大規模言語モデル(LLM)という現在最も強力なツールを使わなければ、上記の目標を達成するのが難しいと考えています。 - -生成 AI を利用すると、生徒は 24 時間いつでも問い合わせ可能な、バーチャルの教師から大量の情報や例を学べるようになり、教師も生徒の成績を評価しフィードバックするために、新しいツールが使えるようになると期待しています。これは、現在の学習方法や指導方法に革命をもたらすと考えられています。 - -![モニターを見つめる5人の若い学生 - DALLE2 による画像](../../images/students-by-DALLE2.png?WT.mc_id=academic-105485-yoterada) - -まず、カリキュラム全体を通じて使用する、基本的な概念と用語を定義しましょう。 - -## 生成 AI はどのようにして生まれたのでしょうか? - -最近発表された、生成 AI モデルは大きな注目を集めていますが、この技術は過去数十年にわたる開発の歴史があり、初期の研究は 1960 年代までさかのぼります。そして今、AI 技術は [OpenAI の ChatGPT](https://openai.com/chatgpt) や [Bing Chat](https://www.microsoft.com/edge/features/bing-chat?WT.mc_id=academic-105485-yoterada) のように会話能力を有するなど、人間の認知能力を持つレベルにまで達しています。また、これらのチャットシステムは、Bing の Web 検索における対話でも GPT モデルを採用しています。 - -AI の歴史を振り返ると、初期の AI のプロトタイプは、テキストの手入力した内容(打ち込んだ文字情報)に基づいて回答するチャットボットで、専門家集団から抽出した知識をベースに、それをコンピューターに表現していました。知識ベースによる回答は、入力テキスト内に出現するキーワードがトリガーになっていました。しかし、人間による手入力形式のチャットボットは、スケール・アウトが難しいのに気づきました。 - -### 統計学的手法を基にした AI 技術: 機械学習 - -1990 年代に入り、テキスト解析に統計学的手法を応用し、転換点が訪れました。 -これにより、データからパターンを学習する新しいアルゴリズムが開発されました。これは「機械学習」として知られ、学習にプログラミングを必要としませんでした。この手法により、機械は人間の言語理解を再現できるようになります。テキストとラベルの組み合わせで訓練された統計モデルが、メッセージの意図を示す定義済みのラベルで、未知の入力テキストを分類できるようになります。 - -### ニューラルネットワーク(神経回路網)と最新の仮想アシスタント - -最近では、より大量のデータと、複雑な計算を処理できるハードウェアの進化が、AI 分野の研究をさらに促進し、ニューラル・ネットワークやディープラーニング・アルゴリズムと呼ばれる高度な機械学習アルゴリズムの開発につながりました。 - -ニューラルネットワーク(特に再帰型ニューラルネットワーク - RNN と呼ばれる)は、自然言語処理を飛躍的に進化させ、文章中に含まれる単語の意味を、文脈を考慮して評価し、より有益な方法でテキストの意図を表現できるようになりました。 - -この技術は、21 世紀の初頭に登場したバーチャル・アシスタントの基盤となり、人の言葉を読み取って要求を識別し、それに応じて行動を取れるようになります。例えば、事前に用意したスクリプトで応答したり、外部サービスを利用する等が含まれます。 - -### 現在の生成 AI - -このような経緯を経て、今日における生成 AI が誕生しました。これはディープラーニングのサブセットとして考えられます。 - -![AI, ML, DL and Generative AI](../../images/AI-diagram.png?WT.mc_id=academic-105485-yoterada) - -長年の AI 研究を経て、_トランスフォーマー_ と呼ばれる新しいモデルのアーキテクチャが登場し、RNN の限界を越え、より長文テキストのシーケンスを入力として受け取れるようになりました。トランスフォーマーは、アテンションメカニズム(注意機構)を採用しており、モデルが、受け取った入力に対して異なる重み付けを行います。これにより、テキスト内の単語の並ぶ順番に関わらず、最も関連性の高い情報が集中している部分に「より多くの注意を払う」ようになります。 - -最近の生成 AI モデルの多くは、文章の入出力を行う「大規模言語モデル(LLM)」とも呼ばれており、実際にこのアーキテクチャに基づいています。これらのモデルが注目される理由は、書籍、記事、ウェブサイトなど様々な情報源から、膨大なラベルなしデータとして訓練されているにも関わらず、創造性を備え文法も正しい文章を作り出すのが特筆すべき点です。したがって、これらのモデルは、機械が入力されたテキストを「理解」する能力を飛躍的に向上させただけでなく、人間の言葉で独自の回答を作り出す能力も実現しました。 - -## 大規模言語モデルの仕組みを教えてください - -次の章では、さまざまな種類の生成 AI モデルについて詳しく説明しますが、その前に、OpenAI の GPT(Generative Pre-trained Transformer)モデルを中心に、大規模言語モデルがどのように機能するのかを確認しましょう。 - -- **トークナイザー、テキストから数値へ**: 大規模言語モデルは、テキストを入力として受け取り、テキストを出力として生成します。ただし、統計モデルのため、テキスト・シーケンスよりも数値の方が、とてもうまく機能します。そこでモデルに対するすべての入力は、コア・モデルが使用する前に、トークナイザーで処理されます。トークンは文字の塊で、可変数の文字から構成されています。トークナイザーは、入力された文字列をトークン毎に分割し、トークン配列に格納する処理を行います。その後、各トークンはトークン・インデックスと結びつけられます。トークン・インデックスは元のテキストのチャンク(断片)を整数で符号化したものになります。 - -![トークン化の例](../../images/tokenizer-example.png?WT.mc_id=academic-105485-yoterada) - -- **出力トークンの予測**: 入力として n 個のトークンを受け取ると(モデルによって n の最大値は異なります)、モデルは出力として 1 個のトークンを予測する力を持っています。この予測されたトークンは次の反復処理の入力に追加され、拡張ウィンドウ・パターンにより、利用者が 1 つ以上の文を回答として得られるようになります。これは、ChatGPT を試した時に、文の途中で時々処理が停止するような動きにつながる理由です。 - -- **選考過程、確率分布**: モデルは、現在のテキストの順番の後ろに続く文字を、確率的に可能性の高い結果に基づいて出力トークンを選びます。これは、モデルが過去の訓練に基づいて、「次に出現するトークン」の各選択肢についてどれだけ確率が高いかを計算し、その全体の確率分布を推論しているからです。ただし、得られた分布から最も確率の高いトークンが必ず選ばれるとは限りません。この選択には、ある程度のランダム性が導入されており、モデルが決定的に振る舞わないようにしています。つまり同じ入力に対して必ずしも同じ出力結果が得られるわけではありません。このランダム性は、創造的な思考過程を模倣するために導入され、温度 (temperature) というパラメータで調整できます。 - -## スタートアップは、大規模言語モデルをどのように活用できるでしょうか? - -大規模言語モデルについて、内部動作の理解が深まったところで、ビジネス・シナリオも視野に入れて、大規模言語モデルをうまく活用するための、実践的な例をいくつか見てみましょう。 - -大規模言語モデルは、自然言語で記述した入力テキストから、新しいテキストを作る処理が最も得意です。 - -しかし、具体的にどのようなテキストの入力と出力を想定しているのでしょうか? -大規模言語モデルの入力は「プロンプト」と呼ばれ、出力は「コンプリーション」と呼ばれています。これは、モデルが現在の入力に続く次のトークンを生成する仕組みを表しています。これからプロンプトの意味や、モデルを最大限に活用するための設計方法について詳しく確認していきますが、とりあえず現時点では、プロンプトは以下のような要素が含まれるとお考えください: - -- **プロンプト(指示)**:モデルに対して、期待する出力結果や、出力フォーマットの種類を指定する。この指示には、場合によっては具体例やその他のデータを追加で埋め込めます。 - - 1. 記事、書籍、製品レビューなどの要約と、非構造化データから知見(インサイト)の抽出 - - 訳者追記: - - - Can you please summarize the following text for me ? - - 以下のテキストの内容を要約していただけますか? - - ![Example of summarization](../../images/summarization-example.png?WT.mc_id=academic-105485-yoterada) - -
- - 1. 記事、エッセイ、課題などのアイデアとデザインの作成 - - 訳者追記: - - - Please write an assignment for high school students including four open-ended questions about Louis XIV and his court. - - 高校生用の課題を作成します。ルイ 14 世と彼の宮廷について、自由に回答できる 4 つの質問を作成してください。 - - ![Example of creative writing](../../images/creative-writing-example.png?WT.mc_id=academic-105485-yoterada) - -
- -- **質問**:エージェントに対して会話形式で質問を尋ねる - - 訳者追記: - - Who is Louis XIV and why he is an important historical character? - - ルイ14世はどういう人で、なぜ彼は歴史的に重要な人物なのですか? - - ![Example of conversation](../../images/conversation-example.png?WT.mc_id=academic-105485-yoterada) - -
- -- **テキストの補完** : 続きを書く。文章を完成させるための執筆依頼をしています - - 訳者追記: - - - Louis XIV is an important historical character because - - ルイ 14 世が歴史的に重要な人物である理由は - -![Example of text completion](../../images/text-completion-example.png?WT.mc_id=academic-105485-yoterada) - -
- -- **プログラムコード**: プログラムに関する説明や、コード記述を求める依頼。または特定の作業を行うコード生成を依頼します。 - - 訳者追記: - - - A Python function to sum two numbers a and b - - 二つの数値 a と b を合計する Python の関数 - -![Coding example](../../images/coding-example.png?WT.mc_id=academic-105485-yoterada) - -
- -上記に挙げた例は基本的なものであり、大規模言語モデルの機能を全て網羅したわけではありません。教育分野に限らず、生成 AI が持つ潜在的な可能性と利点を示しています。 - -また、生成 AI モデルの出力結果は決して完璧ではなく、場合によってはモデルの創造性が逆効果となって、現実を曲解するような言葉を組み合わせたり、不快な言葉を組み合わせて回答を作り出します。また、生成 AI は知能を持っているわけではありません。少なくとも、批判的思想や創造的な推理、感情を含む広い意味における知能はありません。そして決定論的でもなく、信頼性もありません。なぜなら、誤った参照や内容、声明などから作り出された話が、正しい情報と混ざり合い、説得力のある自信に満ちた言葉で、結果が提示される場合もあるからです。次のレッスンでは、これらすべての制限に対処し、それらを軽減するために何ができるかを見ていきます。 - -## 課題 - -この課題では、「生成 AI」に関する知識を深め、まだ生成 AI が導入されていない領域を特定し、そこにどう取り込めるかを検討してください。 - -従来の方法と比べて、どのような違いがあるでしょうか?これまでにできなかった処理が、実現可能になるか、作業の速度が上がるかをご検討ください。「問題点」「AI の活用方法」「導入による効果」といった見出しを用いて、皆様がこれから創業する理想の AI スタートアップを 300 文字でまとめてください。可能であれば、ビジネスプランも記述してください。 - -この課題を達成すれば、マイクロソフトのスタートアップ用インキュベータープログラム、[Microsoft for Startups Founders Hub](https://www.microsoft.com/startups?WT.mc_id=academic-105485-yoterada) への応募資格が得られるかもしれません。Azure や OpenAI の使用クレジット、メンタリング、その他多くの支援を提供していますので、詳細はウェブサイトをご覧ください。 - -## 知識チェック - -大規模言語モデルについてどれが正しいですか? - -1. 毎回まったく同じ回答が返ってきます -1. 物事を完璧に行い、計算をしたり、正しく動作するコードを生成するのに最適です -1. 同じプロンプトを使用しても、回答が異なる場合があります。また、テキストやコードなど最初に何らかのヒントを得るために利用するのには最適です。しかし、得られた結果は改善する必要があります。 - -A: 3, 大規模言語モデル(LLM)は決定的ではなく、出力結果にはばらつきがありますが、温度設定を調整し、回答のばらつきを制御できます。完璧な回答結果を期待するべきではありません。LLM は皆様の負担を軽減するために存在し、物事を始める際に最初の良い出発点を提供します。 ただし多くの場合、段階的に改善していく必要があるでしょう。 - -## お疲れ様でした! 次のレッスンを続ける - -このレッスンを修了後、[生成 AI 学習コレクション](https://aka.ms/genai-collection?WT.mc_id=academic-105485-yoterada) に進んで、生成 AI の知識をさらに深めましょう! - -レッスン 2 にお進みください。そこでは、[様々な LLM の調査と比較](../../../02-exploring-and-comparing-different-llms/translations/ja-jp/README.md?WT.mc_id=academic-105485-yoterada)方法に焦点を当てます! diff --git a/01-introduction-to-genai/translations/ko/README.md b/01-introduction-to-genai/translations/ko/README.md deleted file mode 100644 index 036086b003..0000000000 --- a/01-introduction-to-genai/translations/ko/README.md +++ /dev/null @@ -1,143 +0,0 @@ -# 생성형 AI와 대형 언어 모델 (LLM) 소개 - -[![Introduction to Generative AI and Large Language Models](../../images/01-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson-1-gh?WT.mc_id=academic-105485-koreyst) - -_(이미지를 클릭하면 이 수업의 비디오를 볼 수 있습니다)_ - -생성형 AI는 텍스트, 이미지 및 기타 유형의 콘텐츠를 생성할 수 있는 인공지능입니다. 이것이 훌륭한 기술인 이유는 AI를 민주화하기 때문입니다. 누구나 자연어로 작성된 문장인 텍스트 프롬프트만으로 이를 사용할 수 있습니다. Java나 SQL과 같은 언어를 배울 필요가 없으며, 당신이 원하는 것을 말하면 AI 모델에서 제안이 나옵니다. 이것의 응용 프로그램과 영향은 엄청나며, 보고서를 작성하거나 이해하고, 애플리케이션을 작성하고, 그 이상의 것들을 몇 초 만에 할 수 있습니다. - -해당 커리큘럼에서는 우리의 스타트업이 교육 세계에서 새로운 시나리오를 개척하기 위해 생성형 AI를 어떻게 활용하는지, 그리고 그 응용과 기술 한계에 따른 불가피한 도전을 어떻게 해결하는지 살펴볼 것입니다. - -## 소개 - -수업은 다음 내용을 다룹니다: - -- 비즈니스 시나리오 소개: 우리의 스타트업 아이디어와 미션. -- 생성형 AI와 우리가 현재 기술 환경에 도달한 방법. -- 대형 언어 모델의 내부 작동 방식. -- 대형 언어 모델의 주요 기능과 실용적인 사용 사례. - -## 학습 목표 - -이 수업을 완료하면 다음을 이해하게 됩니다: - -- 생성형 AI가 무엇인지, 대형 언어 모델이 어떻게 작동하는지. -- 교육 시나리오를 중심으로 다양한 사용 사례에 대형 언어 모델을 어떻게 활용할 수 있는지. - -## 시나리오: 우리의 교육 스타트업 - -생성형 인공지능(AI)은 AI 기술의 정점을 나타내며, 한때 불가능하다고 생각되었던 것의 한계를 뛰어넘습니다. 생성형 AI 모델은 여러 가지 기능과 응용 프로그램을 가지고 있지만, 이 커리큘럼에서는 가상의 스타트업을 통해 교육을 혁신하는 방법을 살펴볼 것입니다. 이 스타트업을 *우리 스타트업*이라고 부르겠습니다. 우리 스타트업은 교육 분야에서 다음과 같은 야심찬 미션을 가지고 작업하고 있습니다. - -> _전 세계적으로 학습의 접근성을 향상시키고, 교육에 대한 공정한 접근을 보장하며, 각 학습자의 필요에 따라 개인화된 학습 경험을 제공한다._ - -우리 스타트업 팀은 이 목표를 달성하기 위해 현대의 가장 강력한 도구 중 하나인 대형 언어 모델(LLM)을 활용하지 않고는 불가능할 것임을 인식하고 있습니다. - -생성형 AI는 우리가 오늘날 배우고 가르치는 방식을 혁신할 것으로 예상되며, 학생들은 하루 24시간 가상의 선생님을 이용할 수 있게 되어 방대한 양의 정보와 예제를 제공하고, 선생님들은 학생들을 평가하고 피드백을 주는 데 혁신적인 도구를 활용할 수 있게 될 것입니다. - -![Five young students looking at a monitor - image by DALLE2](../../images/students-by-DALLE2.png?WT.mc_id=academic-105485-koreyst) - -시작하기 위해, 이 커리큘럼에서 사용할 기본 개념과 용어를 정의하겠습니다. - -## 우리는 어떻게 생성형 AI를 얻게 되었나요? - -최근 생성형 AI 모델의 발표로 인해 발생한 놀라운 *확장*에도 불구하고, 이 기술은 수십 년 동안 만들어져 왔으며, 최초의 연구 노력은 60년대에 거슬러 올라갑니다. 우리는 이제 인간의 인지 능력을 가진 AI에 도달했습니다. 예를 들어 [OpenAI ChatGPT](https://openai.com/chatgpt)나 [Bing Chat](https://www.microsoft.com/edge/features/bing-chat?WT.mc_id=academic-105485-koreyst)과 같은 대화가 가능한 AI입니다. Bing Chat은 웹 검색 Bing 대화를 위해 GPT 모델을 사용합니다. - -조금 뒤로 돌아가 보면, 최초의 AI 프로토타입은 전문가 그룹에서 추출한 지식 베이스를 컴퓨터에 표현하고, 입력 텍스트에 나타나는 키워드에 의해 지식 베이스의 답변이 트리거되는 typewritten 챗봇으로 구성되었습니다. 그러나 typewritten 챗봇을 사용하는 이러한 접근 방식은 잘 확장되지 않는다는 것이 곧 분명해졌습니다. - -### AI에 대한 통계적 접근: 머신러닝 - -90년대에 도래한 전환점은 텍스트 분석에 통계적 접근법을 적용한 것이었습니다. 이로 인해 새로운 알고리즘들이 개발되었는데, 이를 머신러닝이라고 부릅니다. 이 알고리즘들은 명시적으로 프로그래밍되지 않아도 데이터로부터 패턴을 학습할 수 있습니다. 이 접근법은 기계가 인간의 언어 이해를 모방하게 해줍니다: 통계 모델은 텍스트-레이블 쌍에 대해 학습하며, 이를 통해 모델은 알려지지 않은 입력 텍스트를 메시지의 의도를 나타내는 사전 정의된 레이블로 분류할 수 있게 됩니다. - -### 신경망과 현대의 가상 어시스턴트 - -최근에는 더 많은 양의 데이터를 처리하고 더 복잡한 계산을 수행할 수 있는 하드웨어의 기술적 진화가 AI 분야의 연구를 촉진시켰고, 이로 인해 고급 머신러닝 알고리즘인 신경망 또는 딥러닝 알고리즘이 개발되었습니다. - -신경망(특히 순환 신경망 - RNN)은 자연어 처리를 크게 향상시켜, 단어의 문맥을 고려하여 텍스트의 의미를 더 의미있게 표현할 수 있게 하였습니다. - -이 기술은 새로운 세기의 첫 10년 동안 탄생한 가상 어시스턴트를 구동하였으며, 이들은 인간의 언어를 해석하고, 필요성을 파악하고, 그것을 만족시키기 위한 행동을 수행하는 데 매우 능숙했습니다. 예를 들어, 사전에 정의된 스크립트로 답변하거나 3rd party 서비스를 사용하는 등의 작업을 수행하였습니다. - -### 현재의 생성형 AI - -이것이 현재의 생성형 AI에 이르게 된 과정입니다. 생성형 AI는 딥러닝의 하위 분야로 볼 수 있습니다. - -![AI, ML, DL and Generative AI](../../images/AI-diagram.png?WT.mc_id=academic-105485-koreyst) - -AI 분야에서 수십 년간의 연구 끝에 새로운 모델 구조인 *Transformer*가 RNN의 한계를 극복했습니다. Transformer는 입력받은 텍스트의 순서에 관계없이 가장 중요한 정보가 집중된 곳에 ’더 많은 주의’를 기울일 수 있도록 모델에 다른 가중치를 부여하는 attention 메커니즘에 기반합니다. - -텍스트 입력과 출력으로 작동하는 대형 언어 모델(Large Language Models, LLMs)이라고도 불리는 최근의 생성형 AI 모델들은 대부분 이 구조에 기반합니다. 이 모델들은 책, 기사, 웹사이트 등 다양한 출처로부터 수많은 양의 라벨이 없는 데이터로 훈련되었습니다. 이 모델들의 흥미로운 점은 다양한 작업에 활용할 수 있고, 문법적으로 올바르고 창의적인 텍스트를 생성할 수 있다는 것입니다. 즉, 기계가 입력 텍스트를 ’이해’하는 능력을 엄청나게 향상시키뿐만 아니라, 인간의 언어로 원본 응답을 생성하는 능력을 가능하게 했습니다. - -## 대형 언어 모델이 작동하는 방식 - -다음 장에서는 다양한 유형의 생성형 AI 모델을 살펴볼 것입니다. 하지만 지금은 OpenAI GPT (Generative Pre-trained Transformer) 모델을 중심으로 대형 언어 모델이 작동하는 방식에 대해 알아보겠습니다. - -- **토크나이저, 텍스트를 숫자로 변환**: 대형 언어 모델은 텍스트를 입력으로 받아 텍스트를 출력합니다. 하지만 통계적 모델이기 때문에 텍스트 시퀀스보다는 숫자로 작업하는 것이 훨씬 더 잘 됩니다. 그래서 모델의 핵심 부분이 사용하기 전에 모든 입력은 토크나이저에 의해 처리됩니다. 토큰은 텍스트의 조각으로, 일정한 수의 문자로 구성됩니다. 그래서 토크나이저의 주요 작업은 입력을 토큰 배열로 분할하는 것입니다. 그런 다음 각 토큰은 토큰 인덱스와 매핑됩니다. 토큰 인덱스는 원래 텍스트 조각의 정수 인코딩입니다. - -![Example of tokenization](../../images/tokenizer-example.png?WT.mc_id=academic-105485-koreyst) - -- **출력 토큰 예측하기**: n개의 토큰을 입력으로 받으면(최대 n은 모델마다 다름) 모델은 하나의 토큰을 출력으로 예측할 수 있습니다. 이 토큰은 다음 반복의 입력에 확장 윈도우 패턴을 통해 더 나은 사용자 경험을 제공하여 하나(또는 여러) 문장을 답변으로 얻을 수 있습니다. 이를 통해 ChatGPT을 사용한 적이 있다면 때때로 문장 중간에 멈춰 있는 것처럼 보이는 이유를 설명할 수 있습니다. - -- **선택 과정, 확률 분포**: 출력 토큰은 현재 텍스트 시퀀스 다음에 발생할 확률에 따라 모델에 의해 선택됩니다. 이는 모델이 훈련을 기반으로 가능한 ’다음 토큰’에 대한 확률 분포를 예측하기 때문입니다. 그러나 항상 결과 분포에서 가장 높은 확률을 가진 토큰이 선택되는 것은 아닙니다. 이 선택에는 일정한 무작위성이 추가되어, 모델이 비결정적인 방식으로 작동합니다 - 즉, 동일한 입력에 대해 정확히 동일한 출력을 얻지 않습니다. 이 무작위성의 정도는 창의적 사고 과정을 시뮬레이션하기 위해 추가되며, temperature라는 모델 매개변수를 사용하여 조정할 수 있습니다. - -## 우리 스타트업이 대형 언어 모델을 어떻게 활용할 수 있을까요? - -이제 우리는 대형 언어 모델의 내부 작동 방식에 대해 더 잘 이해하게 되었으니, 그들이 잘 수행할 수 있는 가장 일반적인 작업들의 실제 예시를 살펴보면서 우리 비즈니스 시나리오에 대한 고려사항을 살펴보겠습니다. 앞서 말했듯이, 대형 언어 모델의 주요 능력은 _자연어로 작성된 텍스트 입력을 시작으로, 텍스트를 처음부터 생성하는 것입니다._ - -그러나 어떤 종류의 텍스트 입력과 출력이 있을까요? 대형 언어 모델의 입력은 프롬프트(prompt) 라고 알려져 있고, 출력은 completion이라고 알려져 있습니다. 이는 모델이 현재 입력을 완성하기 위해 다음 토큰을 생성하는 메커니즘을 가리킵니다. 우리는 프롬프트가 무엇인지, 그리고 어떻게 설계해야 모델에서 최대의 효과를 얻을 수 있는지에 대해 깊이 파고들 것입니다. 하지만 지금은, 프롬프트가 다음을 포함할 수 있다고만 말하겠습니다: - -- **지시 (instruction)** 를 통해 모델로부터 기대하는 출력 유형을 지정할 수 있습니다. 지시는 때때로 일부 예시나 추가 데이터를 포함할 수 있습니다. - - 1. 기사, 책, 제품 리뷰 등의 요약, 더불어 비구조화된 데이터로부터 인사이트를 추출합니다. - - ![Example of summarization](../../images/summarization-example.png?WT.mc_id=academic-105485-koreyst) - -
- - 2. 기사, 에세이, 과제 등의 창의적인 아이디어 제안과 디자인. - - ![Example of creative writing](../../images/creative-writing-example.png?WT.mc_id=academic-105485-koreyst) - -
- -- **질문 (question)** 을 통해 대화 형식으로 에이전트에게 질문을 물어볼 수 있습니다. - -![Example of conversation](../../images/conversation-example.png?WT.mc_id=academic-105485-koreyst) - -
- -- **완성해야 할 텍스트**를 제공함으로써 암시적으로 글쓰기 도움을 요청할 수 있습니다. - -![Example of text completion](../../images/text-completion-example.png?WT.mc_id=academic-105485-koreyst) - -
- -- **코드**에서 그것을 설명하고 문서화하라는 요청을 하거나 특정 작업을 수행하는 코드 조각을 생성할 수 있습니다. - -![Coding example](../../images/coding-example.png?WT.mc_id=academic-105485-koreyst) - -
- -위의 예시들은 매우 간단한 것들이며, 대형 언어 모델의 능력을 철저하게 보여주려는 것이 아닙니다. 단지 생성형 AI를 사용하는 잠재력이 교육적인 맥락에 한정되지 않는 것을 보여주기 위함입니다. - -또한, 생성형 AI 모델의 출력은 완벽하지 않으며 때때로 모델의 창의성이 오히려 인간 사용자가 현실의 왜곡으로 해석할 수 있는 단어들의 조합이나, 불쾌할 수 있는 출력을 만들어낼 수 있습니다. 생성형 AI는 지능적이지 않습니다 - 적어도 비판적이고 창의적인 추론 또는 감정 지능을 포함하는 지능의 보다 포괄적인 정의에서는요; 생성형 AI는 결정론적이지 않으며, 신뢰할 수 없습니다, 왜냐하면 허구, 예를 들어 잘못된 참조, 내용, 그리고 명제들이 올바른 정보와 결합될 수 있고, 설득력 있고 자신감 있어보이게 제시될 수 있기 때문입니다. 다음 수업에서, 우리는 이러한 모든 제한 사항들을 다루게 될 것이며, 그것들을 완화하기 위해 우리가 무엇을 할 수 있는지 살펴볼 것입니다. - -## 과제 - -당신의 과제는 [생성형 AI](<(https://en.wikipedia.org/wiki/Generative_artificial_intelligence?WT.mc_id=academic-105485-koreyst)>)에 대해 더 많이 읽어보고, 현재 생성형 AI가 없는 영역에서 어디에 생성형 AI를 활용할 것인지를 파악하는 것입니다. "옛날 방식"과 비교했을 때 영향력은 어떻게 달라질까요, 이전에 할 수 없었던 것을 할 수 있게 되었나요, 아니면 더 빨라졌나요? “문제”, “AI를 어떻게 사용할 것인가”, “영향력” 그리고 선택적으로 비즈니스 계획을 포함한 헤더를 사용하여 꿈의 AI 스타트업이 어떤 모습일지에 대한 300단어 요약을 작성해보세요. - -이 과제를 수행하면, 여러분은 Microsoft의 인큐베이터인 [Microsoft for Startups Founders Hub](https://www.microsoft.com/startups?WT.mc_id=academic-105485-koreyst)에 지원할 준비가 되어있을지도 모릅니다. 우리는 Azure, OpenAI, 멘토링 등에 대한 크레딧을 제공하며, 더 많은 것들을 확인해보세요! - -## 지식 확인 - -대형 언어 모델에 대해 어떤 것이 사실인가요? - -1. 매번 정확히 같은 응답을 받습니다. -2. 완벽하게 작동하며, 숫자를 더하는 것, 작동하는 코드를 생성하는 것 등에 탁월합니다. -3. 동일한 프롬프트를 사용하더라도 응답은 다양할 수 있습니다. 또한 텍스트나 코드 등, 무언가의 첫 번째 초안을 잘 제공합니다. 하지만 결과를 개선해야 합니다. - -정답: 3, 대형 언어 모델(LLM)은 비결정론적이므로 응답이 다양하며, 그 변동성은 temperature 설정을 통해 조절할 수 있습니다. 또한 완벽하게 작동한다고 기대해서는 안됩니다. LLM은 여러분을 위해 대부분의 작업을 수행해주지만, 이는 종종 여러분이 점차 개선해야 할 좋은 첫 시도를 얻게 된다는 것을 의미합니다. - -## 잘하셨습니다! 여정을 계속하세요 - -이 강의를 완료한 후에는 [Generative AI 학습 컬렉션](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst)을 확인하여 Generative AI 지식을 계속 향상시켜 보세요! - -Lesson 2로 이동하여 [다양한 LLM 유형 탐색 및 비교](../../../02-exploring-and-comparing-different-llms/translations/ko/README.md?WT.mc_id=academic-105485-koreyst)하는 방법을 살펴보겠습니다! diff --git a/01-introduction-to-genai/translations/pl/README.md b/01-introduction-to-genai/translations/pl/README.md deleted file mode 100644 index 63c9ae50bd..0000000000 --- a/01-introduction-to-genai/translations/pl/README.md +++ /dev/null @@ -1,136 +0,0 @@ -# Wprowadzenie do Generatywnej Sztucznej Inteligencji i Dużych Modeli Językowych - -[![Wprowadzenie do Generatywnej Sztucznej Inteligencji i Dużych Modeli Językowych](../../images/01-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson-1-gh?WT.mc_id=academic-105485-koreyst) - -_(Kliknij powyższy obraz, aby obejrzeć wideo tej lekcji)_ - -Generatywna SI to sztuczna inteligencja zdolna do generowania tekstu, obrazów i innych rodzajów treści. To, co czyni ją fantastyczną technologią, to fakt, że demokratyzuje ona sztuczną inteligencję - każdy może z niej korzystać, używając jedynie polecenia tekstowego, zdania napisanego w języku naturalnym. Nie ma potrzeby uczenia się języka takiego jak Java czy SQL, aby osiągnąć coś wartościowego - wystarczy użyć własnego języka, określić czego się potrzebuje, a model SI przedstawi sugestię. Zastosowania i wpływ tej technologii są ogromne - możesz pisać lub analizować raporty, tworzyć aplikacje i wiele więcej, wszystko w ciągu kilku sekund. - -W tym kursie zbadamy, jak nasz startup wykorzystuje generatywną SI do odblokowania nowych scenariuszy w świecie edukacji i jak radzimy sobie z nieodłącznymi wyzwaniami związanymi z implikacjami społecznymi jej zastosowania oraz ograniczeniami technologii. - -## Wprowadzenie - -Ta lekcja obejmie: - -- Wprowadzenie do scenariusza biznesowego: nasz pomysł na startup i misję. -- Generatywną SI i jak doszliśmy do obecnego krajobrazu technologicznego. -- Wewnętrzne działanie dużego modelu językowego. -- Główne możliwości i praktyczne przypadki użycia Dużych Modeli Językowych. - -## Cele Nauki - -Po ukończeniu tej lekcji zrozumiesz: - -- Czym jest generatywna SI i jak działają Duże Modele Językowe. -- Jak możesz wykorzystać duże modele językowe do różnych przypadków użycia, ze szczególnym uwzględnieniem scenariuszy edukacyjnych. - -## Scenariusz: nasz edukacyjny startup - -Generatywna Sztuczna Inteligencja (SI) reprezentuje szczyt technologii SI, przesuwając granice tego, co kiedyś uważano za niemożliwe. Modele generatywnej SI mają wiele możliwości i zastosowań, ale w tym kursie zbadamy, jak rewolucjonizuje ona edukację poprzez fikcyjny startup. Będziemy odnosić się do tego startupu jako _naszego startupu_. Nasz startup działa w domenie edukacyjnej z ambitną misją: - -> _poprawy dostępności w nauce na globalną skalę, zapewniając równy dostęp do edukacji i dostarczając spersonalizowanych doświadczeń edukacyjnych każdemu uczącemu się, zgodnie z jego potrzebami_. - -Zespół naszego startupu zdaje sobie sprawę, że nie będziemy w stanie osiągnąć tego celu bez wykorzystania jednego z najpotężniejszych narzędzi współczesności – Dużych Modeli Językowych (Large Language Models, LLM). - -Oczekuje się, że Generatywna SI zrewolucjonizuje sposób, w jaki dziś uczymy się i nauczamy, dając studentom do dyspozycji wirtualnych nauczycieli przez 24 godziny na dobę, którzy dostarczają ogromnych ilości informacji i przykładów, a nauczycielom umożliwiając wykorzystanie innowacyjnych narzędzi do oceny swoich uczniów i udzielania im informacji zwrotnych. - -![Pięciu młodych studentów patrzących na monitor - obraz wygenerowany przez DALLE2](../../images/students-by-DALLE2.png?WT.mc_id=academic-105485-koreyst) - -Na początek zdefiniujmy kilka podstawowych pojęć i terminologię, których będziemy używać w całym kursie. - -## Jak doszliśmy do Generatywnej SI? - -Pomimo niezwykłego _szumu_ wywołanego ostatnio przez ogłoszenie modeli generatywnej SI, technologia ta rozwijała się przez dekady, a pierwsze wysiłki badawcze sięgają lat 60. Obecnie znajdujemy się w punkcie, w którym SI ma ludzkie zdolności poznawcze, takie jak prowadzenie rozmowy, co pokazują na przykład [OpenAI ChatGPT](https://openai.com/chatgpt) czy [Bing Chat](https://www.microsoft.com/edge/features/bing-chat?WT.mc_id=academic-105485-koreyst), który również wykorzystuje model GPT do rozmów w wyszukiwarce Bing. - -Cofając się nieco, pierwsze prototypy SI składały się z chatbotów pisanych na maszynie, opierających się na bazie wiedzy uzyskanej od grupy ekspertów i przedstawionej w komputerze. Odpowiedzi z bazy wiedzy były wyzwalane przez słowa kluczowe pojawiające się w tekście wejściowym. -Jednak szybko stało się jasne, że takie podejście, wykorzystujące chatboty pisane na maszynie, nie skalowało się dobrze. - -### Statystyczne podejście do SI: Uczenie Maszynowe - -Punkt zwrotny nastąpił w latach 90., wraz z zastosowaniem statystycznego podejścia do analizy tekstu. Doprowadziło to do rozwoju nowych algorytmów – znanych jako uczenie maszynowe – zdolnych do uczenia się wzorców z danych bez wyraźnego programowania. To podejście pozwala maszynom symulować ludzkie rozumienie języka: model statystyczny jest trenowany na parach tekst-etykieta, umożliwiając modelowi klasyfikowanie nieznanego tekstu wejściowego z predefiniowaną etykietą reprezentującą intencję wiadomości. - -### Sieci neuronowe i nowoczesni wirtualni asystenci - -W ostatnich latach ewolucja technologiczna sprzętu, zdolnego do obsługi większych ilości danych i bardziej złożonych obliczeń, zachęciła do badań nad SI, prowadząc do rozwoju zaawansowanych algorytmów uczenia maszynowego znanych jako sieci neuronowe lub algorytmy głębokiego uczenia. - -Sieci neuronowe (a szczególnie Rekurencyjne Sieci Neuronowe – RNN) znacznie ulepszyły przetwarzanie języka naturalnego, umożliwiając reprezentację znaczenia tekstu w bardziej znaczący sposób, uwzględniając kontekst słowa w zdaniu. - -Jest to technologia, która zasilała wirtualnych asystentów powstałych w pierwszej dekadzie nowego wieku, bardzo biegłych w interpretowaniu ludzkiego języka, identyfikowaniu potrzeby i wykonywaniu działania, aby ją zaspokoić – jak odpowiadanie za pomocą predefiniowanego skryptu lub korzystanie z usługi zewnętrznej. - -### Teraźniejszość, Generatywna SI - -Tak więc doszliśmy do dzisiejszej Generatywnej SI, którą można postrzegać jako podzbiór głębokiego uczenia. - -![SI, ML, DL i Generatywna SI](../../images/AI-diagram.png?WT.mc_id=academic-105485-koreyst) - -Po dekadach badań w dziedzinie SI, nowa architektura modelu – zwana _Transformer_ – przezwyciężyła ograniczenia RNN, będąc w stanie pobrać znacznie dłuższe sekwencje tekstu jako dane wejściowe. Transformery opierają się na mechanizmie uwagi (attention mechanism), umożliwiającym modelowi nadawanie różnych wag otrzymywanym danym wejściowym, 'zwracając większą uwagę' tam, gdzie skoncentrowane są najbardziej istotne informacje, niezależnie od ich kolejności w sekwencji tekstu. - -Większość najnowszych modeli generatywnej SI – znanych również jako Duże Modele Językowe (LLM), ponieważ pracują z tekstowymi danymi wejściowymi i wyjściowymi – jest rzeczywiście oparta na tej architekturze. Co ciekawe w tych modelach – wytrenowanych na ogromnej ilości nieoznakowanych danych z różnych źródeł, takich jak książki, artykuły i strony internetowe – mogą one być dostosowane do szerokiej gamy zadań i generować gramatycznie poprawny tekst z pozorem kreatywności. Tak więc nie tylko niewiarygodnie zwiększyły zdolność maszyny do 'rozumienia' tekstu wejściowego, ale umożliwiły jej zdolność do generowania oryginalnej odpowiedzi w ludzkim języku. - -## Jak działają duże modele językowe? - -W następnym rozdziale zbadamy różne typy modeli Generatywnej SI, ale na razie przyjrzyjmy się, jak działają duże modele językowe, skupiając się na modelach OpenAI GPT (Generative Pre-trained Transformer). - -- **Tokenizer, tekst na liczby**: Duże Modele Językowe otrzymują tekst jako wejście i generują tekst jako wyjście. Jednak będąc modelami statystycznymi, pracują one znacznie lepiej z liczbami niż z sekwencjami tekstu. Dlatego każde wejście do modelu jest przetwarzane przez tokenizer, zanim zostanie użyte przez rdzeń modelu. Token to fragment tekstu – składający się ze zmiennej liczby znaków, więc głównym zadaniem tokenizera jest podzielenie danych wejściowych na tablicę tokenów. Następnie każdy token jest mapowany z indeksem tokenu, który jest liczbowym kodowaniem oryginalnego fragmentu tekstu. - -![Przykład tokenizacji](../../images/tokenizer-example.png?WT.mc_id=academic-105485-koreyst) - -- **Przewidywanie tokenów wyjściowych**: Mając n tokenów jako wejście (z maksymalnym n różniącym się w zależności od modelu), model jest w stanie przewidzieć jeden token jako wyjście. Ten token jest następnie włączany do danych wejściowych w następnej iteracji, w schemacie rozszerzającego się okna, umożliwiając lepsze doświadczenie użytkownika polegające na uzyskaniu jednego (lub wielu) zdania jako odpowiedzi. To wyjaśnia, dlaczego, jeśli kiedykolwiek bawiłeś się ChatGPT, mogłeś zauważyć, że czasami wygląda, jakby zatrzymywał się w środku zdania. - -- **Proces selekcji, rozkład prawdopodobieństwa**: Token wyjściowy jest wybierany przez model zgodnie z jego prawdopodobieństwem wystąpienia po bieżącej sekwencji tekstu. Dzieje się tak, ponieważ model przewiduje rozkład prawdopodobieństwa wszystkich możliwych "następnych tokenów", obliczony na podstawie jego treningu. Jednak nie zawsze token o najwyższym prawdopodobieństwie jest wybierany z wynikowego rozkładu. Do tego wyboru dodawany jest stopień losowości, w taki sposób, że model działa w sposób niedeterministyczny - nie otrzymujemy dokładnie takiego samego wyniku dla tych samych danych wejściowych. Ten stopień losowości jest dodawany, aby symulować proces kreatywnego myślenia i może być dostrojony za pomocą parametru modelu zwanego temperaturą. - -## Jak nasz startup może wykorzystać Duże Modele Językowe? - -Teraz, gdy lepiej rozumiemy wewnętrzne działanie dużego modelu językowego, zobaczmy kilka praktycznych przykładów najczęstszych zadań, które mogą wykonywać całkiem dobrze, mając na uwadze nasz scenariusz biznesowy. -Powiedzieliśmy, że główną zdolnością Dużego Modelu Językowego jest _generowanie tekstu od podstaw, zaczynając od tekstowego wejścia, napisanego w języku naturalnym_. - -Ale jaki rodzaj wejścia i wyjścia tekstowego? -Wejście dużego modelu językowego znane jest jako prompt, podczas gdy wyjście znane jest jako uzupełnienie (completion), termin, który odnosi się do mechanizmu modelu generowania następnego tokenu w celu uzupełnienia bieżącego wejścia. Będziemy zagłębiać się w to, czym jest prompt i jak go zaprojektować w sposób umożliwiający uzyskanie jak najwięcej z naszego modelu. Ale na razie powiedzmy tylko, że prompt może zawierać: - -- **Instrukcję** określającą rodzaj wyjścia, jakiego oczekujemy od modelu. Ta instrukcja czasami może zawierać przykłady lub dodatkowe dane. - - 1. Podsumowanie artykułu, książki, recenzji produktu i więcej, wraz z wydobywaniem wniosków z nieustrukturyzowanych danych. - - ![Przykład podsumowania](../../images/summarization-example.png?WT.mc_id=academic-105485-koreyst) - - 2. Kreatywne tworzenie pomysłów i projektowanie artykułu, eseju, zadania lub więcej. - - ![Przykład kreatywnego pisania](../../images/creative-writing-example.png?WT.mc_id=academic-105485-koreyst) - -- **Pytanie**, zadane w formie rozmowy z agentem. - - ![Przykład rozmowy](../../images/conversation-example.png?WT.mc_id=academic-105485-koreyst) - -- Fragment **tekstu do uzupełnienia**, który w sposób domyślny jest prośbą o pomoc w pisaniu. - - ![Przykład uzupełniania tekstu](../../images/text-completion-example.png?WT.mc_id=academic-105485-koreyst) - -- Fragment **kodu** wraz z prośbą o wyjaśnienie i dokumentację, lub komentarz proszący o wygenerowanie fragmentu kodu wykonującego określone zadanie. - - ![Przykład kodowania](../../images/coding-example.png?WT.mc_id=academic-105485-koreyst) - -Powyższe przykłady są dość proste i nie mają na celu wyczerpującej demonstracji możliwości Dużych Modeli Językowych. Mają one pokazać potencjał wykorzystania generatywnej SI, w szczególności, ale nie tylko, w kontekstach edukacyjnych. - -Ponadto, wyjście modelu generatywnej SI nie jest doskonałe i czasami kreatywność modelu może działać przeciwko niemu, dając w rezultacie kombinację słów, którą ludzki użytkownik może interpretować jako mistyfikację rzeczywistości, lub może być obraźliwa. Generatywna SI nie jest inteligentna - przynajmniej w szerszej definicji inteligencji, obejmującej krytyczne i kreatywne rozumowanie czy inteligencję emocjonalną; nie jest deterministyczna i nie jest godna zaufania, ponieważ zmyślenia, takie jak błędne odniesienia, treści i stwierdzenia, mogą być łączone z poprawnymi informacjami i przedstawiane w przekonujący i pewny sposób. W kolejnych lekcjach będziemy zajmować się wszystkimi tymi ograniczeniami i zobaczymy, co możemy zrobić, aby je złagodzić. - -## Zadanie - -Twoim zadaniem jest dowiedzieć się więcej o [generatywnej SI](https://en.wikipedia.org/wiki/Generative_artificial_intelligence?WT.mc_id=academic-105485-koreyst) i spróbować zidentyfikować obszar, w którym dodałbyś generatywną SI dziś, a który jej nie posiada. Jaki byłby wpływ w porównaniu do robienia tego "starym sposobem", czy możesz zrobić coś, czego nie mogłeś wcześniej, czy jesteś szybszy? Napisz podsumowanie liczące 300 słów na temat tego, jak wyglądałby Twój wymarzony startup AI i dodaj nagłówki takie jak "Problem", "Jak wykorzystałbym AI", "Wpływ" i opcjonalnie plan biznesowy. - -Jeśli wykonałeś to zadanie, możesz być nawet gotowy, aby aplikować do inkubatora Microsoftu, [Microsoft for Startups Founders Hub](https://www.microsoft.com/startups?WT.mc_id=academic-105485-koreyst) oferujemy kredyty zarówno na Azure, OpenAI, mentoring i wiele więcej, sprawdź to! - -## Sprawdzenie wiedzy - -Co jest prawdą o dużych modelach językowych? - -1. Za każdym razem otrzymujesz dokładnie taką samą odpowiedź. -1. Robi rzeczy perfekcyjnie, świetnie dodaje liczby, produkuje działający kod itp. -1. Odpowiedź może się różnić, mimo używania tego samego promptu. Jest również świetny w dostarczaniu pierwszej wersji czegoś, czy to tekstu, czy kodu. Ale musisz ulepszyć wyniki. - -A: 3, LLM jest niedeterministyczny, odpowiedź się różni, jednak możesz kontrolować jej zmienność za pomocą ustawienia temperatury. Nie powinieneś również oczekiwać, że będzie robić rzeczy perfekcyjnie, jest tutaj, aby wykonać za ciebie ciężką pracę, co często oznacza, że otrzymujesz dobrą pierwszą próbę czegoś, co musisz stopniowo ulepszać. - -## Świetna praca! Kontynuuj podróż - -Po ukończeniu tej lekcji, sprawdź naszą [kolekcję materiałów do nauki Generatywnej SI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst), aby kontynuować podnoszenie swojej wiedzy o Generatywnej SI! - -Przejdź do Lekcji 2, gdzie przyjrzymy się [eksploracji i porównaniu różnych typów LLM](../../../02-exploring-and-comparing-different-llms/translations/pl/README.md?WT.mc_id=academic-105485-koreyst)! diff --git a/01-introduction-to-genai/translations/pt-br/README.md b/01-introduction-to-genai/translations/pt-br/README.md deleted file mode 100644 index a024659c49..0000000000 --- a/01-introduction-to-genai/translations/pt-br/README.md +++ /dev/null @@ -1,136 +0,0 @@ -# Introdução à Inteligência Artificial Generativa e Grandes Modelos de Linguagem - -[![Introduction to Generative AI and Large Language Models](../../images/01-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson-1-gh?WT.mc_id=academic-105485-koreyst) - -_(Clique na imagem acima para assistir ao vídeo desta lição)_ - -A Inteligência Artificial Generativa é uma forma de inteligência artificial capaz de gerar texto, imagens e outros tipos de conteúdo. O que a faz uma tecnologia fantástica é que ela democratiza a IA. Além disso, qualquer pessoa pode usá-la com apenas uma pequena frase, uma sentença escrita em uma linguagem natural. Não é necessário aprender uma linguagem como Java ou SQL para realizar algo significativo. Tudo o que você precisa fazer é usar sua própria linguagem, declarar o que deseja e uma sugestão de um modelo de IA será gerada. As aplicações e o impacto disso são enormes: você pode escrever ou compreender relatórios, criar aplicações e muito mais, tudo em questão de segundos. - -Neste currículo, exploraremos como nossa startup aproveita a IA generativa para desbloquear novos cenários no mundo da educação e como lidamos com os desafios inevitáveis relacionados às implicações sociais de sua aplicação e às limitações tecnológicas. - -## Introdução - -Esta lição abordará: - -- Introdução ao cenário de negócios: nossa ideia de startup e missão. -- Inteligência Artificial Generativa e como chegamos ao cenário tecnológico atual. -- Funcionamento interno de um grande modelo de linguagem. -- Principais capacidades e casos de uso práticos de Grandes Modelos de Linguagem. - -## Objetivos de Aprendizado - -Após completar esta lição, você entenderá: - -- O que é a Inteligência Artificial Generativa e como os Grandes Modelos de Linguagem funcionam. -- Como você pode aproveitar os Grandes Modelos de Linguagem para diferentes casos de uso, com foco em cenários de educação. - -## Cenário: nossa startup educacional - -A Inteligência Artificial Generativa (IA) representa o auge da tecnologia de IA, ultrapassando os limites do que antes era considerado impossível. Modelos de IA generativa têm várias capacidades e aplicações. Porém, neste currículo, exploraremos como ela está revolucionando a educação por meio de uma startup fictícia. Nos referiremos a essa startup como _nossa startup_. `Nossa startup` atua no domínio da educação com a ambiciosa declaração de missão: - -> _Melhorar a acessibilidade na aprendizagem, em escala global, garantindo acesso equitativo à educação e proporcionando experiências de aprendizagem personalizadas a cada aluno(a), de acordo com suas necessidades_. - -A equipe de nossa startup está ciente de que não será capaz de alcançar esse objetivo sem aproveitar uma das ferramentas mais poderosas dos tempos modernos - Grandes Modelos de Linguagem (LLMs). - -A IA generativa deve revolucionar a maneira como aprendemos e ensinamos hoje, com os(as) alunos(as) tendo à disposição professores(as) virtuais 24 horas por dia, que fornecem vastas quantidades de informações e exemplos, e professores(as) capazes de alavancar ferramentas inovadoras para avaliar seus/suas alunos(as) e fornecer feedback. - -![Five young students looking at a monitor - image by DALLE2](../../images/students-by-DALLE2.png?WT.mc_id=academic-105485-koreyst) - -Para começar, vamos definir alguns conceitos e terminologia básica que usaremos ao longo do currículo. - -## Como surgiu a IA Generativa? - -Apesar da extraordinária _hype_ criada recentemente com o anúncio de modelos de IA generativa, essa tecnologia está em desenvolvimento há décadas, com os primeiros esforços de pesquisa datando dos anos 60. Agora estamos em um ponto em que a IA possui capacidades cognitivas humanas como conversação, como mostrado por exemplo, no [OpenAI ChatGPT](https://openai.com/chatgpt?WT.mc_id=academic-105485-koreyst) ou no [Bing Chat](https://www.microsoft.com/edge/features/bing-chat?WT.mc_id=academic-105485-koreyst), que também utiliza um modelo GPT para a pesquisa na web e conversas do Bing. - -Voltando um pouco, os primeiros protótipos de IA consistiam em chatbots datilografados, baseando-se em uma base de conhecimento extraída de um grupo de especialistas e representada em um computador. As respostas na base de conhecimento eram acionadas por palavras-chave que apareciam no texto de entrada. -No entanto, logo ficou claro que tal abordagem, usando chatbots datilografados, não se escalava bem. - -### Uma abordagem estatística para a IA: Aprendizado de Máquina - -Um ponto de virada ocorreu durante os anos 90, com a aplicação de uma abordagem estatística à análise de texto. Isso levou ao desenvolvimento de novos algoritmos - conhecidos com o nome de aprendizado de máquina - capazes de aprender padrões a partir de dados, sem serem programados explicitamente. Essa abordagem permite que uma máquina simule a compreensão da linguagem humana: um modelo estatístico é treinado em pares de texto e rótulo, permitindo que o modelo classifique um texto de entrada desconhecido com um rótulo predefinido que representa a intenção da mensagem. - -### Redes neurais e assistentes virtuais modernos - -Em tempos mais recentes, a evolução tecnológica do hardware, capaz de lidar com maiores quantidades de dados e cálculos mais complexos, encorajou a pesquisa nos campos de IA, levando ao desenvolvimento de algoritmos avançados de aprendizado de máquina - chamados de redes neurais ou algoritmos de aprendizado profundo. - -As redes neurais (ou as Redes Neurais Recorrentes - `RNNs`) aprimoraram significativamente o processamento de linguagem natural, permitindo a representação do significado do texto de uma maneira mais significativa, valorizando o contexto de uma palavra em uma frase. - -Essa é a tecnologia que impulsionou os assistentes virtuais nascidos na primeira década do novo século, muito proficientes na interpretação da linguagem humana, identificando uma necessidade e executando uma ação para satisfazê-la - como responder com um script predefinido ou consumir um serviço de terceiros. - -### Atualmente, a IA Generativa - -Foi assim que chegamos à IA Generativa de hoje, que pode ser vista como um subconjunto de aprendizado profundo. - -![IA, ML, AP e IA Generativa](../../images/AI-diagram.png?WT.mc_id=academic-105485-koreyst) - -Depois de décadas de pesquisa no campo da IA, uma nova arquitetura de modelo - chamada _Transformer_ - superou os limites das `RNNs`. Sendo capaz de receber sequências de texto muito mais longas como entrada. Os `Transformers` são baseados no mecanismo de atenção, permitindo que o modelo dê pesos diferentes às entradas que recebe, _prestando mais atenção_ onde as informações mais relevantes estão concentradas, independentemente de sua ordem na sequência de texto. - -A maioria dos modelos recentes da IA generativa - também conhecidos como Grandes Modelos de Linguagem (LLMs), trabalham com entradas e saídas textuais e que, são de fato, baseados nessa arquitetura. O que é interessante sobre esses modelos - treinados em uma enorme quantidade de dados não rotulados de diversas fontes, como: livros, artigos e sites - é que eles podem ser adaptados para uma ampla variedade de tarefas e gerar texto gramaticalmente correto com uma semelhança de criatividade. Portanto, não apenas aumentaram incrivelmente a capacidade de uma máquina _entender_ um texto de entrada. Mas também habilitaram sua capacidade de gerar uma resposta original em linguagem humana. - -## Como os Grandes Modelos de Linguagem funcionam? - -No próximo capítulo, vamos explorar diferentes tipos de modelos de IA generativa. Por enquanto, vamos dar uma olhada em como os grandes modelos de linguagem funcionam, com foco nos modelos do OpenAI GPT (`Generative Pre-trained Transformer`). - -- **Tokenizador, texto para números**: Grandes Modelos de Linguagem, recebem um texto como entrada e geram um texto como saída. No entanto, sendo modelos estatísticos, eles funcionam muito melhor com números do que sequências de texto. É por isso que cada entrada no modelo é processada por um `tokenizador` antes de ser usada pelo modelo principal. Um `token` é um pedaço de texto - consistindo em um número variável de caracteres, portanto, a principal tarefa do tokenizador é dividir a entrada em uma matriz de tokens. Em seguida, cada token é mapeado com um índice de token, que é a codificação inteira do trecho de texto original. - -![Example of tokenization](../../images/tokenizer-example.png?WT.mc_id=academic-105485-koreyst) - -- **Previsão de tokens de saída**: Dados `n` tokens como entrada (com o máximo `n` variando de um modelo para outro), o modelo é capaz de prever um token como saída. Esse token é então incorporado à entrada da próxima iteração em um padrão de janela expansiva. Possibilitando assim, uma melhor experiência do usuário em obter uma (ou várias) sentenças como resposta. Isso explica por que, se você já brincou com o ChatGPT, pode ter notado que às vezes parece que ele para no meio de uma frase. - -- **Processo de seleção, distribuição de probabilidade**: O token de saída é escolhido pelo modelo de acordo com a probabilidade de ocorrer após a sequência de texto atual. Isso ocorre porque o modelo prevê uma distribuição de probabilidade sobre todos os possíveis _próximos tokens_ calculados com base em seu treinamento. No entanto, nem sempre o token com a maior probabilidade é escolhido na distribuição resultante. Um grau de aleatoriedade é adicionado a essa escolha, de forma que o modelo age de maneira não determinística - não obtemos a mesma saída exata para a mesma entrada. Esse grau de aleatoriedade é adicionado para simular o processo de pensamento criativo e pode ser ajustado usando um parâmetro do modelo chamado temperatura. - -## Como nossa startup pode aproveitar os Grandes Modelos de Linguagem? - -Agora que temos uma melhor compreensão de como os grandes modelos de linguagem funcionam, vamos ver alguns exemplos práticos das tarefas mais comuns que eles podem realizar muito bem, com foco em nosso cenário de negócios. -Dissemos que a principal capacidade de um Grande Modelo de Linguagem é: _gerar um texto do zero, a partir de uma entrada textual, escrita em linguagem natural_. - -Mas que tipo de entrada e saída textual? -A entrada de um grande modelo de linguagem é conhecida como `prompt`. Enquanto a saída é conhecida como `completion`, termo que se refere ao mecanismo do modelo de gerar o próximo token para completar a entrada atual. Vamos nos aprofundar no que é um prompt e como projetá-lo de maneira a obter o máximo de nosso modelo. Agora, vamos apenas dizer que um prompt pode incluir: - -- Uma **instrução** especificando o tipo de saída que esperamos do modelo. Essa instrução às vezes pode incorporar alguns exemplos ou alguns dados adicionais. - - 1. Resumo de um artigo, livro, análises de produtos e muito mais. Juntamente com a extração de insights de dados não estruturados. - ![Exemplo de resumo](../../images/summarization-example.png?WT.mc_id=academic-105485-koreyst) - - 2. Ideação criativa e design de um artigo, uma redação, uma tarefa ou mais. - ![Exemplo de escrita criativa](../../images/creative-writing-example.png?WT.mc_id=academic-105485-koreyst) - -- Uma **pergunta** feita na forma de uma conversa com um agente. - ![Exemplo de conversa](../../images/conversation-example.png?WT.mc_id=academic-105485-koreyst) - -- Um trecho de **texto a ser completado** que implicitamente é um pedido de assistência na escrita. - ![Exemplo de conclusão de texto](../../images/text-completion-example.png?WT.mc_id=academic-105485-koreyst) - -- Um trecho de **código** juntamente com a solicitação de explicá-lo e documentá-lo ou um comentário pedindo para gerar um trecho de código que execute uma tarefa específica. - ![Exemplo de programação](../../images/coding-example.png?WT.mc_id=academic-105485-koreyst) - -Os exemplos acima são bastante simples e não pretendem ser uma demonstração exaustiva das capacidades dos Grandes Modelos de Linguagem. Eles apenas querem mostrar o potencial de uso da IA generativa, em particular, mas não limitado ao contexto educacional. - -Além disso, a saída de um modelo de IA generativa não é perfeita e, às vezes, a criatividade do modelo pode funcionar contra ele, resultando em uma saída que é uma combinação de palavras que o usuário humano pode interpretar como uma mistificação da realidade ou pode ser ofensiva. A IA Generativa não é inteligente - pelo menos na definição mais abrangente de inteligência, incluindo o raciocínio crítico e criativo ou a inteligência emocional; ela não é determinística e não é confiável, uma vez que alucinações, como referências, conteúdo e declarações errôneas, podem ser combinadas com informações corretas e apresentadas de maneira persuasiva e confiante. Nas próximas lições, lidaremos com todas essas limitações e veremos o que podemos fazer para mitigá-las. - -# Tarefa - -Sua tarefa é estudar mais sobre [IA Generativa](https://en.wikipedia.org/wiki/Generative_artificial_intelligence?WT.mc_id=academic-105485-koreyst) e tentar identificar uma área onde você adicionaria IA Generativa hoje mas que ainda não a possui. Como o impacto seria diferente de fazer as coisas do "jeito antigo"? Você pode fazer algo que não era possível antes ou que seria mais rápido? Escreva um resumo de 300 palavras sobre como sua startup da IA dos sonhos seria e inclua cabeçalhos como: - -- "Problema" -- "Como eu usaria a IA" -- "Impacto" -- E, como opção, um plano de negócios. - -Se você fizer essa tarefa, poderá até estar pronto para se inscrever no [Microsoft's Incubator](https://www.microsoft.com/startups?WT.mc_id=academic-105485-koreyst) para fundadores de startups. Eles oferecem créditos para Azure, OpenAI, mentoria e muito mais. Confira agora mesmo! - -## Verificação de conhecimento - -O que é verdade sobre Grandes Modelos de Linguagem? - -1. Você obtém a mesma resposta exata toda vez. -2. Eles fazem as coisas perfeitamente. São ótimos em somar números, produzir código funcional etc. -3. A resposta pode variar, mesmo ao usar o mesmo prompt. Além disso, eles são ótimos em fornecer um primeiro rascunho de algo, seja texto ou código. Mas você precisa melhorar os resultados. - -**Resposta:** 3, um `LLM` é _não-determinístico_. A resposta varia, em você controlar sua variação por meio de uma configuração de `temperatura`. Além disso, você não deve esperar que ele faça as coisas perfeitamente. Ele está aqui para fazer o trabalho pesado para você, o que muitas vezes significa que você obtém uma boa primeira tentativa de algo que precisa melhorar gradualmente. - -## Ótimo trabalho! A Jornada Continua - -Deseja aprender mais sobre diferentes conceitos de IA Generativa? Acesse a [página de Aprendizado Contínuo](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) para encontrar outros ótimos recursos sobre este tópico. - -Vá para a Lição 2, onde veremos como [Explorar e comparar diferentes tipos de LLM](../../../02-exploring-and-comparing-different-llms/translations/pt-br/README.md?WT.mc_id=academic-105485-koreyst)! diff --git a/01-introduction-to-genai/translations/tr/README.md b/01-introduction-to-genai/translations/tr/README.md deleted file mode 100644 index 35795c4220..0000000000 --- a/01-introduction-to-genai/translations/tr/README.md +++ /dev/null @@ -1,140 +0,0 @@ -# Generatif Yapay Zeka ve Büyük Dil Modellerine Giriş - -[![Generatif Yapay Zeka ve Büyük Dil Modellerine Giriş](../../images/01-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson-1-gh?WT.mc_id=academic-105485-koreyst) - -_(Bu dersin videosunu izlemek için yukarıdaki görsele tıklayın)_ - -Generatif Yapay Zeka, metin, görseller ve diğer içerik türlerini üretebilen yapay zekadır. Bu teknolojiyi harika kılan şey, yapay zekayı demokratikleştirmesidir; herkes yalnızca doğal bir dilde yazılmış bir metin istemiyle kullanabilir. Bir şeyler başarmak için Java veya SQL gibi bir programlama dili öğrenmenize gerek yoktur. Kendi dilinizi kullanarak ne istediğinizi belirtirsiniz ve bir yapay zeka modeli size öneriler sunar. Bunun uygulamaları ve etkisi büyüktür; raporları anlayabilir, uygulamalar yazabilir ve daha fazlasını saniyeler içinde gerçekleştirebilirsiniz. - -Bu eğitim programında, girişimimizin eğitim dünyasında yeni senaryoları nasıl açığa çıkarmak için generatif yapay zekayı kullandığını ve bu teknolojinin sosyal etkileri ile sınırlamalarını nasıl ele aldığımızı keşfedeceğiz. - -## Giriş - -Bu ders şunları kapsayacaktır: - -- İş senaryosuna giriş: girişim fikrimiz ve misyonumuz. -- Generatif yapay zeka ve mevcut teknoloji manzarasına nasıl ulaştığımız. -- Büyük Dil Modellerinin (LLM) iç yapısı. -- Büyük Dil Modellerinin başlıca yetenekleri ve pratik kullanım alanları. - -## Öğrenme Hedefleri - -Bu dersi tamamladıktan sonra şunları anlayacaksınız: - -- Generatif yapay zekanın ne olduğu ve Büyük Dil Modellerinin nasıl çalıştığı. -- Büyük Dil Modellerini farklı kullanım senaryolarında, özellikle eğitim odaklı nasıl kullanabileceğiniz. - -## Senaryo: Eğitim Girişimimiz - -Generatif Yapay Zeka (AI), yapay zeka teknolojisinin zirvesini temsil eder ve bir zamanlar imkansız görülen şeylerin sınırlarını zorlar. Generatif yapay zeka modellerinin birçok yeteneği ve uygulaması vardır, ancak bu eğitim programı kapsamında bunun eğitimi nasıl devrim niteliğinde dönüştürdüğünü keşfedeceğiz. - -Kurgusal girişimimiz olan _bizim girişimimiz_, eğitim alanında faaliyet gösteriyor ve şu iddialı misyonu benimsemiştir: - -> _Öğrenimde erişilebilirliği küresel ölçekte iyileştirmek, eğitimde eşitliği sağlamak ve her öğrencinin ihtiyaçlarına göre kişiselleştirilmiş öğrenme deneyimleri sunmak._ - -Bu hedefe ulaşmanın en güçlü yollarından birinin Büyük Dil Modelleri (LLM) olduğunu biliyoruz. - -Generatif yapay zekanın eğitimde devrim yaratması beklenmektedir. Öğrenciler, 7/24 sanal öğretmenler aracılığıyla geniş bilgi ve örnekler alırken, öğretmenler öğrencilerini değerlendirmek ve geri bildirim sağlamak için yenilikçi araçlardan faydalanabilirler. - -![Monitöre bakan beş genç öğrenci - DALLE2 ile oluşturuldu](../../images/students-by-DALLE2.png?WT.mc_id=academic-105485-koreyst) - -Başlangıç olarak, müfredat boyunca kullanacağımız bazı temel kavramları ve terminolojiyi tanımlayalım. - -## Generatif Yapay Zeka Nasıl Ortaya Çıktı? - -Son zamanlarda üretken YZ modellerinin duyurulmasıyla yaratılan olağanüstü _hype_'a rağmen, bu teknoloji onlarca yıllık bir geçmişe sahiptir ve ilk araştırma çabaları 60'lı yıllara kadar uzanmaktadır. Şu anda, örneğin [OpenAI ChatGPT](https://openai.com/chatgpt) veya web araması Bing konuşmaları için bir GPT modeli kullanan [Bing Chat](https://www.microsoft.com/edge/features/bing-chat?WT.mc_id=academic-105485-koreyst) tarafından gösterildiği gibi, konuşma gibi insan bilişsel yeteneklerine sahip YZ ile bir noktadayız. - -Biraz geriye gidersek, yapay zekanın ilk prototipleri, bir grup uzmandan elde edilen ve bir bilgisayarda temsil edilen bir bilgi tabanına dayanan, daktiloyla yazılmış sohbet robotlarından oluşuyordu. Bilgi tabanındaki yanıtlar, girdi metninde görünen anahtar kelimeler tarafından tetikleniyordu. -Ancak, kısa süre sonra daktiloyla yazılmış sohbet robotları kullanan böyle bir yaklaşımın iyi ölçeklenmediği anlaşıldı. - -### Yapay zekaya istatistiksel bir yaklaşım: Makine Öğrenimi - -90'lı yıllarda metin analizine istatistiksel bir yaklaşımın uygulanmasıyla bir dönüm noktası yaşandı. Bu, makine öğrenimi olarak bilinen ve açıkça programlanmadan verilerden kalıplar öğrenebilen yeni algoritmaların geliştirilmesine yol açtı. Bu yaklaşım, makinelerin insan dilini anlamayı simüle etmesine olanak tanır: metin-etiket eşleştirmeleri üzerinde istatistiksel bir model eğitilir ve modelin bilinmeyen girdi metnini, mesajın amacını temsil eden önceden tanımlanmış bir etiketle sınıflandırmasını sağlar. - -### Sinir ağları ve modern sanal asistanlar - -Son yıllarda, daha büyük miktarda veriyi ve daha karmaşık hesaplamaları işleyebilen donanımın teknolojik gelişimi, yapay zeka alanındaki araştırmaları teşvik ederek sinir ağları veya derin öğrenme algoritmaları olarak bilinen gelişmiş makine öğrenimi algoritmalarının geliştirilmesine yol açmıştır. - -Sinir ağları (ve özellikle Tekrarlayan Sinir Ağları - RNN'ler) doğal dil işlemeyi önemli ölçüde geliştirerek metnin anlamının daha anlamlı bir şekilde temsil edilmesini sağladı ve bir cümledeki bir kelimenin bağlamına değer verdi. - -Bu, yeni yüzyılın ilk on yılında doğan, insan dilini yorumlama, bir ihtiyacı belirleme ve bunu karşılamak için bir eylem gerçekleştirme konusunda çok yetkin olan sanal asistanlara güç veren teknolojidir - önceden tanımlanmış bir komut dosyası ile cevap vermek veya 3. taraf bir hizmeti kullanmak gibi. - -### Günümüz, Üretken Yapay Zeka - -İşte bugün derin öğrenmenin bir alt kümesi olarak görülebilecek Üretken Yapay Zekaya böyle ulaştık. - -![AI, ML, DL ve Generative AI](../../images/AI-diagram.png?WT.mc_id=academic-105485-koreyst) - -Yapay zeka alanında onlarca yıl süren araştırmalardan sonra, _Transformer_ adı verilen yeni bir model mimarisi, RNN'lerin sınırlarını aşarak çok daha uzun metin dizilerini girdi olarak alabildi. Transformatörler dikkat mekanizmasına dayanır ve modelin aldığı girdilere farklı ağırlıklar vermesini, metin dizisindeki sıralarına bakılmaksızın en alakalı bilgilerin yoğunlaştığı yerlere 'daha fazla dikkat etmesini' sağlar. - -Metinsel girdiler ve çıktılarla çalıştıkları için Büyük Dil Modelleri (LLM'ler) olarak da bilinen son nesil yapay zeka modellerinin çoğu gerçekten de bu mimariye dayanmaktadır. Kitaplar, makaleler ve web siteleri gibi çeşitli kaynaklardan elde edilen büyük miktarda etiketsiz veri üzerinde eğitilen bu modellerin ilginç yanı, çok çeşitli görevlere uyarlanabilmeleri ve yaratıcılığa benzer bir şekilde dilbilgisi açısından doğru metinler üretebilmeleridir. Böylece, bir makinenin girdi metnini 'anlama' kapasitesini inanılmaz bir şekilde artırmakla kalmadılar, aynı zamanda insan dilinde orijinal bir yanıt üretme kapasitelerini de sağladılar. - -## Büyük dil modelleri nasıl çalışır? - -Bir sonraki bölümde farklı türde Üretken Yapay Zeka modellerini inceleyeceğiz, ancak şimdilik OpenAI GPT (Generative Pre-trained Transformer) modellerine odaklanarak büyük dil modellerinin nasıl çalıştığına bir göz atalım. - -- **Tokenizer, metinden sayılara**: Büyük Dil Modelleri girdi olarak bir metin alır ve çıktı olarak bir metin oluşturur. Ancak, istatistiksel modeller olduklarından, metin dizilerinden çok sayılarla daha iyi çalışırlar. Bu nedenle modele gelen her girdi, çekirdek model tarafından kullanılmadan önce bir tokenizer tarafından işlenir. Bir belirteç, değişken sayıda karakterden oluşan bir metin yığınıdır, bu nedenle belirteçleyicinin ana görevi girdiyi bir belirteç dizisine bölmektir. Daha sonra her bir token, orijinal metin yığınının tamsayı kodlaması olan bir token indeksi ile eşleştirilir. - -![Tokenizer örneği](../../images/tokenizer-example.png?WT.mc_id=academic-105485-koreyst) - -- **Çıktı belirteçlerini tahmin etme**: Girdi olarak n belirteç verildiğinde (maksimum n bir modelden diğerine değişir), model çıktı olarak bir belirteci tahmin edebilir. Bu belirteç daha sonra genişleyen bir pencere modelinde bir sonraki yinelemenin girdisine dahil edilir ve bir (veya birden fazla) cümleyi yanıt olarak alma konusunda daha iyi bir kullanıcı deneyimi sağlar. Bu, ChatGPT ile oynadıysanız, bazen neden bir cümlenin ortasında duruyormuş gibi göründüğünü fark etmiş olabilirsiniz. - -- **Seçim süreci, olasılık dağılımı**: Çıktı belirteci, model tarafından mevcut metin dizisinden sonra ortaya çıkma olasılığına göre seçilir. Bunun nedeni, modelin eğitimine dayalı olarak hesaplanan tüm olası 'sonraki belirteçler' üzerinde bir olasılık dağılımı tahmin etmesidir. Ancak, her zaman ortaya çıkan dağılımdan en yüksek olasılığa sahip belirteç seçilmez. Modelin deterministik olmayan bir şekilde hareket ettiği bir şekilde bu seçime bir dereceye kadar rastgelelik eklenir - aynı girdi için tam olarak aynı çıktıyı almayız. Bu rastgelelik derecesi yaratıcı düşünme sürecini simüle etmek için eklenmiştir ve sıcaklık adı verilen bir model parametresi kullanılarak ayarlanabilir. - -## Girişimimiz Büyük Dil Modellerinden nasıl yararlanabilir? - -Artık büyük bir dil modelinin iç işleyişini daha iyi anladığımıza göre, iş senaryomuzu göz önünde bulundurarak, oldukça iyi gerçekleştirebilecekleri en yaygın görevlerin bazı pratik örneklerini görelim. -Bir Büyük Dil Modelinin ana yeteneğinin _doğal dilde yazılmış bir metin girdisinden başlayarak sıfırdan bir metin oluşturmak_ olduğunu söylemiştik. - -Peki ama ne tür bir metinsel girdi ve çıktı? -Büyük bir dil modelinin girdisi komut istemi olarak bilinirken, çıktı ise tamamlama olarak bilinir; bu terim, mevcut girdiyi tamamlamak için bir sonraki belirteci üreten model mekanizmasını ifade eder. İstemin ne olduğunu ve modelimizden en iyi şekilde yararlanacak şekilde nasıl tasarlanacağını derinlemesine inceleyeceğiz. Ancak şimdilik, bir komut isteminin şunları içerebileceğini söyleyelim: - -- Modelden beklediğimiz çıktı türünü belirten bir **talimat**. Bu talimat bazen bazı örnekler veya bazı ek veriler içerebilir. - - 1. Yapılandırılmamış verilerden içgörülerin çıkarılmasıyla birlikte bir makalenin, kitabın, ürün incelemelerinin ve daha fazlasının özetlenmesi. - - ![Özetleme örneği](../../images/summarization-example.png?WT.mc_id=academic-105485-koreyst) - - 2. Bir makale, bir deneme, bir ödev veya daha fazlası için yaratıcı fikir ve tasarım. - - ![Yaratıcı yazma örneği](../../images/creative-writing-example.png?WT.mc_id=academic-105485-koreyst) - -- Bir aracı ile konuşma şeklinde sorulan bir **soru**. - - ![Konuşma örneği](../../images/conversation-example.png?WT.mc_id=academic-105485-koreyst) - -- Tamamlanacak bir **metin yığını**, ki bu dolaylı olarak bir yazma yardımı talebidir. - - ![Metin tamamlama örneği](../../images/text-completion-example.png?WT.mc_id=academic-105485-koreyst) - -- Açıklama ve belgeleme isteğiyle birlikte bir **kod** yığını veya belirli bir görevi yerine getiren bir kod parçası oluşturmayı isteyen bir yorum. - - ![Kodlama örneği](../../images/coding-example.png?WT.mc_id=academic-105485-koreyst) - -Yukarıdaki örnekler oldukça basittir ve Büyük Dil Modelleri yeteneklerinin kapsamlı bir gösterimi olmak istememektedir. Sadece, özellikle eğitim bağlamlarıyla sınırlı olmamak üzere, üretken yapay zeka kullanımının potansiyelini göstermek istemektedirler. - -Ayrıca, üretken bir YZ modelinin çıktısı mükemmel değildir ve bazen modelin yaratıcılığı ona karşı çalışabilir, bu da insan kullanıcının gerçekliğin bir gizemi olarak yorumlayabileceği veya saldırgan olabileceği kelimelerin bir kombinasyonu olan bir çıktı ile sonuçlanabilir. Üretken YZ zeki değildir - en azından eleştirel ve yaratıcı muhakeme veya duygusal zekayı da içeren daha kapsamlı zeka tanımında; deterministik değildir ve güvenilir değildir, çünkü hatalı referanslar, içerik ve ifadeler gibi uydurmalar doğru bilgilerle birleştirilebilir ve ikna edici ve kendinden emin bir şekilde sunulabilir. İlerleyen derslerde, tüm bu sınırlamalarla ilgileneceğiz ve bunları azaltmak için neler yapabileceğimizi göreceğiz. - -## Görev - -Göreviniz [Üretken Yapay Zeka](https://en.wikipedia.org/wiki/Generative_artificial_intelligence?WT.mc_id=academic-105485-koreyst) hakkında daha fazla araştırma yapmak ve şu anda kullanılmayan bir alanda üretken yapay zekayı nasıl kullanabileceğinizi belirlemektir. Bu teknolojiyi eklediğinizde, geleneksel yöntemlerden nasıl farklı bir etki yaratır? Daha önce yapamadığınız bir şeyi yapabilir misiniz, yoksa sadece daha hızlı mı olursunuz? - -Hayalinizdeki yapay zeka girişiminin nasıl görüneceğini açıklayan 300 kelimelik bir özet yazın. "Sorun", "Yapay Zekayı Nasıl Kullanırım", "Etkisi" gibi başlıklar ekleyin ve isteğe bağlı olarak bir iş planı da dahil edebilirsiniz. - -Bu görevi tamamlarsanız [Microsoft for Startups Founders Hub](https://www.microsoft.com/startups?WT.mc_id=academic-105485-koreyst) programına başvurmaya bile hazır olabilirsiniz! Azure, OpenAI kredileri, mentorluk ve daha fazlasını sunduğumuz bu programı inceleyin. 🚀 - -## Bilgi Kontrolü - -Büyük dil modelleri hakkında hangisi doğrudur? - -1. Her zaman tamamen aynı yanıtı alırsınız. -2. Her şeyi mükemmel yapar; toplama işlemlerinde harikadır, çalışır durumda kod üretir vb. -3. Aynı istemi (prompt) kullanmanıza rağmen yanıt değişebilir. Ayrıca, ister metin ister kod olsun, size iyi bir ilk taslak sunmada mükemmeldir. Ancak, sonuçları geliştirmeniz gerekir. - -Cevap: 3, bir LLM (Büyük Dil Modeli) deterministik değildir, yani yanıtları değişebilir. Ancak, bu değişkenliği bir sıcaklık ayarı ile kontrol edebilirsiniz. Ayrıca, her şeyi mükemmel yapmasını beklememelisiniz; asıl amacı sizin için ağır işleri yapmak ve genellikle geliştirmeniz gereken iyi bir ilk denemeyi sunmaktır. - -## Harika İş! Yolculuğa Devam Edin 🚀 - -Bu dersi tamamladıktan sonra [Üretken Yapay Zeka Öğrenme Koleksiyonumuzu](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) inceleyerek Üretken Yapay Zeka bilginizi geliştirmeye devam edin! - -Ders 2'ye geçerek farklı LLM türlerini nasıl [keşfedip karşılaştırabileceğinizi](../../../02-exploring-and-comparing-different-llms/README.md?WT.mc_id=academic-105485-koreyst) öğrenin! diff --git a/01-introduction-to-genai/translations/tw/README.md b/01-introduction-to-genai/translations/tw/README.md deleted file mode 100644 index 89b6542802..0000000000 --- a/01-introduction-to-genai/translations/tw/README.md +++ /dev/null @@ -1,147 +0,0 @@ -# 介紹生成式人工智慧和大型語言模型 - -[![生成式 AI 和大型語言模型介紹](../../images/01-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson-1-gh?WT.mc_id=academic-105485-koreyst) - -_(點擊上方圖片觀看本課程的影片)_ - -生成式 AI 是能夠生成文字、圖像和其他類型內容的人工智慧。使其成為一項奇妙技術的是它使 AI 民主化,任何人只需使用簡單的文字提示、一句自然語言書寫的句子即可使用它。你不需要學習像 Java 或 SQL 這樣的語言來完成有價值的事情,你只需要使用你的語言,說出你想要的東西,AI 模型就會給出建議。這的應用和影響是巨大的,你可以在幾秒鐘內撰寫或理解報告、撰寫應用程式等等。 - -在這門課程中,我們將探討我們的初創公司如何利用生成式 AI 來開啟教育領域的新場景,以及我們如何應對其應用的社會影響和技術限制所帶來的不可避免的挑戰。 - -## 簡介 - -本課程將涵蓋: - -- 業務場景介紹: 我們的創業想法和使命。 -- 生成式 AI 以及我們如何在當前技術環境中立足。 -- 大型語言模型的內部運作。 -- 大型語言模型的主要能力和實際使用案例。 - -## 學習目標 - -完成本課程後,你將了解: - -- 什麼是生成式 AI 以及大型語言模型如何運作。 -- 如何利用大型語言模型應用於不同的使用案例,重點在教育情境。 - -## 情境: 我們的教育新創公司 - -生成式人工智慧(AI)代表了AI技術的巔峰,推動了曾經被認為不可能的邊界。生成式AI模型具有多種能力和應用,但在這個課程中,我們將探討它如何通過一個虛構的初創公司來革新教育。我們將這個初創公司稱為_我們的初創公司_。我們的初創公司在教育領域工作,擁有雄心勃勃的使命宣言 - -> _在全球範圍內改善學習的可及性,確保教育的公平獲取,並根據每個學習者的需求提供個性化的學習體驗_。 - -我們的初創團隊知道,如果不利用現代最強大的工具之一——大型語言模型(LLMs),我們將無法實現這一目標。 - -生成式 AI 預計將徹底改變我們今天的學習和教學方式,學生可以隨時隨地使用虛擬教師,這些教師提供大量的資訊和範例,而教師則能利用創新工具來評估學生並提供反饋。 - -![五個年輕學生看著螢幕 - 圖片由 DALLE2 提供](../../images/students-by-DALLE2.png?WT.mc_id=academic-105485-koreyst) - -為了開始,讓我們定義一些我們將在整個課程中使用的基本概念和術語。 - -## 我們是如何獲得生成式 AI 的? - -儘管最近因生成式 AI 模型的宣布而引起了非凡的_炒作_,這項技術已經醞釀了數十年,最早的研究努力可以追溯到60年代。我們現在處於 AI 具有類似人類認知能力的階段,例如[OpenAI ChatGPT](https://openai.com/chatgpt)或[Bing Chat](https://www.microsoft.com/edge/features/bing-chat?WT.mc_id=academic-105485-koreyst)所展示的對話,後者也使用 GPT 模型進行網頁搜索 Bing 對話。 - -回顧一下,最早的 AI 原型由打字聊天機器人組成,依賴從一群專家那裡提取的知識庫並表示在電腦中。知識庫中的答案是由輸入文本中出現的關鍵字觸發的。 -然而,很快就清楚這種使用打字聊天機器人的方法並不具延展性。 - -### 一種統計方法的AI: 機器學習 - -90年代出現了一個轉折點,隨著統計方法在文本分析中的應用。這導致了新算法的開發——被稱為機器學習——能夠從數據中學習模式,而不需要明確編程。這種方法允許機器模擬人類語言理解:一個統計模型在文本-標籤配對上進行訓練,使模型能夠用預定義的標籤來分類未知的輸入文本,這些標籤代表了訊息的意圖。 - -### 神經網絡與現代虛擬助手 - -隨著硬體技術的進步,能夠處理更大量的數據和更複雜的計算,促進了人工智慧領域的研究,導致了先進機器學習算法的發展——稱為神經網絡或深度學習算法。 - -神經網路(特別是循環神經網路 - RNNs)顯著提升了自然語言處理,使得文本意義的表示更加有意義,並重視單詞在句子中的上下文。 - -這是支援新世紀第一個十年誕生的虛擬助手的技術,非常擅長解釋人類語言、識別需求並執行動作以滿足需求——例如用預定義的腳本回答或使用第三方服務。 - -### 現今,生成式 AI - -因此,我們來到了今天的生成式 AI,它可以被視為深度學習的一個子集。 - -![AI, ML, DL 和生成式 AI](../../images/AI-diagram.png?WT.mc_id=academic-105485-koreyst) - -經過數十年的 AI 領域研究,一種新的模型架構——稱為 _Transformer_——克服了 RNN 的限制,能夠將更長的文本序列作為輸入。Transformers 基於注意力機制,使模型能夠對接收到的輸入賦予不同的權重,「更多地關注」最相關的資訊集中之處,而不管它們在文本序列中的順序。 - -最近的大多數生成式 AI 模型——也稱為大型語言模型(LLMs),因為它們處理文本輸入和輸出——確實基於這種架構。這些模型的有趣之處在於,它們是基於從書籍、文章和網站等多種來源獲取的大量未標記數據進行訓練的,可以適應各種任務並生成語法正確且具有創意的文本。因此,它們不僅極大地增強了機器「理解」輸入文本的能力,還使其能夠用人類語言生成原創回應。 - -## 大型語言模型如何運作? - -在下一章中,我們將探索不同類型的生成式 AI 模型,但現在讓我們來看看大型語言模型如何運作,重點是 OpenAI GPT(生成式預訓練變壓器)模型。 - -- **分詞器,文字轉數字**: 大型語言模型接收文字作為輸入並生成文字作為輸出。然而,作為統計模型,它們處理數字比處理文字序列效果更好。這就是為什麼每個輸入到模型的資料在被核心模型使用之前都會經過分詞器處理。分詞器的主要任務是將輸入拆分為一個個的詞元。詞元是一段文字,由可變數量的字符組成。然後,每個詞元都會被映射到一個詞元索引,即原始文字段的整數編碼。 - -![範例的標記化](../../images/tokenizer-example.png?WT.mc_id=academic-105485-koreyst) - -- **預測輸出標記**: 給定 n 個標記作為輸入(最大 n 因模型而異), 模型能夠預測一個標記作為輸出。這個標記然後被納入下一次迭代的輸入中,以擴展窗口模式進行, 從而提供更好的用戶體驗, 得到一個(或多個)句子作為答案。這解釋了為什麼, 如果你曾經使用過 ChatGPT, 你可能注意到有時它看起來像是在句子中間停下來。 - -- **選擇過程, 機率分佈**: 輸出標記是由模型根據其在當前文本序列之後出現的機率選擇的。這是因為模型預測了所有可能的「下一個標記」的機率分佈, 基於其訓練計算。然而, 並不總是從結果分佈中選擇機率最高的標記。這個選擇中加入了一定程度的隨機性, 使模型以非確定性的方式行事 - 我們不會對相同的輸入得到完全相同的輸出。這種隨機性程度是為了模擬創意思考過程而加入的, 可以使用一個稱為溫度的模型參數進行調整。 - -## 我們的初創公司如何利用大型語言模型? - -現在我們對大型語言模型的內部運作有了更好的理解,讓我們來看看一些它們能夠執行得相當好的常見任務的實際範例,並關注我們的業務場景。 -我們說過,大型語言模型的主要能力是_從頭開始生成文本,從用自然語言書寫的文本輸入開始_。 - -但是什麼樣的文本輸入和輸出呢? -大型語言模型的輸入被稱為提示,而輸出被稱為完成,這個術語指的是模型生成下一個標記以完成當前輸入的機制。我們將深入探討什麼是提示以及如何設計它以充分利用我們的模型。但現在,讓我們先說提示可能包括: - -- 一個**指令**,指定我們期望從模型中獲得的輸出類型。這個指令有時可能會嵌入一些範例或一些額外的數據。 - - 1. 對文章、書籍、產品評論等進行摘要,並從非結構化數據中提取見解。 - - ![摘要範例](../../images/summarization-example.png?WT.mc_id=academic-105485-koreyst) - -
- - 2. 創意構思和設計文章、論文、作業等。 - - ![創意寫作範例](../../images/creative-writing-example.png?WT.mc_id=academic-105485-koreyst) - -
- -- 以與代理對話的形式提出的**問題**。 - -![範例的對話](../../images/conversation-example.png?WT.mc_id=academic-105485-koreyst) - -
- -- 一段**需要完成的文字**, 這隱含著尋求寫作協助的請求。 - -![範例的文字完成](../../images/text-completion-example.png?WT.mc_id=academic-105485-koreyst) - -
- -- 一段**程式碼**,連同要求解釋和記錄它,或者一個評論要求生成一段執行特定任務的程式碼。 - -![程式碼範例](../../images/coding-example.png?WT.mc_id=academic-105485-koreyst) - -
- -上述範例相當簡單,並不想詳盡展示大型語言模型的能力。它們只是想展示使用生成式 AI 的潛力,特別是但不限於教育情境。 - -此外,生成式 AI 模型的輸出並不完美,有時模型的創造力會適得其反,導致輸出結果是人類用戶可以解讀為現實神秘化的詞語組合,或者可能具有冒犯性。生成式 AI 並不智能——至少在更全面的智能定義中,包括批判性和創造性推理或情感智能;它不是確定性的,也不值得信賴,因為虛構的內容,如錯誤的引用、內容和陳述,可能會與正確的資訊結合在一起,以令人信服和自信的方式呈現。在接下來的課程中,我們將處理所有這些限制,並看看我們能做些什麼來減輕它們。 - -## 作業 - -你的任務是閱讀更多關於[生成式 AI](https://en.wikipedia.org/wiki/Generative_artificial_intelligence?WT.mc_id=academic-105485-koreyst)的資訊,並嘗試找出一個今天沒有使用生成式 AI 的領域,你會在那裡加入生成式 AI。這樣做的影響與「舊方式」有何不同,你能做以前做不到的事情,還是你變得更快了?寫一篇300字的摘要,描述你夢想中的 AI 初創公司會是什麼樣子,並包括像「問題」、「我會如何使用 AI」、「影響」這樣的標題,還可以選擇性地包括一個商業計劃。 - -如果你完成了這個任務,你甚至可能準備好申請微軟的孵化器,[Microsoft for Startups Founders Hub](https://www.microsoft.com/startups?WT.mc_id=academic-105485-koreyst) 我們提供 Azure、OpenAI、指導等多方面的點數,快來看看吧! - -## 知識檢查 - -什麼是關於大型語言模型的真相? - -1. 你每次都會得到完全相同的回應。 -1. 它做事完美無缺,非常擅長加數、產生可執行的程式碼等。 -1. 儘管使用相同的提示,回應可能會有所不同。它也非常擅長給你某些東西的初稿,不論是文本還是程式碼。但你需要改進結果。 - -A: 3, LLM 是非決定性的,回應會有所不同,不過,你可以透過溫度設定來控制其變異。你也不應該期望它能完美地完成所有事情,它的目的是為你分擔繁重的工作,這通常意味著你會得到一個不錯的初步嘗試,然後你需要逐步改進。 - -## 很棒的工作!繼續這段旅程 - -完成本課程後,請查看我們的[生成式 AI 學習集合](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst)以繼續提升您的生成式 AI 知識! - -前往第2課,我們將探討如何[探索和比較不同的LLM類型](../../../02-exploring-and-comparing-different-llms/translations/tw/README.md?WT.mc_id=academic-105485-koreyst)! - diff --git a/02-exploring-and-comparing-different-llms/translations/cn/README.md b/02-exploring-and-comparing-different-llms/translations/cn/README.md deleted file mode 100644 index 9e24b8bca0..0000000000 --- a/02-exploring-and-comparing-different-llms/translations/cn/README.md +++ /dev/null @@ -1,198 +0,0 @@ -# 第二章 : 探索和比较不同的 LLMs - -[![Exploring and comparing different LLMs](../../images/02-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson2-gh?WT.mc_id=academic-105485-koreyst) - -> _点击该图片看本章导学视频_ - -在上一章中,我们了解了生成式人工智能如何改变技术格局、LLMs 工作原理,以及企业(例如“Our startup”)如何将它们应用到自己的应用场景中并得到发展! 在本章中,我们将比较和对比不同类型的大型语言模型以了解它们的优缺点。 - -我们初创公司技术旅程的下一步是 LLMs 的前景并了解哪些适合我们的案例 - -## 本章概述 - -本章内容包括: - -- 当前落地的不同类型的 LLMs 。 -- 在 Azure 中测试、迭代和不同模型使用场景的比较 -- 如何部署 LLMs 。 - -## 学习目标 - -完成本章学习后,您将会学习到: - -- 为您的应用场景选择合适的模型。 -- 了解如何测试、迭代和提高模型的性能。 -- 了解企业如何部署模型。 - -## 认识不同的 LLMs - -大型语言模型 (LLM) 可以根据其架构、训练数据和用例进行多种分类。 了解这些差异将有助于“Our startup”根据场景选择正确的模型,并了解如何测试、迭代和提高性能。 - -LLM 模型有许多不同类型,您选择的模型取决于您的用途、您的数据、您准备支付的费用等等。 - -根据您是否打算使用模型进行文本、音频、视频、图像生成等,您可能会选择不同类型的模型。 - -- **音频和语音识别**。 为此,Whisper 模型是一个不错的选择,因为它们是通常用于语音识别。 它经过不同音频数据的训练,可以执行多语言语音识别。 例如,您可以使用所有的模型,从价格便宜但功能强大的模型(如 Curry)到更昂贵拥有高性能的达芬奇(Davinci)模型。 详细了解 [ Whisper 类型模型](https://platform.openai.com/docs/models/whisper?WT.mc_id=academic-105485-koreyst)。 - -- **图像生成**。 对于图像生成,DALL-E 和 Midjourney 是两个最佳的选择。 DALL-E 由 Azure OpenAI 提供。 [在此处阅读有关 DALL-E 的更多信息](https://platform.openai.com/docs/models/dall-e?WT.mc_id=academic-105485-koreyst) 以及本课程的第九章。 - -- **文本生成**。 大多数模型都经过文本生成训练,您有从 GPT-3.5 到 GPT-4 的多种选择。 它们的成本各不同,其中 GPT-4 是最昂贵的。 值得研究一下 [Azure OpenAI Playground](https://oai.azure.com/portal/playground?WT.mc_id=academic-105485-koreyst),以评估哪些模型在功能和成本方面适合你的实际需求。 - -选择模型意味着您能获得一些基本功能,但这可能还不够。 通常,您有公司特定的数据,您需要以某种方式告诉 LLMs。 关于如何解决这个问题,有几种不同的选择,接下来的部分将详细介绍。 - -### 认识基础模型与 LLMs - -“基础模型”是[由斯坦福大学研究人员创造](https://arxiv.org/abs/2108.07258?WT.mc_id=academic-105485-koreyst),定义为遵循某些标准的人工智能模型,例如: - -- **他们使用无监督学习或自监督学习进行训练**,这意味着他们接受未标记的多模式数据的训练,并且他们的训练过程不需要人工注释或数据标记。 -- **它们是非常大的模型**,基于经过数十亿参数训练的深度神经网络。 -- **它们通常旨在作为其他模型的“基础”**,这意味着它们可以用作构建其他模型的起点,可以通过微调方式来完成。 - -![基础模型与 LLMs](../../images/FoundationModel.png?WT.mc_id=academic-105485-koreyst) - -图片来源:[基础模型和大语言模型基本指南| 巴巴尔·M·巴蒂 (Babar M Bhatti) | Medium](https://thebabar.medium.com/essential-guide-to-foundation-models-and-large-language-models-27dab58f7404) - -为了进一步阐明这种区别,我们以 ChatGPT 为例。 为了构建 ChatGPT 的第一个版本,名为 GPT-3.5 的模型作为基础模型。 这意味着 OpenAI 使用一些特定于聊天的数据来创建 GPT-3.5 的调整版本,专门用于在对话场景(例如聊天机器人)中让其有更好的表现。 - -![基础模型](../../images/Multimodal.png?WT.mc_id=academic-105485-koreyst) - -图片来源:[2108.07258.pdf (arxiv.org)](https://arxiv.org/pdf/2108.07258.pdf?WT.mc_id=academic-105485-koreyst) - -### 认识开源模型与专有模型 - -对 LLM 进行分类的另一种方法是它们是开源的还是专有的。 - -开源模型是向公众开放并且任何人都可以使用的模型。 它们通常由创建它们的公司或研究团体提供。 这些模型可以针对 LLMs 的各种用例进行检查、修改和定制。 然而,它们并不总是针对生产用途进行优化,并且可能不如专有模型具备高性能。 此外,开源模型的资金可能有限,并且它们可能无法长期维护或可能无法根据最新研究进行更新。 流行的开源模型的例子包括 [Alpaca](https://crfm.stanford.edu/2023/03/13/alpaca.html)、[Bloom](https://huggingface.co/bigscience/bloom) 和 [ LLaMA](https://llama.meta.com)。 - -专有模型是公司拥有的模型,不向公众提供。 这些模型通常针对生产用途进行了优化。 但是,不允许针对特定的使用场景进行检查、修改或定制它们。 另外,它们并不总是免费提供,可能需要订阅或付费才能使用。 此外,用户无法控制用于训练模型的数据,这意味着他们应该委托模型所有者确保对数据隐私和负责任地使用人工智能的承诺。 流行的专有模型的例子包括 [OpenAI 模型](https://platform.openai.com/docs/models/overview)、[Google Bard](https://sapling.ai/llm/bard?WT.mc_id=academic-105485-koreyst) 或 [Claude 2](https://www.anthropic.com/index/claude-2)。 - -### 认识嵌入式,图像生成,文本或代码生成 - -LLMs 还可以根据其产生的输出进行分类。 - -嵌入是一组可以将文本转换为数字形式的模型,称为嵌入,它是输入文本的数字表示。 嵌入使机器更容易理解单词或句子之间的关系,并且可以用作其他模型的输入,例如分类模型或对数值数据具有更好性能的聚类模型。 嵌入模型通常用于迁移学习,其中为有大量数据的代理任务构建模型,然后将模型权重(嵌入)重新用于其他下游任务。 此类别的一个示例是 [OpenAI 嵌入](https://platform.openai.com/docs/models/embeddings?WT.mc_id=academic-105485-koreyst)。 - -![嵌入](../../images/Embedding.png?WT.mc_id=academic-105485-koreyst) - -图像生成模型主要是用来生成图像。 这些模型通常用于图像编辑、图像合成和图像翻译。 图像生成模型通常在大型图像数据集上进行训练,例如 [LAION-5B](https://laion.ai/blog/laion-5b/?WT.mc_id=academic-105485-koreyst),并且可用于生成新图像或编辑现有图像 修复、超分辨率和着色技术。 如 [DALL-E-3](https://openai.com/dall-e-3) 和 [StableDiffusion](https://github.com/Stability-AI/StableDiffusion?WT.mc_id=academic-105485-koreyst)。 - -![Image generation](../../images/Image.png?WT.mc_id=academic-105485-koreyst) - -文本或代码生成模型主要是生成文本或代码。 这些模型通常用于文本摘要、翻译和问答。 文本生成模型通常在大型文本数据集上进行训练,例如 [BookCorpus](https://www.cv-foundation.org/openaccess/content_iccv_2015/html/Zhu_Aligning_Books_and_ICCV_2015_paper.html),并且可用于生成新文本或回答问题。 代码生成模型,例如 [CodeParrot](https://huggingface.co/codeparrot?WT.mc_id=academic-105485-koreyst),通常在大型代码数据集(如 GitHub)上进行训练,可用于生成新代码或修复现有代码中的错误。 - -![Text and code generation](../../images/Text.png?WT.mc_id=academic-105485-koreyst) - -### 了解编码-解码器与独立解码器 - -为了讨论 LLMs 的不同类型的架构,让我们来打个比方。 - -想象一下,您的经理给您一个为学生编写测验题目的任务。 您有两个同事; 一名负责监督内容的创建,另一名负责审查内容。 - -内容创建者就像一个独立解码器的模型,他们可以查看主题并查看您已经写的内容,然后他可以基于这些内容来编写课程。 他们非常擅长撰写引人入胜且内容丰富的内容,但不太擅长理解主题和学习目标。 独立解码器模型如 GPT 系列模型,例如 GPT-3。 - -审阅者就像一个独立编码器的模型,他们查看编写的课程和答案,注意它们之间的关系并通过上下文进行理解,但他们不擅于生成内容。独立编码器模型的一个例子是 BERT。 - -想象一下,我们也可以有人可以创建和审查测验,这是一个编码器-解码器模型如 BART 和 T5 - -### 理解服务与模型 - -现在,我们来谈谈服务和模型之间的区别。 服务是云服务提供商提供的产品,通常是模型、数据和其他组件的结合。 模型是服务的核心组件,通常是基础模型,例如各种 LLM。 - -服务通常针对生产环境进行了优化,并且通常比模型让用户通过图形界面使用。 但服务并不总是免费提供的,可能需要订阅或付费才能使用,以换取服务所有者的设备和相关资源,优化费用并轻松扩展。 服务的一个例子是 [Azure OpenAI 服务](https://learn.microsoft.com/azure/ai-services/openai/overview?WT.mc_id=academic-105485-koreyst),它提供按需付费计划,意味着用户根据服务用量付费。此外,Azure OpenAI Service 在模型功能上还提供企业级安全性和负责任的 AI 框架。 - -模型是带有参数、权重等的神经网络。 允许公司在本地运营需要购买设备、构建并购买许可证或使用开源模型。 像 LLaMA 这样的模型使用就需要额外的算力运行 - -## 如何使用不同的模型进行测试和迭代从而了解 Azure 上的运行性能 - -一旦我们的团队探索了当前的 LLMs 前景并为他们的场景确定了一些好的候选模型后,下一步就是根据他们的数据和工作负载行测试。 这是一个迭代过程,通过实验和量化来完成。 -我们在前面的段落中提到的大多数模型(OpenAI 模型、Llama2 等开源模型和 Hugging Face transformers)都可以在 [Azure 机器学习工作室](https://ml.azure.com/?WT.mc_id=academic-105485-koreyst) 中的目录中找到 [基础模型](https://learn.microsoft.com/azure/machine-learning/concept-foundation-models?WT.mc_id=academic-105485-koreyst) 。 - -[Azure 机器学习](https://azure.microsoft.com/products/machine-learning/?WT.mc_id=academic-105485-koreyst) 是一项云服务,专为数据科学家和机器学习工程师设计,用于管理整个机器学习生命周期(训练、测试、部署和 MLOps 相关的工作)在一个平台上。 机器学习工作室为此服务提供图形用户界面,使用户能够: - -- 在目录中查找感兴趣的基础模型,按任务、许可证或名称进行过滤。 还可以导入尚未包含在目录中的新模型。 -- 查看模型名片(包括详细描述和代码示例,并通过提供示例提示来测试结果),使用示例推理小部件对其进行测试。 - -![Model card](../../images/Llama1.png?WT.mc_id=academic-105485-koreyst) - -- 使用特定工作负载和输入中提供的特定数据集的评估指标来评估模型性能。 - -![Model evaluation](../../images/Llama2.png?WT.mc_id=academic-105485-koreyst) - -- 利用 Azure 机器学习的实验和跟踪功能,根据自定义训练数据微调模型,以提高特定工作负载中的模型性能。 - -![Model fine-tuning](../../images/Llama3.png?WT.mc_id=academic-105485-koreyst) - -- 将原始预训练模型或微调版本模型部署到远程实时推理或批处理端点,以使应用程序能够直接使用。 - -![Model deployment](../../images/Llama4.png?WT.mc_id=academic-105485-koreyst) - -## 提升 LLM 的输出结果准确度 - -我们与 “Our startup” 团队一起探索了不同类型的 LLMs 和云平台(Azure 机器学习),使我们能够比较不同的模型,根据测试数据对其进行评估,提高性能并将其部署在推理端点上。 - -但是他们什么时候应该考虑微调模型而不是使用预先训练的模型呢? 是否有其他方法可以提高模型在特定工作负载上的性能? - -企业可以使用多种方法从 LLMs 获得所需的结果,您可以选择具有不同训练程度的不同类型的模型 - -在生产中部署 LLMs ,具有不同程度的复杂性、成本和质量。 以下是一些不同的方法: - -- **根据上下文的提示工程**。 这个想法是在提示时提供足够的背景信息,以确保获得所需的结果。 - -- **检索增强生成,RAG**。 例如,您的数据可能存在于向量数据库或 Web 端点中,为了确保在提示时包含此数据或其子集,您可以获取相关数据并对用户进行提示。 - -- **微调模型**。 在这里,您根据自己的数据进一步训练模型,这使得模型更加准确并且能够响应您的需求,但可能成本高昂。 - -![LLMs deployment](../../images/Deploy.png?WT.mc_id=academic-105485-koreyst) - -图片来源: [企业部署 LLM 的四种方式| Fiddler AI 博客](https://www.fiddler.ai/blog/four-ways-that-enterprises-deploy-llms?WT.mc_id=academic-105485-koreyst) - -### 通过上下文的提示工程 - -预先训练的 LLMs 在广义自然语言任务上表现得非常好,甚至可以用简短的提示来调用它们,比如要完成的句子或问题——即所谓的“零样本”学习。 - -然而,用户越能通过详细的请求和示例(上下文)来构建他们的查询,就会得到最准确、最接近用户期望的答案。 在这种情况下,如果提示仅包含一个示例,我们讨论“单样本”学习;如果提示包含多个示例,我们讨论“少样本学习”。 - -根据上下文进行快速工程设计是最具成本效益的启动方法。 - -### 检索增强生成 (RAG) - -LLMs 有一个限制,即他们只能使用训练期间使用过的数据来生成答案。 这意味着他们对训练过程后发生的事情一无所知,并且无法访问非公开信息(例如公司数据)。 -这可以通过 RAG 来克服,RAG 是一种考虑提示长度限制的技术,以文档块的形式使用外部数据来增强提示。 矢量数据库工具(例如 [Azure 向量搜索](https://learn.microsoft.com/azure/search/vector-search-overview?WT.mc_id=academic-105485-koreyst))支持此功能,可检索有用的信息来自各种预定义数据源的块并将它们添加到提示上下文中。 - -当企业没有足够的数据、足够的时间或资源来微调 LLMs,但仍希望提高特定工作负载的性能并减少幻觉的风险(即对现实的神秘化或有害的风险)时,此技术非常有用 - -### 微调模型 - -微调是一个利用迁移学习使模型“适应”下游任务或解决特定问题的过程。 与少样本学习和 RAG 不同,它会生成一个新模型,并更新权重和偏差。 它需要一组训练示例,其中包含单个输入(提示)及其关联的输出(完成)。 - -如果出现以下情况,这将是首选方法: - -- **使用微调模型**。 企业希望使用经过微调能力较差的模型(例如嵌入模型)而不是高性能模型,从而获得更具成本效益和快速的解决方案。 - -- **考虑延迟**。 延迟对于特定用例很重要,因此不可能使用很长的提示,或者应该从模型中学习的示例数量不符合提示长度限制。 - -- **保持最新状态**。 企业拥有大量高质量的数据和真实标签,以及随着时间的推移保持这些数据最新所需的资源。 - -### 训练垂直行业模型 - -从头开始培训 LLMs 无疑是最困难、最复杂的方法,需要大量数据、熟练资源和适当的计算能力。 仅在企业具有特定领域的用例和大量以特定领域为中心的数据的情况下才应考虑此选项。 - -## 知识检查 - -提升 LLMs 输出效率最好的方法是什么? - -1. 根据背景提示进行工程设计 -2. RAG -3. 模型微调 - -A:3,如果您有时间和资源以及高质量的数据,微调是保持最新状态的更好选择。 然而,如果您正在寻求改进,但又缺乏时间,那么值得首先考虑 RAG。 - -## 🚀 知识拓展 - -详细了解如何为您的业务 [使用 RAG](https://learn.microsoft.com/azure/search/retrieval-augmented-generation-overview?WT.mc_id=academic-105485-koreyst)。 - -## 继续您的学习旅程 - -想要了解更多关于不同的生成人工智能概念吗? 转至[进阶学习的页面](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) 查找有关本章的其他重要资源。 - -前往第三章,我们将了解如何[负责任地使用生成式 AI 进行应用构建](../../../03-using-generative-ai-responsibly/translations/cn/README.md?WT.mc_id=academic-105485-koreyst)! diff --git a/02-exploring-and-comparing-different-llms/translations/es-mx/README.md b/02-exploring-and-comparing-different-llms/translations/es-mx/README.md deleted file mode 100644 index ca00692fc6..0000000000 --- a/02-exploring-and-comparing-different-llms/translations/es-mx/README.md +++ /dev/null @@ -1,202 +0,0 @@ -# Explorando y comparando diferentes LLM - -[![Explorando y comparando diferentes LLM](../../images/02-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson2-gh?WT.mc_id=academic-105485-koreyst) - -> _Haga click en la imagen de arriba para ver el video de esta lección_ - -En la lección anterior, vimos cómo la IA Generativa está cambiando el panorama tecnológico, cómo funcionan los Modelos de Lenguaje Largo (LLM) y cómo una empresa, como nuestra startup, puede aplicarlos a sus casos de uso y crecer. En este capítulo, buscamos comparar y contrastar diferentes tipos de Modelos de Lenguaje Largo (LLM) para comprender sus ventajas y desventajas. - -El siguiente paso en la trayectoria de nuestra startup es explorar el panorama actual de los LLM y comprender cuáles son adecuados para nuestro caso de uso. - -## Introducción - -Esta lección cubrirá: - -- Diferentes tipos de LLM en el panorama actual. -- Pruebas, iteraciones y comparación de diferentes modelos para su caso de uso en Azure. -- Cómo implementar un LLM. - -## Objetivos de aprendizaje - -Después de completar esta lección, podrá: - -- Seleccionar el modelo adecuado para su caso de uso. -- Comprender cómo probar, iterar y mejorar el rendimiento de su modelo. -- Conocer cómo las empresas implementan los modelos. - -## Comprender los diferentes tipos de LLM - -Los LLM pueden tener múltiples categorizaciones según su arquitectura, datos de entrenamiento y caso de uso. Comprender estas diferencias ayudará a nuestra startup a seleccionar el modelo adecuado para cada escenario y a comprender cómo probar, iterar y mejorar el rendimiento. - -Existen muchos tipos diferentes de modelos LLM; la elección del modelo depende de su uso previsto, sus datos, su presupuesto y otros factores. - -Dependiendo de si desea utilizar los modelos para texto, audio, vídeo, generación de imágenes, etc., podría optar por un tipo de modelo diferente. - -- **Reconocimiento de audio y voz**. Para este propósito, los modelos de tipo Whisper son una excelente opción, ya que son de propósito general y están orientados al reconocimiento de voz. Está entrenado con audio diverso y puede realizar reconocimiento de voz multilingüe. Obtenga más información sobre [modelos de typo Whisper aqui](https://platform.openai.com/docs/models/whisper?WT.mc_id=academic-105485-koreyst). - -- **Generación de imágenes**. Para la generación de imágenes, DALL-E y Midjourney son dos opciones muy conocidas. Azure OpenAI ofrece DALL-E. [Más información sobre DALL-E aquí](https://platform.openai.com/docs/models/dall-e?WT.mc_id=academic-105485-koreyst) y también en el Capítulo 9 de este programa. - -- **Generación de texto**. La mayoría de los modelos se entrenan en generación de texto y existen diversas opciones, desde GPT-3.5 hasta GPT-4. Tienen diferentes precios, siendo GPT-4 el más caro. Vale la pena consultar la [zona de juegos de Azure OpenAI](https://oai.azure.com/portal/playground?WT.mc_id=academic-105485-koreyst) para evaluar qué modelos se adaptan mejor a sus necesidades en términos de capacidad y costo. - -- **Multimodalidad**. Si busca gestionar múltiples tipos de datos de entrada y salida, le recomendamos considerar modelos como [gpt-4 turbo con visión o gpt-4o](https://learn.microsoft.com/azure/ai-services/openai/concepts/models#gpt-4-and-gpt-4-turbo-models?WT.mc_id=academic-105485-koreyst), las últimas versiones de los modelos de OpenAI, que combinan el procesamiento del lenguaje natural con la comprensión visual, lo que permite interacciones a través de interfaces multimodales. - -Seleccionar un modelo implica obtener algunas capacidades básicas, pero esto podría no ser suficiente. A menudo, se tienen datos específicos de la empresa que, de alguna manera, es necesario comunicar al LLM. Existen diferentes opciones para abordar este tema; más información al respecto en las próximas secciones. - -### Modelos Fundamentales versus LLMs - -El término Modelo Fundamental fue [acuñado por investigadores de Stanford] (https://arxiv.org/abs/2108.07258?WT.mc_id=academic-105485-koreyst) y definido como un modelo de IA que sigue ciertos criterios, como: - -- **Se entrenan mediante aprendizaje no supervisado o autosupervisado**, lo que significa que se entrenan con datos multimodales sin etiquetar y no requieren anotación ni etiquetado humano de los datos para su proceso de entrenamiento. -- **Son modelos muy grandes**, basados ​​en redes neuronales muy profundas entrenadas con miles de millones de parámetros. -- **Normalmente están pensados ​​para servir de base para otros modelos**, lo que significa que pueden utilizarse como punto de partida para la construcción de otros modelos, lo cual puede lograrse mediante ajustes finos. - -![Modelos Fundamentales versus LLMs](../../images/FoundationModel.png?WT.mc_id=academic-105485-koreyst) - -Fuente de la imagen: [Guía Esencial de Modelos Fundamentales y Modelos de Lenguaje Grandes | por Babar M Bhatti | Medium -](https://thebabar.medium.com/essential-guide-to-foundation-models-and-large-language-models-27dab58f7404) - -Para aclarar mejor esta distinción, tomemos ChatGPT como ejemplo. Para crear la primera versión de ChatGPT, se utilizó un modelo llamado GPT-3.5 como modelo fundamental. Esto significa que OpenAI utilizó datos específicos del chat para crear una versión optimizada de GPT-3.5, especializada en un buen rendimiento en escenarios conversacionales, como los chatbots. - -![Modelo Fundamental](../../images/Multimodal.png?WT.mc_id=academic-105485-koreyst) - -Fuente de la imagen: [2108.07258.pdf (arxiv.org)](https://arxiv.org/pdf/2108.07258.pdf?WT.mc_id=academic-105485-koreyst) - -### Modelos de código abierto versus modelos propietarios - -Otra forma de clasificar los LLM es si son de código abierto o propietarios. - -Los modelos de código abierto son modelos disponibles para el público general y pueden ser utilizados por cualquier persona. Suelen ser puestos a disposición por la empresa que los creó o por la comunidad investigadora. Estos modelos pueden ser inspeccionados, modificados y personalizados para los diversos casos de uso de los LLM. Sin embargo, no siempre están optimizados para su uso en producción y pueden no ser tan eficientes como los modelos propietarios. Además, la financiación para los modelos de código abierto puede ser limitada y es posible que no se mantengan a largo plazo o que no se actualicen con las últimas investigaciones. Algunos ejemplos de modelos de código abierto populares son [Alpaca](https://crfm.stanford.edu/2023/03/13/alpaca.html?WT.mc_id=academic-105485-koreyst), [Bloom](https://huggingface.co/bigscience/bloom) y [LLaMA](https://llama.meta.com). - -Los modelos propietarios son modelos propiedad de una empresa y no están disponibles públicamente. Estos modelos suelen estar optimizados para su uso en producción. Sin embargo, no se permite su inspección, modificación ni personalización para diferentes casos de uso. Además, no siempre son gratuitos y pueden requerir una suscripción o pago para su uso. Asimismo, los usuarios no tienen control sobre los datos utilizados para entrenar el modelo, por lo que deben confiar al propietario del modelo la responsabilidad de garantizar el compromiso con la privacidad de los datos y el uso responsable de la IA. Algunos ejemplos de modelos propietarios populares incluyen [modelos OpenAI](https://platform.openai.com/docs/models/overview?WT.mc_id=academic-105485-koreyst), [Google Bard](https://sapling.ai/llm/bard?WT.mc_id=academic-105485-koreyst) o [Claude 2](https://www.anthropic.com/index/claude-2?WT.mc_id=academic-105485-koreyst). - -### Incrustaciones versus Generación de imágenes versus Generación de texto y código - -Los LLM también se pueden clasificar por el resultado que generan. - -Las incrustaciones son un conjunto de modelos que pueden convertir texto a una forma numérica, denominada incrustación, que es una representación numérica del texto de entrada. Las incrustaciones facilitan a las máquinas la comprensión de las relaciones entre palabras u oraciones y pueden ser utilizadas como entrada por otros modelos, como modelos de clasificación o modelos de agrupamiento, que ofrecen un mejor rendimiento con datos numéricos. Los modelos de incrustación se utilizan a menudo para el aprendizaje por transferencia, donde se construye un modelo para una tarea sustituta para la que existe una gran cantidad de datos, y luego las ponderaciones del modelo (incrustaciones) se reutilizan para otras tareas posteriores. Un ejemplo de esta categoría son las incrustaciones de OpenAI (https://platform.openai.com/docs/models/embeddings?WT.mc_id=academic-105485-koreyst). - -![Incrustación](../../images/Embedding.png?WT.mc_id=academic-105485-koreyst) - -Los modelos de generación de imágenes son modelos que generan imágenes. Estos modelos se utilizan a menudo para la edición, síntesis y traducción de imágenes. Suelen entrenarse con grandes conjuntos de datos, como [LAION-5B](https://laion.ai/blog/laion-5b/?WT.mc_id=academic-105485-koreyst), y pueden utilizarse para generar nuevas imágenes o editar imágenes existentes con técnicas de relleno de imagen, superresolución y colorización. Algunos ejemplos son [DALL-E-3](https://openai.com/dall-e-3?WT.mc_id=academic-105485-koreyst) y [modelos de difusión estable](https://github.com/Stability-AI/StableDiffusion?WT.mc_id=academic-105485-koreyst). - -![Generación de imágenes](../../images/Image.png?WT.mc_id=academic-105485-koreyst) - -Los modelos de generación de texto y código generan texto o código. Estos modelos se utilizan a menudo para resumir textos, traducirlos y responder preguntas. Los modelos de generación de texto suelen entrenarse con grandes conjuntos de datos de texto, como [BookCorpus](https://www.cv-foundation.org/openaccess/content_iccv_2015/html/Zhu_Aligning_Books_and_ICCV_2015_paper.html?WT.mc_id=academic-105485-koreyst), y pueden utilizarse para generar texto nuevo o responder preguntas. Los modelos de generación de código, como [CodeParrot](https://huggingface.co/codeparrot?WT.mc_id=academic-105485-koreyst), suelen entrenarse con grandes conjuntos de datos de código, como GitHub, y pueden usarse para generar código nuevo o corregir errores en el código existente. - -![Generación de texto y código](../../images/Text.png?WT.mc_id=academic-105485-koreyst) - -### Codificador-Decodificador versus Solo Decodificador - -Para hablar sobre los diferentes tipos de arquitecturas de los LLM, usemos una analogía. - -Imagina que tu gerente te asigna la tarea de escribir un cuestionario para los estudiantes. Tienes dos colegas: uno supervisa la creación del contenido y el otro la revisión. - -El creador de contenido es como un modelo solo decodificador: puede analizar el tema y ver lo que ya escribiste, y luego puede crear un curso basado en eso. Son muy buenos escribiendo contenido atractivo e informativo, pero no comprenden bien el tema ni los objetivos de aprendizaje. Algunos ejemplos de modelos decodificadores son los modelos de la familia GPT, como GPT-3. - -El revisor es como un modelo solo de codificador: revisa el curso escrito y las respuestas, observa la relación entre ellos y comprende el contexto, pero no es bueno generando contenido. Un ejemplo de modelo solo de codificador sería BERT. - -Imaginemos que también podemos contar con alguien que cree y revise el cuestionario. Este es un modelo de codificador-decodificador. Algunos ejemplos serían BART y T5. - -### Servicio versus Modelo - -Ahora, hablemos de la diferencia entre un servicio y un modelo. Un servicio es un producto ofrecido por un proveedor de servicios en la nube y suele ser una combinación de modelos, datos y otros componentes. Un modelo es el componente central de un servicio y suele ser un modelo base, como un LLM. - -Los servicios suelen estar optimizados para producción y son más fáciles de usar que los modelos, gracias a una interfaz gráfica de usuario. Sin embargo, los servicios no siempre son gratuitos y pueden requerir una suscripción o pago para su uso, a cambio de aprovechar los equipos y recursos del propietario del servicio, optimizar los gastos y escalar fácilmente. Un ejemplo de servicio es [Azure OpenAI Service](https://learn.microsoft.com/azure/ai-services/openai/overview?WT.mc_id=academic-105485-koreyst), que ofrece un plan de pago por uso, lo que significa que los usuarios pagan proporcionalmente al uso del servicio. Además, Azure OpenAI Service ofrece seguridad de nivel empresarial y un marco de IA responsable, además de las capacidades de los modelos. - -Los modelos son simplemente la red neuronal, con sus parámetros, ponderaciones y demás. Sin embargo, para que las empresas puedan operar localmente, se necesitaría comprar equipos, construir una estructura para escalar y adquirir una licencia o usar un modelo de código abierto. Un modelo como LLaMA está disponible, pero requiere potencia computacional para ejecutarlo. - -## Cómo probar e iterar con diferentes modelos para comprender el rendimiento en Azure - -Una vez que nuestro equipo haya explorado el panorama actual de los LLM e identificado algunos candidatos idóneos para sus escenarios, el siguiente paso es probarlos con sus datos y su carga de trabajo. Este es un proceso iterativo, realizado mediante experimentos y mediciones. -La mayoría de los modelos mencionados en párrafos anteriores (modelos de OpenAI, modelos de código abierto como Llama2 y transformadores Hugging Face) están disponibles en el [Catálogo de Modelos](https://learn.microsoft.com/azure/ai-studio/how-to/model-catalog-overview?WT.mc_id=academic-105485-koreyst) de [Azure AI Studio](https://ai.azure.com/?WT.mc_id=academic-105485-koreyst). - -[Azure AI Studio](https://learn.microsoft.com/azure/ai-studio/what-is-ai-studio?WT.mc_id=academic-105485-koreyst) es una plataforma en la nube diseñada para que los desarrolladores creen aplicaciones de IA generativa y gestionen todo el ciclo de vida del desarrollo, desde la experimentación hasta la evaluación, combinando todos los servicios de IA de Azure en un único centro con una práctica interfaz gráfica de usuario. El Catálogo de Modelos de Azure AI Studio permite al usuario: - -- Encontrar el Modelo Fundacional de interés en el catálogo, ya sea propietario o de código abierto, filtrando por tarea, licencia o nombre. Para facilitar la búsqueda, los modelos se organizan en colecciones, como la colección Azure OpenAI, la colección Hugging Face y muchas más. - -![Catálogo de modelos](../../images/AzureAIStudioModelCatalog.png?WT.mc_id=academic-105485-koreyst) - -- Revise la tarjeta del modelo, que incluye una descripción detallada del uso previsto, los datos de entrenamiento, ejemplos de código y los resultados de la evaluación en la biblioteca de evaluaciones internas. - -¡[Tarjeta del modelo](../../images/ModelCard.png?WT.mc_id=academic-105485-koreyst) - -Compare los puntos de referencia de los modelos y conjuntos de datos disponibles en el sector para evaluar cuál se adapta mejor al escenario empresarial mediante el panel [Puntos de referencia del modelo](https://learn.microsoft.com/azure/ai-studio/how-to/model-benchmarks?WT.mc_id=academic-105485-koreyst). - -![Puntos de referencia del modelo](../../images/ModelBenchmarks.png?WT.mc_id=academic-105485-koreyst) - -- Ajuste el modelo con datos de entrenamiento personalizados para mejorar su rendimiento en una carga de trabajo específica, aprovechando las capacidades de experimentación y seguimiento de Azure AI Studio. - -Ajuste del modelo - -Implemente el modelo original preentrenado o la versión optimizada en un punto de conexión remoto de inferencia en tiempo real (computación administrada) o API sin servidor (pago por uso) para que las aplicaciones puedan utilizarlo. - -![Implementación del modelo](../../images/ModelDeploy.png?WT.mc_id=academic-105485-koreyst) - -> [!NOTA] -> No todos los modelos del catálogo están disponibles actualmente para ajustes o implementación con pago por uso. Consulte la ficha del modelo para obtener más información sobre sus capacidades y limitaciones. - -## Mejorando los resultados del LLM - -Con nuestro equipo de startups, hemos explorado diferentes tipos de LLM y una plataforma en la nube (Azure Machine Learning) que nos permite comparar diferentes modelos, evaluarlos con datos de prueba, mejorar el rendimiento e implementarlos en puntos finales de inferencia. - -Pero cuándo deberían considerar ajustar un modelo en lugar de usar uno preentrenado? Existen otros enfoques para mejorar el rendimiento del modelo en cargas de trabajo específicas? - -Existen varios enfoques que una empresa puede utilizar para obtener los resultados que necesita de un LLM. Se pueden seleccionar diferentes tipos de modelos con distintos grados de entrenamiento al implementar un LLM en producción, con distintos niveles de complejidad, coste y calidad. A continuación, se presentan algunos enfoques: - -- **Ingeniería de indicaciones con contexto**. La idea es proporcionar suficiente contexto al solicitar para garantizar que se obtengan las respuestas necesarias. - -- **Generación Aumentada de Recuperación (RAG)**. Sus datos podrían estar en una base de datos o un punto final web, por ejemplo. Para garantizar que estos datos, o un subconjunto de ellos, se incluyan al momento de la solicitud, puede obtener los datos relevantes e integrarlos en la solicitud del usuario. - -- **Modelo optimizado**. En este caso, entrenó el modelo con sus propios datos, lo que lo hizo más preciso y adaptable a sus necesidades, aunque podría resultar costoso. - -¡Implementación de LLM! - -Fuente de la imagen: [Cuatro maneras en que las empresas implementan LLM | Blog de Fiddler AI](https://www.fiddler.ai/blog/four-ways-that-enterprises-deploy-llms?WT.mc_id=academic-105485-koreyst) - -### Ingeniería de Propuestas con Contexto - -Los LLM preentrenados funcionan muy bien en tareas de lenguaje natural generalizadas, incluso al solicitarles una proposición breve, como una oración para completar o una pregunta: el llamado aprendizaje "de disparo cero". - -Sin embargo, cuanto más pueda el usuario estructurar su consulta con una solicitud detallada y ejemplos (el contexto), más precisa y cercana a sus expectativas será la respuesta. En este caso, hablamos de aprendizaje "de disparo único" si la proposición incluye solo un ejemplo y de "aprendizaje de disparos múltiples" si incluye varios. La ingeniería de propuestas con contexto es el enfoque más rentable para comenzar. - -### Generación Aumentada de Recuperación (RAG) - -Los LLM tienen la limitación de que solo pueden usar los datos utilizados durante su entrenamiento para generar una respuesta. Esto significa que desconocen los hechos ocurridos después del proceso de entrenamiento y no pueden acceder a información no pública (como datos de la empresa). -Esto se puede solucionar mediante RAG, una técnica que complementa la solicitud con datos externos en forma de fragmentos de documentos, teniendo en cuenta los límites de longitud de la solicitud. Esto es posible gracias a herramientas de bases de datos vectoriales (como [Azure Vector Search](https://learn.microsoft.com/azure/search/vector-search-overview?WT.mc_id=academic-105485-koreyst)), que recuperan los fragmentos útiles de diversas fuentes de datos predefinidas y los añaden al contexto de la solicitud. - -Esta técnica es muy útil cuando una empresa no dispone de suficientes datos, tiempo ni recursos para perfeccionar un LLM, pero aun así desea mejorar el rendimiento en una carga de trabajo específica y reducir el riesgo de falsificaciones, es decir, la tergiversación de la realidad o el contenido dañino. - -### Modelo perfeccionado - -El ajuste fino es un proceso que aprovecha el aprendizaje por transferencia para adaptar el modelo a una tarea posterior o para resolver un problema específico. A diferencia del aprendizaje de pocos disparos y el RAG, genera un nuevo modelo con ponderaciones y sesgos actualizados. Requiere un conjunto de ejemplos de entrenamiento que consta de una única entrada (la indicación) y su salida asociada (la finalización). -Este sería el enfoque preferido si: - -- **Uso de modelos ajustados**. Una empresa prefiere utilizar modelos ajustados con menor capacidad (como modelos de incrustación) en lugar de modelos de alto rendimiento, lo que resulta en una solución más rentable y rápida. - -- **Consideración de la latencia**. La latencia es importante para un caso de uso específico, por lo que no es posible utilizar indicaciones muy largas o si el número de ejemplos que se deben aprender del modelo no se ajusta al límite de longitud de la indicación. - -- **Mantenerse actualizado**. Una empresa cuenta con una gran cantidad de datos de alta calidad y etiquetas de datos reales, así como con los recursos necesarios para mantener estos datos actualizados a lo largo del tiempo. - -### Modelo entrenado - -Formar un LLM desde cero es, sin duda, el enfoque más difícil y complejo de adoptar, ya que requiere cantidades masivas de datos, recursos especializados y la capacidad computacional adecuada. Esta opción solo debe considerarse en un escenario donde una empresa tenga un caso de uso específico del dominio y una gran cantidad de datos centrados en el mismo. - -## Comprobación de conocimientos - -Cuál podría ser un buen enfoque para mejorar los resultados de la finalización del LLM? - -1. Ingeniería rápida con contexto -1. RAG -1. Modelo optimizado - -R:3, Si dispone del tiempo, los recursos y datos de alta calidad, optimizar es la mejor opción para mantenerse al día. Sin embargo, si busca mejorar y no dispone de tiempo, vale la pena considerar primero RAG. - -## 🚀 Desafío - -Lea más sobre cómo puede [usar RAG](https://learn.microsoft.com/azure/search/retrieval-augmented-generation-overview?WT.mc_id=academic-105485-koreyst) para su negocio. - -## ¡Buen trabajo! ¡Continúa aprendiendo! - -Después de completar esta lección, consulta nuestra [colección de aprendizaje de IA generativa](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) para seguir mejorando tus conocimientos sobre IA generativa. - -Dirígete a la Lección 3, donde veremos cómo [construir con IA generativa de forma responsable](../../../03-using-generative-ai-responsibly/README.md?WT.mc_id=academic-105485-koreyst). \ No newline at end of file diff --git a/02-exploring-and-comparing-different-llms/translations/ja-jp/README.md b/02-exploring-and-comparing-different-llms/translations/ja-jp/README.md deleted file mode 100644 index cce4c7cc0c..0000000000 --- a/02-exploring-and-comparing-different-llms/translations/ja-jp/README.md +++ /dev/null @@ -1,199 +0,0 @@ -# さまざまな LLM の調査と比較 - -[![Exploring and comparing different LLMs](../../images/02-lesson-banner.png?WT.mc_id=academic-105485-yoterada)](https://aka.ms/gen-ai-lesson2-gh?WT.mc_id=academic-105485-koreyst) - -> _(上記の画像をクリックすると、レッスン・ビデオを表示します)_ - -前回のレッスンで、生成 AI がどのようにして進化し、大規模言語モデル(LLM)がどのように機能するのか、そしてスタートアップがそれらを自分たちの目的に対して、どのように適用し成長できるかを見てきました。この章では、様々な大規模言語モデル(LLM)を比較し、それぞれの利点と欠点を理解していきます。 - -スタートアップは、大規模言語モデル(LLM)の最新状況を調査し、自社のニーズに適したモデルが何かを検討する段階に移りました。 - -## はじめに - -このレッスンでは、下記の内容について説明します。 - -- いま存在する様々な種類の LLM(大規模言語モデル)について学ぶ -- Azure で用途に応じて異なる AI モデルを選択しテスト、反復作業、及び比較を行う -- LLM のデプロイ方法について学ぶ - -## 学習目標 - -このレッスンを修了すると、下記を理解できます: - -- ユースケースに適したモデルを選択する -- モデルのパフォーマンスをテストし、反復し、そして改善する方法を理解する -- 企業がどのようにモデルをデプロイするかを知る - -## 大規模言語モデル(LLM)の様々な種類の理解 - -大規模言語モデル(LLM)は、そのアーキテクチャ、トレーニングデータ、用途に応じて、様々なカテゴリに分類できます。こうした各モデルの把握は、スタートアップがシナリオに応じて最適なモデルを選択し、パフォーマンスのテストを行い、反復しながら改善するのに役立ちます。 - -LLM モデルには、さまざまな種類があり、どのモデルを選択するかは、それらを使用する目的、扱うデータ、ご利用可能な金額などによって異なります。 - -選択するモデルは、テキスト、オーディオ、ビデオ、画像の生成など、各用途に応じてそれぞれ異なる種類のモデルを選択します。 - -- **オーディオおよび音声認識**:この用途には、音声認識として汎用性のある Whisper というモデルが最適です。このモデルは、様々なオーディオ・データでトレーニングされており、多言語にも対応した音声認識ができます。[Whisper のモデルについての詳細はこちら](https://platform.openai.com/docs/models/whisper?WT.mc_id=academic-105485-yoterada). - -- **画像生成**:画像生成の選択肢としては、DALL-E と Midjourney が非常に有名です。Azure OpenAI 上で DALL-E のモデルが利用可能です。[DALL-E についての詳細はこちら](https://platform.openai.com/docs/models/dall-e?WT.mc_id=academic-105485-yoterada)をご覧ください。このカリキュラムの第 9 章でも解説します。 - -- **テキスト生成**:多くのモデルがテキスト生成用にトレーニングされており、GPT-3.5 から GPT-4 に至るまで、多種多様な選択肢があります。それぞれ利用する際のコストは異なり、GPT-4 が最も高価です。機能とコストの観点から、ニーズに最も適したモデルを選択するために、[Azure OpenAI プレイグラウンド](https://oai.azure.com/portal/playground?WT.mc_id=academic-105485-yoterada)をご確認ください。 - -モデルを選択すると、基本的な機能を手に入れ、モデルを利用できるようになっていますが、それだけでは不十分です。通常、会社固有のデータを何らかの方法で LLM に伝えなければならない場合もあります。その方法はいくつかの選択肢がありますが、それについては後続のセクションで詳しく説明します。 - -### ファウンデーション・モデルと LLM の比較 - -「ファウンデーション・モデル」という用語はスタンフォード大学の研究者たちが提唱し、以下のような基準に従う AI モデルとして定義しています。 - -- **教師なし学習、または自己教師あり学習でトレーニング**:ラベルのないマルチモーダル・データを用いてトレーニングし、トレーニング・プロセス中、人間によるデータの注釈やラベル付けは不要です -- **非常に大規模なモデル**:数十億のパラメーターを用いてトレーニングされたディープ・ニューラル・ネットワークに基づいています -- **通常、他のモデルの「基盤」として使用**:ファイン・チューニングを行い、他のモデルを構築する際の基盤として使用できます - -![ファウンデーション・モデルと LLM](../../images/FoundationModel.png?WT.mc_id=academic-105485-yoterada) - -画像出展: [基盤モデルと大規模言語モデルの効果的なガイド | Babar M Bhatti 著 | Medium](https://thebabar.medium.com/essential-guide-to-foundation-models-and-large-language-models-27dab58f7404) - -この違いをさらに明確にするために、ChatGPT を例に挙げてみましょう。ChatGPT の最初のバージョンを作る際 GPT-3.5 というモデルをファウンデーション・モデルとして使いました。つまり、OpenAI は、チャットボットのような会話シナリオで高いパフォーマンスを発揮するよう、チャットに特化したデータを用いて GPT-3.5 のチューニング版を作成したのです。 - -![Foundation Model](../../images/Multimodal.png?WT.mc_id=academic-105485-yoterada) - -画像出展: [2108.07258.pdf (arxiv.org)](https://arxiv.org/pdf/2108.07258.pdf?WT.mc_id=academic-105485-yoterada) - -### オープンソース・モデルとプロプライエタリ・モデル - -大規模言語モデル(LLM)を分類する別の方法として、それがオープンソースなのか、もしくはプロプライエタリな物なのか、という観点もあります。 - -オープンソース・モデルは、一般に公開され、誰でも利用できるモデルです。これらは多くの場合、そのモデルを開発した企業や研究コミュニティによって提供されます。これらのモデルは、LLM の様々な用途に合わせて検証、変更、カスタマイズの許可がされています。しかし、常に本番環境での利用に最適化されているわけではなく、プロプライエタリモデルほど高いパフォーマンスを発揮しない場合もあります。さらに、オープンソース・モデルの資金調達は限られており、長期的に継続できない可能性や、最新の研究に基づいて更新されていない可能性もあります。[Alpaca](https://crfm.stanford.edu/2023/03/13/alpaca.html?WT.mc_id=academic-105485-yoterada)、[Bloom](https://huggingface.co/bigscience/bloom)、[LLaMA](https://llama.meta.com) などが人気のオープンソース・モデルの例です。 - -プロプライエタリ・モデルは、企業が所有し一般には公開されていないモデルです。これらのモデルは、通常本番環境での利用に最適化されています。しかし異なるユースケースに対して、検証、変更、カスタマイズは許可されていません。また、常に無料で利用できるわけではなく、利用するためには、サブスクリプション等による支払いが必要な場合もあります。さらに、利用者はモデルをトレーニングする際に使用するデータをコントロールできず、データのプライバシーや、責任ある AI の原則に基づく使用をモデル・プロバイダが保証しているのを信用しなければなりません。[OpenAI のモデル](https://platform.openai.com/docs/models/overview?WT.mc_id=academic-105485-yoterada)、[Google Bard](https://sapling.ai/llm/bard?WT.mc_id=academic-105485-yoterada)、[Claude 2](https://www.anthropic.com/index/claude-2?WT.mc_id=academic-105485-yoterada) などが人気のプロプライエタリ・モデルです。 - -### 埋め込み (Embedding) と画像生成とテキスト・コード生成 - -大規模言語モデル(LLM) は出力の種類によっても分類できます。 - -埋め込み (Embedding) は、テキストを、「埋め込みと」呼ぶ数値形式に変換する AI モデルです。言い換えるならば、埋め込みは入力されたテキストに対する数値表現です。埋め込みによって、機械が単語や文の関係を理解しやすくなり、分類モデルや、数値データでパフォーマンスが向上するクラスタリング・モデルなど、他のモデルの入力として利用できます。埋め込みモデルは、たくさんのデータがある代理タスク用にモデルが作成され、モデルの重み(埋め込み)を、他の下流タスクで再利用する転移学習によく使用されます。このカテゴリーの例としては、[OpenAI Embeddings](https://platform.openai.com/docs/models/embeddings?WT.mc_id=academic-105485-yoterada) モデルがあります。 - -![Embedding](../../images/Embedding.png?WT.mc_id=academic-105485-yoterada) - -画像生成モデルは、画像を生成するモデルです。これらのモデルは、画像編集、画像合成、画像変換で頻繁に利用されます。画像生成モデルは、[LAION-5B](https://laion.ai/blog/laion-5b/?WT.mc_id=academic-105485-yoterada) などの大規模な画像データセットでトレーニングするのが多く、新しい画像を生成したり、画像修復、高解像度化、色付け技術を用いて既存の画像を編集する際に利用できます。[DALL-E-3](https://openai.com/dall-e-3?WT.mc_id=academic-105485-yoterada) や [Stable Diffusion models](https://github.com/Stability-AI/StableDiffusion?WT.mc_id=academic-105485-yoterada) といったモデルがあります。 - -![Image generation](../../images/Image.png?WT.mc_id=academic-105485-yoterada) - -テキスト生成モデルとコード生成モデルは、テキストやコードを生成するためのモデルです。これらのモデルは、テキストの要約、翻訳、質疑応答などによく利用されます。テキスト生成モデルは、[BookCorpus](https://www.cv-foundation.org/openaccess/content_iccv_2015/html/Zhu_Aligning_Books_and_ICCV_2015_paper.html?WT.mc_id=academic-105485-yoterada) などの大規模なテキストデータセットでトレーニングされ、新しいテキストを生成したり、質問に答えたりするのに使われます。[CodeParrot](https://huggingface.co/codeparrot?WT.mc_id=academic-105485-yoterada) のようなコード生成モデルは、GitHub など大量のソースコード・データでトレーニングされ、新しいコードを生成したり、既存コードのバグ修正などで使われます。 -![Text and code generation](../../images/Text.png?WT.mc_id=academic-105485-yoterada) - -### 「エンコーダー・デコーダー」 と 「デコーダーのみ」 のモデル - -大規模言語モデル (LLM) のアーキテクチャの種類の違いについて解説するため、下記の例え話しを使います。 - -上司から、学生用のクイズを作成する仕事を任されたのを想像してください。あなたには 2 人の同僚がいて、1 人はコンテンツの作成を担当し、もう 1 人はそれをレビューする役割を担います。 - -コンテンツを作成する人は「デコーダーのみ」のモデルに似ています。コンテンツ作成者は、トピックを見て、既に書いた内容を参考に、それに基づいてコンテンツを作成します。コンテンツ作成者は、魅力的で情報豊かなコンテンツを作成するのが得意ですが、トピックや学習目標を理解するのは得意ではありません。「デコーダーのみ」のモデルの例には、GPT-3 などの GPT ファミリーのモデルがあります。 - -一方で、レビュー担当者は「エンコーダーのみ」のモデルに似ています。レビュー担当者は書かれた内容と回答を見て、それらの関係を把握し、文脈を理解しますが、コンテンツを作成するのは得意ではありません。「エンコーダーのみ」のモデルの例には、BERT があります。 - -クイズを作成し、それをレビューする同一人物がいるのを想像してみてください。これが「エンコーダー・デコーダー」モデルです。BART や T5 などが例として挙げられます。 - -### サービスとモデル - -サービスとモデルの違いについて説明します。サービスはクラウド・サービス・プロバイダーが提供する製品で、モデル、データ、その他のコンポーネントを組み合わせたものです。モデルはサービスの核となる部分で、大規模言語モデル (LLM) のようなファウンデーション・モデルが一般的です。 - -サービスは、本番環境での利用に最適化されており、グラフィカル・ユーザー・インターフェースを通じて、直接モデルを操作するのに比べ扱いやすくなっています。しかしサービスは、常に無料で利用できるわけではなく、サービス提供者の機器やリソースを活用する代わりに、サブスクリプション等による支払いが必要な場合があります。これにより、費用を最適化し、簡単にスケールアップできます。サービスの例としては、使用量に応じて料金が発生する [Azure OpenAI Service](https://learn.microsoft.com/azure/ai-services/openai/overview?WT.mc_id=academic-105485-yoterada) があります。また、Azure OpenAI サービスは、モデルの能力に加え、エンタープライズグレードのセキュリティと責任ある AI のフレームワークも提供しています。 - -モデルは、パラメーターや重みなどを含むニューラルネットワークそのものです。企業はローカルでの運用も可能ですが、そのためには機器の購入、スケールアップのための環境構築、ライセンスの購入、またはオープンソース・モデルの使用が必要になります。LLaMA のようなモデルは利用可能ですが、モデルを実行するためには計算資源が必要です。 - -## Azure でパフォーマンスを理解するために異なるモデルでテストと反復処理を行う方法 - -現在の LLM の状況を調査し、シナリオに適したモデルの候補を見つけたら、次に企業の実データと負荷試験でそれらをテストする必要があります。これは実験と検証を通じて行われる反復的なプロセスです。前の段落で触れたモデル(OpenAI モデル、Llama2 のようなオープンソースモデル、Hugging Face のトランスフォーマー)のほとんどは、[Azure Machine Learning Studio](https://ml.azure.com/?WT.mc_id=academic-105485-yoterada) の[ファウンデーション・モデル・カタログ](https://learn.microsoft.com/azure/machine-learning/concept-foundation-models?WT.mc_id=academic-105485-yoterada)で利用可能です。 - -[Azure Machine Learning](https://azure.microsoft.com/products/machine-learning/?WT.mc_id=academic-105485-yoterada) は、データ・サイエンティストと機械学習エンジニアが ML ライフサイクル全体(トレーニング、テスト、デプロイ、MLOps の管理)を一つのプラットフォームで管理するために設計されたクラウド・サービスです。Machine Learning Studio はグラフィカル・ユーザー・インターフェースを提供し、利用者は下記の操作を行えます: - -- カタログから興味のあるファウンデーション・モデルを探し、タスク、ライセンス、名前でフィルタリングできます。カタログにまだ含まれていない新しいモデルもインポートできます。 -- モデル・カードを確認して、詳細な説明とコードサンプルを見て、サンプル推論ウィジェットを使ってテストします。これは、サンプルのプロンプトを入力して回答結果を試すために利用します。 - -![Model card](../../images/Llama1.png?WT.mc_id=academic-105485-yoterada) - -- 特定の負荷試験と、入力した特定のデータセットに関する客観的な評価指標を用いて、モデルのパフォーマンスを評価します。 - -![Model evaluation](../../images/Llama2.png?WT.mc_id=academic-105485-yoterada) - -- Azure Machine Learning の実験と追跡機能を活用して、カスタム・トレーニングデータでモデルをファイン・チューニングし、特定の負荷試験におけるモデルのパフォーマンスを向上させます。 - -![Model fine-tuning](../../images/Llama3.png?WT.mc_id=academic-105485-yoterada) - -- 元の事前トレーニング済みモデル、もしくはファイン・チューニングしたバージョンをリモートのリアルタイム推論、もしくはバッチ・エンドポイントにデプロイし、アプリケーションから利用できるようにします。 - -![Model deployment](../../images/Llama4.png?WT.mc_id=academic-105485-yoterada) - -## 大規模言語モデル (LLM) の出力結果を改善する - -スタートアップ・チームは、さまざまな種類の大規模言語モデル (LLM) とクラウド・プラットフォームのサービス(Azure Machine Learning)を理解し、異なるモデルを比較し、テストデータで評価し、パフォーマンスを向上させ、推論エンドポイントにデプロイする方法を検討しました。 - -しかし、事前トレーニングされたモデルを使用するのではなく、モデルをファイン・チューニングするのを検討すべきタイミングはいつでしょうか?特定の負荷試験でモデルのパフォーマンスを向上させる他のアプローチはあるのでしょうか? - -企業が大規模言語モデル(LLM)を利用して、期待する結果を得るためには、トレーニング・レベルの異なる様々な手法からも選択できます。 - -異なる実装方法(容易 → 困難)、コスト(低額 → 高額)、品質(低 → 高) から実装方法を検討し、LLM を本番環境にデプロイできます。以下に、いくつかの異なるアプローチを紹介します。 - -- **コンテキストを用いたプロンプトエンジニアリング**:プロンプトを記述する際に十分なコンテキストを提供し、必要な回答を得るのが狙いです。 - -- **Retrieval Augmented Generation(RAG)**:例えば、データがデータ・ベースや Web 上に存在する場合、関連データを取得し、プロンプトの記述時に、それらデータの一部をプロンプトに含めます。 - -- **ファイン・チューニングしたモデル**:自分のデータを利用してモデルをさらにトレーニングし、モデルをより正確に、そしてニーズに応じた形にします。ただし、コストがかかる可能性があります。 - -![LLMs deployment](../../images/Deploy.png?WT.mc_id=academic-105485-yoterada) - -画像出展:: [Four Ways that Enterprises Deploy LLMs | Fiddler AI Blog](https://www.fiddler.ai/blog/four-ways-that-enterprises-deploy-llms?WT.mc_id=academic-105485-yoterada) - -### コンテキストを用いたプロンプトエンジニアリング - -事前学習済みの大規模言語モデル(LLM)は、一般的な自然言語タスクとして、例えば、文の作成や質問などの処理をリクエストする際、短いプロンプトの呼び出しだけで、とても良い結果を出力します。これを「ゼロショット」学習と呼びます。 - -しかし、詳細なリクエストや具体例を用いて問い合わせ内容を記述すると、つまり追加のコンテキストを提供すると、回答はより正確で利用者の期待値に近い内容になります。この場合、プロンプトに一つの例が含まれている場合は「ワンショット」学習、複数の例が含まれている場合は「フュー・ショット」学習と言います。コンテキストを用いたプロンプト・エンジニアリングは、一番最初に実施すべき改善点で、そして最もコスト効率の高いアプローチです。 - -### Retrieval Augmented Generation(RAG) - -LLM は、モデルのトレーニング中に使用したデータだけを使って回答を作るという制約があります。つまり、トレーニング・プロセス後に発生した事実については何も分からず、非公開情報 (企業データなど) も利用できません。 - -しかし、上記の制約は RAG と呼ぶ手法で対応できます。RAG は、プロンプトの長さ制限を考慮しつつ、外部データ(ドキュメントの一部)をプロンプト内に含めて問い合わせを行う手法です。 -RAG は ベクトルデータベース([Azure AI Search](https://learn.microsoft.com/azure/search/vector-search-overview?WT.mc_id=academic-105485-yoterada) など)でサポートされており、さまざまな定義済みのデータ・ソースから有用なドキュメントの一部を取得し、プロンプトのコンテキスト(文脈)に含めて、より正確な回答が得られるようになります。 - -この技術は、LLM のファイン・チューニングが困難(十分なデータ、時間、リソースがない)な企業にとって非常に有用です。 -そして特定の負荷試験におけるパフォーマンスを向上させたい場合や、回答の捏造リスク、つまり現実の歪曲や、有害なコンテンツのリスクを減らしたい場合に非常に有効です。 - -### ファイン・チューニングしたモデルの利用 - -ファイン・チューニングは、転移学習を活用してモデルを下流タスクに「適応」させたり、特定の問題を解決するプロセスです。上記のフュー・ショット学習や、RAG とは異なり、更新した重みとバイアスを持つ新しいモデルを生成します。これには、入力(プロンプト)とそれに関連する出力(Completion)から構成する大量のトレーニング・データが必要です。このアプローチは、下記のような場合に有効です: - -- **ファイン・チューニングしたモデルを使用する場合**:企業が高性能なモデルではなく、ファイン・チューニングした能力の低いモデル(埋め込みモデルなど)を使用し、よりコスト効率を高く、迅速なソリューション提供したいと考えている場合 - -- **レイテンシーを考慮する場合**:特定の用途でレイテンシーが重要で、とても長いプロンプトを使用できない、またはモデルから学習するサンプル数がプロンプトの長さ制限に合わないような場合 - -- **最新の状態を維持する場合**:企業が高品質のデータと正確なラベルを多く持ち、これらのデータを時間をかけて最新の状態に保つためのリソースを持っている場合 - -### トレーニング済みモデル - -LLM をゼロからトレーニングするのは、間違いなく最も困難で最も複雑なアプローチです。膨大なデータ、熟練したリソース、適切な計算能力が必要です。このオプションは、ビジネスがドメイン固有のユースケースと大量のドメイン中心のデータを持っている場合にのみ検討すべきです。 - -## 知識チェック - -LLM からの出力結果を改善するための良いアプローチは何でしょうか? - -1. コンテキストを用いたプロンプトエンジニアリング -2. RAG -3. ファイン・チューニングしたモデル - -A: 3、時間とリソース、高品質のデータがある場合 ファイン・チューニングは最新の状態を維持するためのより良い選択肢です。しかし、改善を行うために時間がない場合は、まず RAG をご検討ください。 - -> [!TIP] -> 訳者追記: -> 訳者的には 1,2,3 の順番で検討するのが良いと思います。ケース・バイ・ケースですが、ファイン・チューニングは、時間とリソースがある場合に検討するのが良いと思います。 - -## 🚀 チャレンジ - -ビジネスで RAG を活用する方法についてもっと学びたい方は、[こちら](https://learn.microsoft.com/azure/search/retrieval-augmented-generation-overview?WT.mc_id=academic-105485-yoterada)をご覧ください。 - -## お疲れ様でした! 次のレッスンを続ける - -このレッスン終了後、[生成 AI 学習コレクション](https://aka.ms/genai-collection?WT.mc_id=academic-105485-yoterada)をチェックして、生成 AI の知識をさらに深めましょう。 - -次のレッスン 3 では、[責任ある生成 AI の利用](../../../03-using-generative-ai-responsibly/translations/ja-jp/README.md?WT.mc_id=academic-105485-yoterada)について学びます! diff --git a/02-exploring-and-comparing-different-llms/translations/ko/README.md b/02-exploring-and-comparing-different-llms/translations/ko/README.md deleted file mode 100644 index 8b5b5fa052..0000000000 --- a/02-exploring-and-comparing-different-llms/translations/ko/README.md +++ /dev/null @@ -1,192 +0,0 @@ -# 다양한 LLM 탐색과 비교 - -[![Exploring and comparing different LLMs](../../images/02-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson2-gh?WT.mc_id=academic-105485-koreyst) - -> _위의 이미지를 클릭하여 이 레슨의 비디오를 시청하세요._ - -이전 레슨에서 우리는 생성형 AI가 기술적인 환경을 변화시키고, 대형 언어 모델 (LLM)이 어떻게 작동하는지, 그리고 우리 스타트업과 같은 비즈니스가 그들을 사용하여 사용 사례를 적용하고 성장할 수 있는지를 보았습니다. 이 장에서는 다른 유형의 대형 언어 모델인 LLM을 비교하고 대조하여 그들의 장단점을 이해하기 위해 탐색할 것입니다. - -우리 스타트업의 여정에서 다음 단계는 현재의 대형 언어 모델 (LLM) 환경을 탐색하고 우리의 사용 사례에 적합한 모델을 이해하는 것입니다. - -## 소개 - -이 레슨에서는 다음을 다룰 것입니다: - -- 현재 풍경에서 다양한 유형의 LLM. -- Azure에서 사용 사례에 대한 다른 모델을 테스트, 반복 및 비교하는 방법. -- LLM을 배포하는 방법. - -## 학습 목표 - -이 레슨을 마치면 다음을 할 수 있게 될 것입니다: - -- 사용 사례에 적합한 적절한 모델 선택. -- 모델의 테스트, 반복 및 성능 개선 방법 이해. -- 비즈니스가 모델을 배포하는 방법 알기. - -## 다양한 유형의 LLM 이해하기 - -대형 언어 모델 (LLM)은 아키텍처, 훈련 데이터 및 사용 사례에 따라 여러 가지 범주로 나뉠 수 있습니다. 이러한 차이점을 이해하면 우리 스타트업이 시나리오에 맞는 올바른 모델을 선택하고 성능을 테스트, 반복 및 개선하는 방법을 이해할 수 있습니다. - -LLM 모델에는 텍스트, 오디오, 비디오, 이미지 생성 등을 위한 다양한 유형이 있습니다. 모델 선택은 사용 목적, 데이터, 비용 등에 따라 달라집니다. - -- **오디오 및 음성 인식**. 이를 위해 Whisper 유형의 모델은 음성 인식을 위해 훌륭한 선택입니다. 일반적인 용도로 사용되며, 다양한 오디오로 훈련되어 다국어 음성 인식을 수행할 수 있습니다. [여기에서 Whisper 유형 모델에 대해 자세히 알아보세요](https://platform.openai.com/docs/models/whisper?WT.mc_id=academic-105485-koreyst). - -- **이미지 생성**. 이미지 생성을 위해 DALL-E와 Midjourney는 매우 잘 알려진 선택지입니다. DALL-E는 Azure OpenAI에서 제공됩니다. [DALL-E에 대해 더 알아보세요](https://platform.openai.com/docs/models/dall-e?WT.mc_id=academic-105485-koreyst) 및 이 커리큘럼의 9장에서도 자세히 다룹니다. - -- **텍스트 생성**. 대부분의 모델은 텍스트 생성을 위해 훈련되었으며, GPT-3.5에서 GPT-4까지 다양한 선택지가 있습니다. 각 모델은 다른 비용이 발생하며, GPT-4가 가장 비싸다는 점을 유념해야 합니다. 능력과 비용 측면에서 어떤 모델이 가장 적합한지 평가하기 위해 [Azure Open AI playground](https://oai.azure.com/portal/playground?WT.mc_id=academic-105485-koreyst)을 살펴보는 것이 좋습니다. - -모델을 선택하면 기본 기능을 얻을 수 있지만, 종종 회사별 데이터를 LLM에게 알려줘야 할 필요가 있습니다. 이에 대한 접근 방식에는 몇 가지 다른 선택지가 있으며, 이후 섹션에서 자세히 알아보겠습니다. - -### Foundation Models VS LLMs - -Foundation Model이라는 용어는 [스탠포드 연구원들에 의해 만들어졌으며](https://arxiv.org/abs/2108.07258?WT.mc_id=academic-105485-koreyst), 다음과 같은 기준을 따르는 AI 모델을 의미합니다: - -- **비지도 학습 또는 자기 지도 학습을 사용하여 훈련됩니다**, 즉, 레이블이 없는 멀티 모달 데이터로 훈련되며, 훈련 과정에서 인간의 주석 또는 데이터 레이블링이 필요하지 않습니다. -- **매우 큰 모델**로, 수십억 개의 매개변수로 훈련된 매우 깊은 신경망을 기반으로 합니다. -- **일반적으로 다른 모델을 위한 '기반'으로 사용됩니다**, 즉, 다른 모델을 구축하기 위한 출발점으로 사용될 수 있으며, 이는 세밀한 조정을 통해 이루어질 수 있습니다. - -![Foundation Models versus LLMs](../../images/FoundationModel.png?WT.mc_id=academic-105485-koreyst) - -이미지 출처: [Essential Guide to Foundation Models and Large Language Models | by Babar M Bhatti | Medium -](https://thebabar.medium.com/essential-guide-to-foundation-models-and-large-language-models-27dab58f7404) - -이 구분을 더 명확히 하기 위해 ChatGPT를 예로 들어보겠습니다. ChatGPT의 첫 번째 버전을 구축하기 위해 GPT-3.5라는 모델이 Foundation Model로 사용되었습니다. 이는 OpenAI가 일부 채팅 관련 데이터를 사용하여 GPT-3.5의 튜닝된 버전을 만들었으며, 이 모델은 채팅봇과 같은 대화 시나리오에서 잘 동작하는 것에 특화되었습니다. - -![Foundation Model](../../images/Multimodal.png?WT.mc_id=academic-105485-koreyst) - -이미지 출처: [2108.07258.pdf (arxiv.org)](https://arxiv.org/pdf/2108.07258.pdf?WT.mc_id=academic-105485-koreyst) - -### 오픈 소스 VS 독점 모델 (Proprietary Models) - -LLM을 분류하는 또 다른 방법은 오픈 소스인지 독점 모델인지에 따라 나눌 수 있습니다. - -오픈 소스 모델은 일반에 공개되어 누구나 사용할 수 있는 모델입니다. 이러한 모델은 일반적으로 해당 모델을 개발한 회사나 연구 커뮤니티에 의해 제공됩니다. 이러한 모델은 검토, 수정 및 사용 사례에 맞게 사용자 정의할 수 있습니다. 그러나 이러한 모델은 항상 프로덕션 환경에 최적화되지 않을 수 있으며, 독점 모델만큼 성능이 우수하지 않을 수도 있습니다. 또한, 오픈 소스 모델의 자금 지원은 제한적일 수 있으며, 장기적으로 유지되지 않거나 최신 연구로 업데이트되지 않을 수도 있습니다. 대표적인 오픈 소스 모델로는 [Alpaca](https://crfm.stanford.edu/2023/03/13/alpaca.html?WT.mc_id=academic-105485-koreyst), [Bloom](https://huggingface.co/bigscience/bloom) 및 [LLaMA](https://llama.meta.com)이 있습니다. - -독점 모델 (Proprietary models)은 회사에 소유되어 일반에 공개되지 않는 모델입니다. 이러한 모델은 일반적으로 프로덕션 환경에 최적화되어 있습니다. 그러나 이러한 모델은 사용자가 검토, 수정 또는 사용 사례에 맞게 사용자 정의할 수 없습니다. 또한, 이러한 모델은 항상 무료로 제공되지 않을 수 있으며, 사용을 위해 구독 또는 결제가 필요할 수 있습니다. 또한, 사용자는 모델을 훈련하는 데 사용되는 데이터를 제어할 수 없으므로 데이터 프라이버시와 AI의 책임있는 사용을 보장하기 위해 모델 소유자에게 의존해야 합니다. 대표적인 독점 모델로는 [OpenAI 모델](https://platform.openai.com/docs/models/overview?WT.mc_id=academic-105485-koreyst), [Google Bard](https://sapling.ai/llm/bard?WT.mc_id=academic-105485-koreyst) 및 [Claude 2](https://www.anthropic.com/index/claude-2?WT.mc_id=academic-105485-koreyst)가 있습니다. - -### 임베딩 VS 이미지 생성 VS 텍스트 및 코드 생성 - -LLM은 생성하는 출력에 따라 다양한 범주로 분류될 수 있습니다. - -임베딩은 텍스트를 숫자 형태로 변환하는 모델의 집합으로, 입력 텍스트의 수치적 표현인 임베딩을 생성합니다. 임베딩은 기계가 단어나 문장 간의 관계를 이해하기 쉽게 만들어주며, 분류 모델이나 클러스터링 모델과 같은 다른 모델의 입력으로 사용될 수 있습니다. 임베딩 모델은 전이 학습(transfer learning)에 자주 사용되며, 풍부한 데이터가 있는 대리 과제를 위해 모델이 구축되고, 그런 다음 모델 가중치(임베딩)가 다른 하위 작업에 재사용됩니다. 이 범주의 예로는 [OpenAI embeddings](https://platform.openai.com/docs/models/embeddings?WT.mc_id=academic-105485-koreyst)가 있습니다. - -![Embedding](../../images/Embedding.png?WT.mc_id=academic-105485-koreyst) - -이미지 생성 모델은 이미지를 생성하는 모델입니다. 이러한 모델은 이미지 편집, 이미지 합성 및 이미지 변환에 자주 사용됩니다. 이미지 생성 모델은 대규모 이미지 데이터셋(예: [LAION-5B](https://laion.ai/blog/laion-5b/?WT.mc_id=academic-105485-koreyst))으로 훈련되며, 새로운 이미지를 생성하거나 인페인팅, 초해상도 및 색상화 기술을 사용하여 기존 이미지를 편집하는 데 사용될 수 있습니다. 예시로는 [DALL-E-3](https://openai.com/dall-e-3?WT.mc_id=academic-105485-koreyst)와 [Stable Diffusion 모델](https://github.com/Stability-AI/StableDiffusion?WT.mc_id=academic-105485-koreyst)이 있습니다. - -![이미지 생성](../../images/Image.png?WT.mc_id=academic-105485-koreyst) - -텍스트 및 코드 생성 모델은 텍스트나 코드를 생성하는 모델입니다. 이러한 모델은 텍스트 요약, 번역 및 질문에 대한 답변과 같은 작업에 자주 사용됩니다. 텍스트 생성 모델은 대규모 텍스트 데이터셋(예: [BookCorpus](https://www.cv-foundation.org/openaccess/content_iccv_2015/html/Zhu_Aligning_Books_and_ICCV_2015_paper.html?WT.mc_id=academic-105485-koreyst))으로 훈련되며, 새로운 텍스트를 생성하거나 질문에 답변하는 데 사용될 수 있습니다. 코드 생성 모델인 [CodeParrot](https://huggingface.co/codeparrot?WT.mc_id=academic-105485-koreyst)과 같은 모델은 대규모 코드 데이터셋(예: GitHub)으로 훈련되며, 새로운 코드를 생성하거나 기존 코드의 버그를 수정하는 데 사용될 수 있습니다. - -![Text and code generation](../../images/Text.png?WT.mc_id=academic-105485-koreyst) - -### 인코더-디코더 (Encoder-Decoder) VS 디코더 전용 (Decoder-only) - -LLM의 다양한 아키텍처에 대해 이야기하기 위해 비유를 사용해보겠습니다. - -상사가 학생들을 위한 퀴즈 작성 과제를 주었습니다. 두 명의 동료가 있습니다. 한 명은 콘텐츠 작성을 담당하고 다른 한 명은 검토를 담당합니다. - -콘텐츠 작성자는 디코더 전용 (Decoder-only) 모델과 비슷합니다. 그들은 주제를 살펴보고 이미 작성된 내용을 확인한 후에 그에 기반하여 코스를 작성할 수 있습니다. 그들은 매력적이고 유익한 콘텐츠 작성에 능숙하지만, 주제와 학습 목표를 이해하는 데는 그리 능숙하지 않습니다. GPT-3와 같은 GPT 계열 모델이 디코더 모델의 예입니다. - -검토자는 인코더 전용 모델과 비슷합니다. 그들은 작성된 코스와 답변을 살펴보고 그들 사이의 관계를 인지하며 문맥을 이해하지만, 콘텐츠 생성에는 능숙하지 않습니다. 인코더 전용 모델의 예로는 BERT가 있습니다. - -퀴즈를 작성하고 검토할 수 있는 사람이 있다고 상상해보세요. 이것이 인코더-디코더 (Encoder-Decoder) 모델입니다. BART와 T5가 그 예입니다. - -### 서비스 VS 모델 - -이제 서비스와 모델의 차이에 대해 이야기해보겠습니다. 서비스는 클라우드 서비스 제공업체가 제공하는 제품으로, 종종 모델, 데이터 및 기타 구성 요소의 조합입니다. 모델은 서비스의 핵심 구성 요소이며, 종종 LLM과 같은 기반 모델입니다. - -서비스는 종종 프로덕션 사용에 최적화되어 있으며, 그래픽 사용자 인터페이스를 통해 모델보다 쉽게 사용할 수 있습니다. 그러나 서비스는 항상 무료로 제공되지 않을 수 있으며, 서비스를 사용하기 위해 구독 또는 결제가 필요할 수 있습니다. 이는 서비스 소유자의 장비와 리소스를 활용하여 비용을 최적화하고 쉽게 확장할 수 있도록 하는 대가입니다. Azure OpenAI 서비스는 이러한 예로, 사용자는 서비스를 사용한 양에 비례하여 비용을 지불하는 pay-as-you-go 요금제를 제공합니다. 또한, Azure OpenAI 서비스는 모델의 기능에 더해 기업용 보안 및 책임 있는 AI 프레임워크를 제공합니다. - -모델은 매개변수, 가중치 등을 포함한 신경망 자체입니다. 회사는 이러한 모델을 로컬에서 실행할 수 있지만, 장비를 구매하고 확장할 구조를 구축하고 라이선스를 구매하거나 오픈 소스 모델을 사용해야 합니다. LLaMA와 같은 모델은 계산 성능이 필요하며, 모델을 실행하기 위해 컴퓨팅 자원이 필요합니다. - -## Azure에서 성능을 이해하기 위해 다른 모델로 테스트하고 반복하는 방법 - -팀은 현재 LLMs의 현황을 조사하고 시나리오에 적합한 몇 가지 좋은 후보 모델을 식별한 후, 다음 단계는 해당 데이터와 작업 부하에서 이들을 테스트하는 것입니다. 이는 실험과 측정을 통해 반복적으로 수행되는 과정입니다. -이전 단락에서 언급한 대부분의 모델들(OpenAI 모델, Llama2와 같은 오픈 소스 모델, Hugging Face transformers)은 [Azure Machine Learning studio](https://ml.azure.com/?WT.mc_id=academic-105485-koreyst)의 [Foundation Models](https://learn.microsoft.com/azure/machine-learning/concept-foundation-models?WT.mc_id=academic-105485-koreyst) 카탈로그에서 사용할 수 있습니다. - -[Azure Machine Learning](https://azure.microsoft.com/products/machine-learning/?WT.mc_id=academic-105485-koreyst)은 데이터 과학자와 ML 엔지니어를 위해 설계된 클라우드 서비스로, ML 수명주기 전체(학습, 테스트, 배포 및 MLOps 처리)를 단일 플랫폼에서 관리할 수 있도록 지원합니다. Machine Learning studio는 이 서비스에 대한 그래픽 사용자 인터페이스를 제공하며 사용자가 다음을 수행할 수 있도록 합니다: - -- 카탈로그에서 관심 있는 Foundation Model을 태스크, 라이선스 또는 이름으로 필터링하여 찾을 수 있습니다. 카탈로그에 아직 포함되지 않은 새로운 모델을 가져올 수도 있습니다. -- 상세한 설명과 코드 샘플을 포함한 모델 카드를 검토하고, 샘플 프롬프트를 제공하여 결과를 테스트하는 샘플 추론 위젯을 사용하여 모델을 테스트할 수 있습니다. - -![Model card](../../images/Llama1.png?WT.mc_id=academic-105485-koreyst) - -- 특정 작업 부하와 입력으로 제공된 특정 데이터 세트에 대한 객관적인 평가 메트릭을 사용하여 모델 성능을 평가할 수 있습니다. - -![Model evaluation](../../images/Llama2.png?WT.mc_id=academic-105485-koreyst) - -- Azure Machine Learning의 실험 및 추적 기능을 활용하여 특정 작업 부하에서 모델 성능을 개선하기 위해 사용자 지정 훈련 데이터로 모델을 세밀하게 조정할 수 있습니다. - -![Model fine-tuning](../../images/Llama3.png?WT.mc_id=academic-105485-koreyst) - -- 원래의 사전 훈련된 모델 또는 세밀하게 조정된 버전을 원격 실시간 추론 또는 배치 엔드포인트에 배포하여 응용 프로그램에서 사용할 수 있도록 할 수 있습니다. - -![Model deployment](../../images/Llama4.png?WT.mc_id=academic-105485-koreyst) - -## LLM 결과 개선하기 - -우리 스타트업 팀은 다양한 종류의 LLM과 Cloud Platform (Azure Machine Learning)을 탐색하여 다른 모델을 비교하고, 테스트 데이터로 평가하고, 성능을 개선하고, 추론 엔드포인트에 배포할 수 있는 기능을 활용했습니다. - -그러나 언제 모델을 fine-tuning하여 사전 훈련된 모델 대신 사용해야 할까요? 특정 작업 부하에서 모델 성능을 개선하기 위한 다른 접근 방식이 있을까요? - -비즈니스가 LLM에서 필요한 결과를 얻기 위해 사용할 수 있는 여러 가지 접근 방식이 있습니다. 다양한 수준의 훈련을 거친 다른 유형의 모델을 선택할 수 있으며, 복잡성, 비용 및 품질이 다른 LLM을 프로덕션에 배포할 수 있습니다. 다음은 몇 가지 다른 접근 방식입니다: - -- **컨텍스트를 고려한 프롬프트 엔지니어링**. 프롬프트할 때 충분한 컨텍스트를 제공하여 필요한 응답을 얻을 수 있도록 하는 것입니다. - -- **검색 증강 생성 (Retrieval Augmented Generation), RAG**. 데이터가 데이터베이스나 웹 엔드포인트에 존재할 수 있습니다. 프롬프트할 때 해당 데이터 또는 그 일부를 포함하도록하여 관련 데이터를 가져와 사용자의 프롬프트의 일부로 만들 수 있습니다. - -- **파인튜닝 모델**. 여기서는 자체 데이터로 모델을 추가로 훈련시켜 모델이 더 정확하고 사용자의 요구에 더 잘 대응하지만 비용이 발생할 수 있습니다. - -![LLMs deployment](../../images/Deploy.png?WT.mc_id=academic-105485-koreyst) - -이미지 출처: [Four Ways that Enterprises Deploy LLMs | Fiddler AI Blog](https://www.fiddler.ai/blog/four-ways-that-enterprises-deploy-llms?WT.mc_id=academic-105485-koreyst) - -### 컨텍스트를 고려한 프롬프트 엔지니어링 - -사전 훈련된 LLM은 일반적인 자연어 작업에서 매우 잘 작동합니다. 짧은 프롬프트(문장을 완성하거나 질문하는 것과 같은)로도 호출하면 "제로샷" 학습이라고 할 수 있습니다. - -그러나 사용자가 자세한 요청과 예제를 포함한 "컨텍스트"로 쿼리를 구성할수록 정확도가 높아지고 사용자의 기대에 가장 가까워집니다. 이 경우, 프롬프트에 하나의 예제만 포함되어 있다면 "원샷" 학습이라고 하며, 여러 개의 예제가 포함되어 있다면 "퓨샷" 학습이라고 합니다. -컨텍스트를 고려한 프롬프트 엔지니어링은 가장 비용 효율적인 접근 방식입니다. - -### 검색 증강 생성 (Retrieval Augmented Generation, RAG) - -LLM은 훈련 과정에서 사용된 데이터만을 사용하여 답변을 생성할 수 있는 제한이 있습니다. 이는 LLM이 훈련 과정 이후에 발생한 사실에 대해 알지 못하며, 회사 데이터와 같은 비공개 정보에 접근할 수 없다는 것을 의미합니다. -이러한 제한은 RAG를 통해 극복할 수 있습니다. RAG는 프롬프트를 외부 데이터로 확장하는 기술로, 문장 길이 제한을 고려하여 문서의 일부인 청크 형태로 외부 데이터를 프롬프트 컨텍스트에 추가합니다. 이는 벡터 데이터베이스 도구(예: [Azure Vector Search](https://learn.microsoft.com/azure/search/vector-search-overview?WT.mc_id=academic-105485-koreyst))에 의해 지원되며, 다양한 사전 정의된 데이터 소스에서 유용한 청크를 검색하여 프롬프트에 추가합니다. - -이 기술은 비즈니스가 충분한 데이터, 충분한 시간 또는 리소스가 없어 LLM을 fine-tuning하는 것이 어려운 경우에 매우 유용합니다. 특정 작업 부하에서 성능을 개선하고 현실의 왜곡이나 유해한 콘텐츠의 위험을 줄이기 위해 사용됩니다. - -### Fine-tuning된 모델 - -Fine-tuning은 전이 학습을 활용하여 모델을 '적응(adapt)'시켜 다운스트림 작업을 수행하거나 특정 문제를 해결하는 과정입니다. Few-shot learning과 RAG와는 달리, 가중치와 편향이 업데이트된 새로운 모델이 생성됩니다. 이는 다음 경우에 선호되는 접근 방식입니다: - -- **Fine-tuned 모델 사용**. 비즈니스가 고성능 모델 대신 임베딩 모델과 같은 능력이 덜한 모델을 사용하고자 하는 경우로, 더 비용 효율적이고 빠른 솔루션을 얻을 수 있습니다. - -- **지연 시간 고려**. 특정 사용 사례에서 지연 시간이 중요하므로 매우 긴 프롬프트를 사용할 수 없거나 모델에서 학습해야 할 예제 수가 프롬프트 길이 제한과 일치하지 않는 경우입니다. - -- **최신 상태 유지**. 비즈니스가 많은 양의 고품질 데이터와 실제 레이블을 보유하고 있으며, 이러한 데이터를 시간이 지나도 최신 상태로 유지하기 위해 필요한 리소스를 갖추고 있는 경우입니다. - -### 훈련된 모델 - -LLM을 처음부터 훈련하는 것은 의심할 여지없이 가장 어렵고 복잡한 접근 방식으로, 대량의 데이터, 숙련된 리소스 및 적절한 컴퓨팅 파워가 필요합니다. 이 옵션은 비즈니스가 도메인 특정 사용 사례와 대량의 도메인 중심 데이터를 보유한 경우에만 고려해야 합니다. - -## 지식 확인 - -LLM 완성 결과를 개선하기 위한 좋은 접근 방식은 무엇일까요? - -1. 컨텍스트를 고려한 프롬프트 엔지니어링 -1. RAG -1. 파인튜닝된 모델 - -A:3, 시간과 리소스, 고품질 데이터가 있는 경우, 파인튜닝은 최신 상태를 유지하기 위한 더 나은 옵션입니다. 그러나 시간이 부족하고 개선을 고려하는 경우에는 RAG를 먼저 고려하는 것이 좋습니다. - -## 🚀 도전과제 - -비즈니스에 [RAG를 사용하는 방법](https://learn.microsoft.com/azure/search/retrieval-augmented-generation-overview?WT.mc_id=academic-105485-koreyst)에 대해 더 알아보세요. - -## 수고하셨습니다. 학습을 계속하세요! - -이 레슨을 완료한 후 [Generative AI 학습 컬렉션](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst)을 확인하여 Generative AI 지식을 계속 향상시킬 수 있습니다! - -Lesson 3로 이동하여 [책임감 있게 생성형 AI 사용하기 ](../../../03-using-generative-ai-responsibly/translations/ko/README.md?WT.mc_id=academic-105485-koreyst)을 살펴보세요! diff --git a/02-exploring-and-comparing-different-llms/translations/pl/README.md b/02-exploring-and-comparing-different-llms/translations/pl/README.md deleted file mode 100644 index 6409351414..0000000000 --- a/02-exploring-and-comparing-different-llms/translations/pl/README.md +++ /dev/null @@ -1,203 +0,0 @@ -# Eksploracja i porównywanie różnych modeli LLM - -[![Eksploracja i porównywanie różnych modeli LLM](../../images/02-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson2-gh?WT.mc_id=academic-105485-koreyst) - -> _Kliknij powyższy obraz, aby obejrzeć wideo tej lekcji_ - -W poprzedniej lekcji zobaczyliśmy, jak Generatywna SI zmienia krajobraz technologiczny, jak działają Duże Modele Językowe (LLM) oraz jak firma - taka jak nasz startup - może je zastosować w swoich przypadkach użycia i rozwijać się! W tym rozdziale porównamy różne typy dużych modeli językowych (LLM), aby zrozumieć ich wady i zalety. - -Kolejnym krokiem w podróży naszego startupu jest eksploracja obecnego krajobrazu modeli LLM i zrozumienie, które z nich są odpowiednie do naszego przypadku użycia. - -## Wprowadzenie - -Ta lekcja obejmie: - -- Różne typy modeli LLM w obecnym krajobrazie. -- Testowanie, iterowanie i porównywanie różnych modeli dla konkretnego przypadku użycia w Azure. -- Jak wdrażać model LLM. - -## Cele Nauki - -Po ukończeniu tej lekcji będziesz potrafił: - -- Wybrać odpowiedni model dla swojego przypadku użycia. -- Zrozumieć, jak testować, iterować i poprawiać wydajność swojego modelu. -- Wiedzieć, jak firmy wdrażają modele. - -## Zrozumienie różnych typów modeli LLM - -Modele LLM mogą mieć wiele kategoryzacji opartych na ich architekturze, danych treningowych i przypadkach użycia. Zrozumienie tych różnic pomoże naszemu startupowi wybrać odpowiedni model dla danego scenariusza oraz zrozumieć, jak testować, iterować i poprawiać wydajność. - -Istnieje wiele różnych typów modeli LLM, a wybór modelu zależy od tego, do czego zamierzasz go użyć, od twoich danych, ile jesteś gotów zapłacić i więcej. - -W zależności od tego, czy zamierzasz używać modeli do generowania tekstu, dźwięku, wideo, obrazów i tak dalej, możesz wybrać inny typ modelu. - -- **Rozpoznawanie audio i mowy**. W tym celu modele typu Whisper są doskonałym wyborem, ponieważ są ogólnego przeznaczenia i skierowane na rozpoznawanie mowy. Są trenowane na różnorodnym materiale audio i mogą wykonywać wielojęzyczne rozpoznawanie mowy. Dowiedz się więcej o [modelach typu Whisper tutaj](https://platform.openai.com/docs/models/whisper?WT.mc_id=academic-105485-koreyst). - -- **Generowanie obrazów**. Do generowania obrazów DALL-E i Midjourney są dwoma bardzo dobrze znanymi wyborami. DALL-E jest oferowany przez Azure OpenAI. [Przeczytaj więcej o DALL-E tutaj](https://platform.openai.com/docs/models/dall-e?WT.mc_id=academic-105485-koreyst) oraz w Rozdziale 9 tego kursu. - -- **Generowanie tekstu**. Większość modeli jest trenowana na generowaniu tekstu i masz duży wybór od GPT-3.5 do GPT-4. Mają one różne koszty, przy czym GPT-4 jest najdroższy. Warto zajrzeć do [playground Azure OpenAI](https://oai.azure.com/portal/playground?WT.mc_id=academic-105485-koreyst), aby ocenić, które modele najlepiej pasują do twoich potrzeb pod względem możliwości i kosztów. - -- **Multimodalność**. Jeśli szukasz obsługi wielu typów danych na wejściu i wyjściu, warto zajrzeć do modeli takich jak [gpt-4 turbo z funkcją vision lub gpt-4o](https://learn.microsoft.com/azure/ai-services/openai/concepts/models#gpt-4-and-gpt-4-turbo-models?WT.mc_id=academic-105485-koreyst) - najnowszych wersji modeli OpenAI - które są zdolne do łączenia przetwarzania języka naturalnego ze zrozumieniem wizualnym, umożliwiając interakcje poprzez interfejsy multimodalne. - -Wybór modelu oznacza, że otrzymujesz pewne podstawowe możliwości, które jednak mogą nie być wystarczające. Często masz firmowe dane, o których musisz jakoś poinformować model LLM. Istnieje kilka różnych sposobów podejścia do tego problemu, więcej na ten temat w nadchodzących sekcjach. - -### Modele Fundamentalne a Modele LLM - -Termin Model Fundamentalny został [ukuty przez badaczy ze Stanford](https://arxiv.org/abs/2108.07258?WT.mc_id=academic-105485-koreyst) i zdefiniowany jako model SI, który spełnia pewne kryteria, takie jak: - -- **Są trenowane przy użyciu uczenia nienadzorowanego lub uczenia samodzielnego**, co oznacza, że są trenowane na nieoznakowanych danych multimodalnych i nie wymagają ludzkiej adnotacji ani oznaczania danych do ich procesu treningu. -- **Są to bardzo duże modele**, oparte na bardzo głębokich sieciach neuronowych trenowanych na miliardach parametrów. -- **Zwykle mają służyć jako 'fundament' dla innych modeli**, co oznacza, że mogą być używane jako punkt wyjścia dla innych modeli budowanych na ich podstawie, co można zrobić poprzez dostrojenie (fine-tuning). - -![Modele Fundamentalne a Modele LLM](../../images/FoundationModel.png?WT.mc_id=academic-105485-koreyst) - -Źródło obrazu: [Essential Guide to Foundation Models and Large Language Models | by Babar M Bhatti | Medium -](https://thebabar.medium.com/essential-guide-to-foundation-models-and-large-language-models-27dab58f7404) - -Aby bardziej wyjaśnić to rozróżnienie, weźmy ChatGPT jako przykład. Aby zbudować pierwszą wersję ChatGPT, model o nazwie GPT-3.5 służył jako model fundamentalny. Oznacza to, że OpenAI użyło pewnych danych specyficznych dla czatu, aby stworzyć dostrojoną wersję GPT-3.5, która była wyspecjalizowana w dobrym działaniu w scenariuszach konwersacyjnych, takich jak chatboty. - -![Model Fundamentalny](../../images/Multimodal.png?WT.mc_id=academic-105485-koreyst) - -Źródło obrazu: [2108.07258.pdf (arxiv.org)](https://arxiv.org/pdf/2108.07258.pdf?WT.mc_id=academic-105485-koreyst) - -### Modele Open Source a Modele Własnościowe - -Innym sposobem kategoryzacji modeli LLM jest to, czy są one open source czy własnościowe. - -Modele open source są modelami, które są udostępniane publicznie i mogą być używane przez każdego. Są one często udostępniane przez firmę, która je stworzyła, lub przez społeczność badawczą. Modele te mogą być sprawdzane, modyfikowane i dostosowywane do różnych przypadków użycia w LLM. Jednak nie zawsze są zoptymalizowane do użytku produkcyjnego i mogą nie być tak wydajne jak modele własnościowe. Ponadto finansowanie dla modeli open source może być ograniczone i mogą one nie być utrzymywane długoterminowo lub mogą nie być aktualizowane o najnowsze badania. Przykładami popularnych modeli open source są [Alpaca](https://crfm.stanford.edu/2023/03/13/alpaca.html?WT.mc_id=academic-105485-koreyst), [Bloom](https://huggingface.co/bigscience/bloom) i [LLaMA](https://llama.meta.com). - -Modele własnościowe są modelami, które są własnością firmy i nie są udostępniane publicznie. Modele te są często zoptymalizowane do użytku produkcyjnego. Jednak nie mogą być sprawdzane, modyfikowane ani dostosowywane do różnych przypadków użycia. Ponadto nie zawsze są dostępne za darmo i mogą wymagać subskrypcji lub płatności za użytkowanie. Ponadto użytkownicy nie mają kontroli nad danymi, które są używane do trenowania modelu, co oznacza, że muszą powierzyć właścicielowi modelu zapewnienie zobowiązania do ochrony prywatności danych i odpowiedzialnego używania SI. Przykładami popularnych modeli własnościowych są [modele OpenAI](https://platform.openai.com/docs/models/overview?WT.mc_id=academic-105485-koreyst), [Google Bard](https://sapling.ai/llm/bard?WT.mc_id=academic-105485-koreyst) lub [Claude 2](https://www.anthropic.com/index/claude-2?WT.mc_id=academic-105485-koreyst). - -### Embedding vs Generowanie Obrazów vs Generowanie Tekstu i Kodu - -Modele LLM można również kategoryzować według generowanego przez nie wyjścia. - -Embeddingi to zestaw modeli, które mogą przekształcić tekst w formę numeryczną, zwaną embeddingiem, która jest numeryczną reprezentacją tekstu wejściowego. Embeddingi ułatwiają maszynom zrozumienie relacji między słowami lub zdaniami i mogą być wykorzystywane jako dane wejściowe przez inne modele, takie jak modele klasyfikacyjne lub modele klastrowania, które mają lepszą wydajność na danych numerycznych. Modele embeddingu są często używane do uczenia transferowego, gdzie model jest budowany dla zadania zastępczego, dla którego istnieje obfitość danych, a następnie wagi modelu (embeddingi) są ponownie wykorzystywane do innych zadań. Przykładem tej kategorii są [embeddingi OpenAI](https://platform.openai.com/docs/models/embeddings?WT.mc_id=academic-105485-koreyst). - -![Embedding](../../images/Embedding.png?WT.mc_id=academic-105485-koreyst) - -Modele generowania obrazów to modele, które generują obrazy. Modele te są często używane do edycji obrazów, syntezy obrazów i tłumaczenia obrazów. Modele generowania obrazów są często trenowane na dużych zbiorach danych obrazów, takich jak [LAION-5B](https://laion.ai/blog/laion-5b/?WT.mc_id=academic-105485-koreyst), i mogą być używane do generowania nowych obrazów lub do edycji istniejących obrazów za pomocą technik inpainting, super-resolution i koloryzacji. Przykłady obejmują [DALL-E-3](https://openai.com/dall-e-3?WT.mc_id=academic-105485-koreyst) i [modele Stable Diffusion](https://github.com/Stability-AI/StableDiffusion?WT.mc_id=academic-105485-koreyst). - -![Generowanie obrazów](../../images/Image.png?WT.mc_id=academic-105485-koreyst) - -Modele generowania tekstu i kodu to modele, które generują tekst lub kod. Modele te są często używane do podsumowywania tekstu, tłumaczenia i odpowiadania na pytania. Modele generowania tekstu są często trenowane na dużych zbiorach danych tekstowych, takich jak [BookCorpus](https://www.cv-foundation.org/openaccess/content_iccv_2015/html/Zhu_Aligning_Books_and_ICCV_2015_paper.html?WT.mc_id=academic-105485-koreyst), i mogą być używane do generowania nowego tekstu lub do odpowiadania na pytania. Modele generowania kodu, jak [CodeParrot](https://huggingface.co/codeparrot?WT.mc_id=academic-105485-koreyst), są często trenowane na dużych zbiorach danych kodu, takich jak GitHub, i mogą być używane do generowania nowego kodu lub do naprawiania błędów w istniejącym kodzie. - -![Generowanie tekstu i kodu](../../images/Text.png?WT.mc_id=academic-105485-koreyst) - -### Encoder-Decoder vs Tylko Decoder - -Aby porozmawiać o różnych typach architektur modeli LLM, użyjmy analogii. - -Wyobraź sobie, że twój menedżer przydzielił ci zadanie napisania quizu dla studentów. Masz dwóch kolegów; jeden nadzoruje tworzenie treści, a drugi nadzoruje ich przegląd. - -Twórca treści jest jak model wyłącznie Decoder, może spojrzeć na temat i zobaczyć, co już napisałeś, a następnie może napisać kurs na tej podstawie. Są bardzo dobrzy w pisaniu angażujących i pouczających treści, ale nie są bardzo dobrzy w zrozumieniu tematu i celów nauczania. Przykładami modeli Decoder są modele z rodziny GPT, takie jak GPT-3. - -Recenzent jest jak model wyłącznie Encoder, patrzą na napisany kurs i odpowiedzi, zauważając relacje między nimi i rozumiejąc kontekst, ale nie są dobrzy w generowaniu treści. Przykładem modelu wyłącznie Encoder byłby BERT. - -Wyobraź sobie, że możemy mieć kogoś, kto mógłby zarówno tworzyć, jak i recenzować quiz, to jest model Encoder-Decoder. Przykładami byłyby BART i T5. - -### Usługa vs Model - -Teraz porozmawiajmy o różnicy między usługą a modelem. Usługa to produkt oferowany przez Dostawcę Usług Chmurowych i często jest kombinacją modeli, danych i innych komponentów. Model jest podstawowym komponentem usługi i często jest modelem fundamentalnym, takim jak LLM. - -Usługi są często zoptymalizowane do użytku produkcyjnego i często łatwiejsze w użyciu niż modele, dzięki graficznemu interfejsowi użytkownika. Jednak usługi nie zawsze są dostępne za darmo i mogą wymagać subskrypcji lub płatności za użytkowanie, w zamian za wykorzystanie sprzętu i zasobów właściciela usługi, optymalizację wydatków i łatwe skalowanie. Przykładem usługi jest [Usługa Azure OpenAI](https://learn.microsoft.com/azure/ai-services/openai/overview?WT.mc_id=academic-105485-koreyst), która oferuje plan opłat pay-as-you-go, co oznacza, że użytkownicy są obciążani proporcjonalnie do tego, ile korzystają z usługi. Ponadto Usługa Azure OpenAI oferuje bezpieczeństwo klasy korporacyjnej i odpowiedzialny framework sztucznej inteligencji oprócz możliwości modeli. - -Modele to tylko Sieć Neuronowa, z parametrami, wagami i innymi elementami. Pozwalają firmom na uruchamianie lokalnie, jednak będą musiały kupić sprzęt, zbudować strukturę do skalowania i kupić licencję lub użyć modelu open-source. Model taki jak LLaMA jest dostępny do użytku, wymagając mocy obliczeniowej do uruchomienia modelu. - -## Jak testować i iterować z różnymi modelami, aby zrozumieć wydajność w Azure - -Gdy nasz zespół zbadał już obecny krajobraz modeli LLM i zidentyfikował kilku dobrych kandydatów do swoich scenariuszy, kolejnym krokiem jest przetestowanie ich na swoich danych i na swoim obciążeniu. Jest to proces iteracyjny, przeprowadzany przez eksperymenty i pomiary. -Większość modeli, które wspomnieliśmy w poprzednich paragrafach (modele OpenAI, modele open source jak Llama2 i transformery Hugging Face), jest dostępna w [Katalogu Modeli](https://learn.microsoft.com/azure/ai-studio/how-to/model-catalog-overview?WT.mc_id=academic-105485-koreyst) w [Azure AI Studio](https://ai.azure.com/?WT.mc_id=academic-105485-koreyst). - -[Azure AI Studio](https://learn.microsoft.com/azure/ai-studio/what-is-ai-studio?WT.mc_id=academic-105485-koreyst) to Platforma Chmurowa zaprojektowana dla deweloperów do budowania aplikacji generatywnej SI i zarządzania całym cyklem życia rozwoju - od eksperymentowania do ewaluacji - poprzez połączenie wszystkich usług Azure AI w jednym hubie z wygodnym interfejsem GUI. Katalog Modeli w Azure AI Studio umożliwia użytkownikowi: - -- Znalezienie interesującego Modelu Fundamentalnego w katalogu - zarówno własnościowego, jak i open source, filtrując według zadania, licencji lub nazwy. Aby poprawić wyszukiwalność, modele są zorganizowane w kolekcje, takie jak kolekcja Azure OpenAI, kolekcja Hugging Face i więcej. - -![Katalog modeli](../../images/AzureAIStudioModelCatalog.png?WT.mc_id=academic-105485-koreyst) - -- Przegląd karty modelu, w tym szczegółowego opisu zamierzonego użycia i danych treningowych, przykładów kodu i wyników ewaluacji na wewnętrznej bibliotece ewaluacji. - -![Karta modelu](../../images/ModelCard.png?WT.mc_id=academic-105485-koreyst) - -- Porównanie benchmarków między modelami i zbiorami danych dostępnymi w branży, aby ocenić, który z nich spełnia scenariusz biznesowy, poprzez panel [Benchmarki Modeli](https://learn.microsoft.com/azure/ai-studio/how-to/model-benchmarks?WT.mc_id=academic-105485-koreyst). - -![Benchmarki modeli](../../images/ModelBenchmarks.png?WT.mc_id=academic-105485-koreyst) - -- Dostrojenie modelu na niestandardowych danych treningowych, aby poprawić wydajność modelu w konkretnym obciążeniu, wykorzystując możliwości eksperymentowania i śledzenia Azure AI Studio. - -![Dostrajanie modelu](../../images/FineTuning.png?WT.mc_id=academic-105485-koreyst) - -- Wdrożenie oryginalnego wstępnie wytrenowanego modelu lub dostrojonej wersji do zdalnej analizy w czasie rzeczywistym - zarządzanego obliczenia - lub bezserwerowego punktu końcowego API - [pay-as-you-go](https://learn.microsoft.com/azure/ai-studio/how-to/model-catalog-overview#model-deployment-managed-compute-and-serverless-api-pay-as-you-go?WT.mc_id=academic-105485-koreyst) - aby umożliwić aplikacjom korzystanie z niego. - -![Wdrożenie modelu](../../images/ModelDeploy.png?WT.mc_id=academic-105485-koreyst) - -> [!NOTE] -> Nie wszystkie modele w katalogu są obecnie dostępne do dostrajania i/lub wdrażania pay-as-you-go. Sprawdź kartę modelu, aby uzyskać szczegółowe informacje na temat możliwości i ograniczeń modelu. - -## Poprawianie wyników LLM - -Zbadaliśmy z naszym zespołem startupowym różne rodzaje modeli LLM i Platformę Chmurową (Azure Machine Learning) umożliwiającą nam porównanie różnych modeli, ocenę ich na danych testowych, poprawę wydajności i wdrożenie ich na punktach końcowych analizy. - -Ale kiedy powinni rozważyć dostrojenie modelu zamiast używania wstępnie wytrenowanego? Czy istnieją inne podejścia do poprawy wydajności modelu w konkretnych obciążeniach? - -Istnieje kilka podejść, które firma może wykorzystać, aby uzyskać potrzebne wyniki z LLM. Możesz wybrać różne typy modeli o różnych stopniach treningu podczas wdrażania LLM w produkcji, o różnych poziomach złożoności, kosztach i jakości. Oto kilka różnych podejść: - -- **Inżynieria promptów z kontekstem**. Pomysł polega na dostarczeniu wystarczającego kontekstu podczas promptowania, aby zapewnić uzyskanie potrzebnych odpowiedzi. - -- **Retrieval Augmented Generation, RAG**. Twoje dane mogą istnieć na przykład w bazie danych lub w punkcie końcowym sieci, aby zapewnić, że te dane lub ich podzbiór są uwzględnione w momencie promptowania, możesz pobrać odpowiednie dane i uczynić je częścią promptu użytkownika. - -- **Dostrojony model**. Tutaj, dalej trenowałeś model na własnych danych, co doprowadziło do tego, że model jest bardziej dokładny i reaktywny na twoje potrzeby, ale może być kosztowny. - -![Wdrażanie LLM](../../images/Deploy.png?WT.mc_id=academic-105485-koreyst) - -Źródło obrazu: [Four Ways that Enterprises Deploy LLMs | Fiddler AI Blog](https://www.fiddler.ai/blog/four-ways-that-enterprises-deploy-llms?WT.mc_id=academic-105485-koreyst) - -### Inżynieria Promptów z Kontekstem - -Wstępnie wytrenowane modele LLM działają bardzo dobrze na ogólnych zadaniach języka naturalnego, nawet przy wywołaniu ich krótkim promptem, jak zdanie do uzupełnienia lub pytanie – tak zwane uczenie "zero-shot". - -Jednak im bardziej użytkownik może sformułować swoje zapytanie, ze szczegółowym żądaniem i przykładami – Kontekstem – tym bardziej dokładna i bliższa oczekiwaniom użytkownika będzie odpowiedź. W tym przypadku mówimy o uczeniu "one-shot", jeśli prompt zawiera tylko jeden przykład, i uczeniu "few-shot", jeśli zawiera wiele przykładów. -Inżynieria promptów z kontekstem jest najbardziej ekonomicznym podejściem na początek. - -### Retrieval Augmented Generation (RAG) - -Modele LLM mają ograniczenie, że mogą wykorzystywać tylko dane, które zostały użyte podczas ich treningu do generowania odpowiedzi. Oznacza to, że nie wiedzą nic o faktach, które miały miejsce po ich procesie treningu, i nie mogą uzyskać dostępu do niepublicznych informacji (takich jak dane firmowe). -Można to przezwyciężyć dzięki RAG, technice, która wzbogaca prompt o zewnętrzne dane w postaci fragmentów dokumentów, biorąc pod uwagę limity długości promptu. Jest to wspierane przez narzędzia baz danych wektorowych (takie jak [Azure Vector Search](https://learn.microsoft.com/azure/search/vector-search-overview?WT.mc_id=academic-105485-koreyst)), które pobierają użyteczne fragmenty z różnych predefiniowanych źródeł danych i dodają je do Kontekstu promptu. - -Ta technika jest bardzo pomocna, gdy firma nie ma wystarczających danych, wystarczająco dużo czasu lub zasobów do dostrojenia LLM, ale nadal chce poprawić wydajność w konkretnym obciążeniu i zmniejszyć ryzyko zmyśleń, tj. mistyfikacji rzeczywistości lub szkodliwych treści. - -### Dostrojony model - -Dostrajanie to proces, który wykorzystuje uczenie transferowe, aby 'dostosować' model do zadania podrzędnego lub rozwiązania konkretnego problemu. W przeciwieństwie do uczenia few-shot i RAG, skutkuje wygenerowaniem nowego modelu, z aktualizowanymi wagami i stronniczością. Wymaga zestawu przykładów treningowych składających się z pojedynczego wejścia (promptu) i powiązanego wyjścia (uzupełnienia). -Byłoby to preferowane podejście, jeśli: - -- **Używanie dostrojonych modeli**. Firma chciałaby używać dostrojonych mniej zaawansowanych modeli (jak modele embeddingu) zamiast modeli o wysokiej wydajności, co skutkuje bardziej ekonomicznym i szybkim rozwiązaniem. - -- **Rozważanie opóźnienia**. Opóźnienie jest ważne dla konkretnego przypadku użycia, więc nie jest możliwe użycie bardzo długich promptów lub liczba przykładów, których model powinien się nauczyć, nie mieści się w limicie długości promptu. - -- **Utrzymywanie aktualności**. Firma ma dużo wysokiej jakości danych i etykiet prawdy, a także zasoby wymagane do utrzymania tych danych na bieżąco. - -### Wytrenowany model - -Trenowanie LLM od podstaw jest bez wątpienia najtrudniejszym i najbardziej złożonym podejściem do przyjęcia, wymagającym ogromnych ilości danych, wykwalifikowanych zasobów i odpowiedniej mocy obliczeniowej. Tę opcję należy rozważyć tylko w scenariuszu, w którym firma ma przypadek użycia specyficzny dla domeny i dużą ilość danych skoncentrowanych na domenie. - -## Sprawdzenie wiedzy - -Jakie mogłoby być dobre podejście do poprawy wyników uzupełnień LLM? - -1. Inżynieria promptów z kontekstem -1. RAG -1. Dostrojony model - -A:3, jeśli masz czas, zasoby i wysokiej jakości dane, dostrajanie jest lepszą opcją, aby być na bieżąco. Jednak jeśli chcesz poprawić rzeczy, a brakuje ci czasu, warto najpierw rozważyć RAG. - -## 🚀 Wyzwanie - -Przeczytaj więcej o tym, jak możesz [używać RAG](https://learn.microsoft.com/azure/search/retrieval-augmented-generation-overview?WT.mc_id=academic-105485-koreyst) dla swojego biznesu. - -## Świetna Praca, Kontynuuj Naukę - -Po ukończeniu tej lekcji, sprawdź naszą [kolekcję materiałów do nauki Generatywnej SI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst), aby kontynuować podnoszenie swojej wiedzy o Generatywnej SI! - -Przejdź do Lekcji 3, gdzie przyjrzymy się [budowaniu z Generatywną SI w sposób odpowiedzialny](../../../03-using-generative-ai-responsibly/translations/pl/README.md?WT.mc_id=academic-105485-koreyst)! diff --git a/02-exploring-and-comparing-different-llms/translations/pt-br/README.md b/02-exploring-and-comparing-different-llms/translations/pt-br/README.md deleted file mode 100644 index a3f617ffe7..0000000000 --- a/02-exploring-and-comparing-different-llms/translations/pt-br/README.md +++ /dev/null @@ -1,199 +0,0 @@ -# Explorando e comparando diferentes LLMs - -[![Exploring and comparing different LLMs](../../images/02-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson2-gh?WT.mc_id=academic-105485-koreystt) - -> _Clique na imagem acima para ver o vídeo desta lição_ - -Na lição anterior, vimos como a IA generativa está mudando o cenário tecnológico, como os Grandes Modelos de Linguagens (LLMs) funcionam e como uma empresa - como nossa startup - pode aplicá-los aos seus casos de uso e crescer! Neste capítulo, estamos procurando comparar e contrastar diferentes tipos de modelos de linguagem grandes, LLMs para entender seus prós e contras. - -O próximo passo na jornada de nossa startup é explorar o cenário atual dos Grandes Modelos de Linguagem (LLMs) e entender quais são adequados para nosso caso de uso. - -## Introdução - -Esta lição abordará: - -- Diferentes tipos de LLMs no cenário atual. -- Testar, iterar e comparar diferentes modelos para seu caso de uso no Azure. -- Como implantar um LLM. - -## Objetivos de aprendizagem - -Após a conclusão desta lição, você será capaz de: - -- Selecionar o modelo certo para seu caso de uso. -- Entender como testar, iterar e melhorar o desempenho do seu modelo. -- Saber como as empresas implantam modelos. - -## Entenda diferentes tipos de LLMs - -Os Grandes Modelos de Linguagem (LLMs) podem ter várias categorizações com base em sua arquitetura, dados de treinamento e caso de uso. Entender essas diferenças ajudará nossa startup a selecionar o modelo certo para o cenário e entender como testar, iterar e melhorar o desempenho. - -Existem muitos tipos diferentes de modelos LLM, sua escolha de modelo depende do que você pretende usá-los, seus dados, quanto você está pronto para pagar e muito mais. - -Dependendo se você pretende usar os modelos para geração de texto, áudio, vídeo ou imagem você pode optar por um tipo diferente de modelo. - -- **Reconhecimento de áudio e fala**: para esse fim, os modelos do tipo Whisper são uma ótima escolha. Pois são de propósito geral e destinados ao reconhecimento de fala. Ele é treinado em áudio diversificado e pode realizar reconhecimento de fala multilíngue. Saiba mais sobre [modelos do tipo Whisper aqui](https://platform.openai.com/docs/models/whisper?WT.mc_id=academic-105485-koreyst). - -- **Geração de Imagem**: para geração de imagem, DALL-E e Midjourney são duas escolhas muito conhecidas. DALL-E é oferecido pelo Azure OpenAI. [Leia mais sobre DALL-E aqui](https://platform.openai.com/docs/models/dall-e?WT.mc_id=academic-105485-koreyst) e também no Capítulo 9 deste currículo. - -- **Geração de texto**: a maioria dos modelos é treinada na geração de texto e você tem uma grande variedade de escolhas, desde GPT-3.5 até GPT-4. Eles vêm a custos diferentes, sendo o GPT-4 o mais caro. Vale a pena dar uma olhada no [Azure Open AI playground](https://oai.azure.com/portal/playground?WT.mc_id=academic-105485-koreyst) para avaliar quais modelos se adequam melhor às suas necessidades em termos de capacidade e custo. - -Escolher um modelo significa que você obtém algumas capacidades básicas, que podem não ser suficientes. Muitas vezes, você tem dados específicos da empresa que precisa informar ao LLM. Existem algumas opções diferentes sobre como abordar isso, abordaremos mais sobre isso nas próximas seções. - -### Modelos de base versus LLMs - -O termo Modelo de Fundação foi [criado por pesquisadores de Stanford](https://arxiv.org/abs/2108.07258?WT.mc_id=academic-105485-koreyst) e definido como um modelo de IA que segue alguns critérios, como: - -- **Eles são treinandos usando aprendizado não supervisionado ou aprendizado auto-supervisionado**, o que significa que são treinados em dados multimodais não rotulados e não requerem anotação humana ou rotulagem de dados para seu processo de treinamento. - -- **Eles são modelos muito grandes**, baseados em redes neurais muito profundas treinadas em bilhões de parâmetros. - -- **Normalmente, eles são destinados a servir como uma ‘base’ para outros modelos**, o que significa que podem ser usados como ponto de partida para outros modelos serem construídos em cima, o que pode ser feito por ajuste fino. - -![Foundation Models versus LLMs](../../images/FoundationModel.png?WT.mc_id=academic-105485-koreyst) - -Fonte da imagem: [Essential Guide to Foundation Models and Large Language Models | by Babar M Bhatti | Medium -](https://thebabar.medium.com/essential-guide-to-foundation-models-and-large-language-models-27dab58f7404?WT.mc_id=academic-105485-koreyst) - -Para esclarecer ainda mais essa distinção, vamos usar o ChatGPT como exemplo. Para criar a primeira versão do ChatGPT, um modelo chamado GPT-3.5 serviu como modelo fundamental. Isso significa que a OpenAI utilizou alguns dados específicos de conversação para criar uma versão ajustada do GPT-3.5 que foi especializada em se sair bem em cenários de conversação, como chatbots. - -![Foundation Model](../../images/Multimodal.png?WT.mc_id=academic-105485-koreyst) - -Fonte da imagem: [2108.07258.pdf (arxiv.org)](https://arxiv.org/pdf/2108.07258.pdf?WT.mc_id=academic-105485-koreyst) - -### Modelos de Código Aberto versus Modelos Proprietários - -Outra maneira de categorizar os Modelos de Linguagem de Grande Escala (LLMs) é se eles são de código aberto ou proprietários. - -Os modelos de código aberto são modelos que são disponibilizados ao público e podem ser usados por qualquer pessoa. Eles são frequentemente disponibilizados pela empresa que os criou ou pela comunidade de pesquisa. Esses modelos podem ser inspecionados, modificados e personalizados para diversos casos de uso em LLMs. No entanto, nem sempre são otimizados para uso em produção e podem não ser tão eficientes quanto os modelos proprietários. Além disso, o financiamento para modelos de código aberto pode ser limitado, e eles podem não ser mantidos a longo prazo ou não ser atualizados com as pesquisas mais recentes. Exemplos de modelos de código aberto populares incluem [Alpaca](https://crfm.stanford.edu/2023/03/13/alpaca.html?WT.mc_id=academic-105485-koreyst), [Bloom](https://huggingface.co/bigscience/bloom) e [LLaMA](https://llama.meta.com). - -Os modelos proprietários são modelos de propriedade de uma empresa e não são disponibilizados ao público. Esses modelos são frequentemente otimizados para uso em produção. No entanto, não podem ser inspecionados, modificados ou personalizados para diferentes casos de uso. Além disso, nem sempre estão disponíveis gratuitamente e podem exigir uma assinatura ou pagamento para uso. Além disso, os usuários não têm controle sobre os dados usados para treinar o modelo, o que significa que devem confiar ao proprietário do modelo o compromisso com a privacidade dos dados e o uso responsável da IA. Exemplos de modelos proprietários populares incluem [modelos da OpenAI](https://platform.openai.com/docs/models/overview?WT.mc_id=academic-105485-koreyst), [Google Bard](https://sapling.ai/llm/bard?WT.mc_id=academic-105485-koreyst) ou [Claude 2](https://www.anthropic.com/index/claude-2?WT.mc_id=academic-105485-koreyst). - -### Embeddings versus Geração de Imagem versus Geração de Texto e Código - -Os LLMs também podem ser categorizados com base na saída que geram. - -Os `embeddings` são um conjunto de modelos que podem converter texto em uma forma numérica, chamada `embedding`, que é uma representação numérica do texto de entrada. Os `embeddings` facilitam a compreensão das relações entre palavras ou frases por máquinas e podem ser usadas como entradas por outros modelos, como modelos de classificação ou modelos de agrupamento que têm um melhor desempenho com dados numéricos. Modelos de incorporação são frequentemente usados para aprendizado por transferência, onde um modelo é construído para uma tarefa substituta para a qual há uma abundância de dados, e em seguida, os pesos do modelo (`embeddings`) são reutilizados para outras tarefas subsequentes. Um exemplo desta categoria é [Embeddings no OpenAI](https://platform.openai.com/docs/models/embeddings?WT.mc_id=academic-105485-koreyst). - -![Embedding](../../images/Embedding.png?WT.mc_id=academic-105485-koreyst) - -Modelos de geração de imagem são modelos que geram imagens. Esses modelos são frequentemente usados para edição de imagens, síntese de imagens e tradução de imagens. Modelos de geração de imagem são frequentemente treinados em grandes conjuntos de dados de imagens, como [LAION-5B](https://laion.ai/blog/laion-5b/?WT.mc_id=academic-105485-koreyst), e podem ser usados para gerar novas imagens ou editar imagens existentes com técnicas de inpainting, super-resolução e colorização. Exemplos incluem [DALL-E-3](https://openai.com/dall-e-3?WT.mc_id=academic-105485-koreyst) e [modelos do Stable Diffusion](https://github.com/Stability-AI/StableDiffusion?WT.mc_id=academic-105485-koreyst). - -![Image Generation](../../images/Image.png?WT.mc_id=academic-105485-koreyst) - -Modelos de geração de texto e código são modelos que geram texto ou código. Esses modelos são frequentemente usados para resumir texto, traduzir e responder a perguntas. Modelos de geração de texto são frequentemente treinados em grandes conjuntos de dados de texto, como [BookCorpus](https://www.cv-foundation.org/openaccess/content_iccv_2015/html/Zhu_Aligning_Books_and_ICCV_2015_paper.html?WT.mc_id=academic-105485-koreyst), e podem ser usados para gerar novo texto ou responder a perguntas. Modelos de geração de código, como [CodeParrot](https://huggingface.co/codeparrot?WT.mc_id=academic-105485-koreyst), são frequentemente treinados em grandes conjuntos de dados de código, como o GitHub, e podem ser usados para gerar novo código ou corrigir bugs em código existente. - -![Text and code generation](../../images/Text.png?WT.mc_id=academic-105485-koreyst) - -### Encoder-Decoder versus Decoder-only - -Para falar sobre os diferentes tipos de arquiteturas de Grandes Modelos de Linguagem (LLMs), vamos usar uma analogia. - -Imagine que seu gerente te deu uma tarefa de escrever um questionário para os alunos. Você tem dois colegas; um supervisiona a criação do conteúdo e o outro supervisiona a revisão. - -O criador de conteúdo é como um modelo somente `Decoder`, ele pode olhar para o tópico e ver o que você já escreveu e então ele pode escrever um curso com base nisso. Eles são muito bons em escrever conteúdo envolvente e informativo, mas não são muito bons em entender o tópico e os objetivos de aprendizado. Alguns exemplos de modelos Decodificadores são os modelos da família GPT, como o GPT-3. - -O revisor é como um modelo somente `Encoder`, eles olham para o curso escrito e as respostas, percebendo a relação entre eles e entendendo o contexto, mas não são bons em gerar conteúdo. Um exemplo de modelo somente Codificador seria o BERT. - -Imagine que também podemos ter alguém que possa criar e revisar o questionário, este é um modelo `Encoder-Decoder`. Alguns exemplos seriam `BART` e `T5`. - -### Serviço versus Modelo - -Agora, vamos falar sobre a diferença entre um serviço e um modelo. Um serviço é um produto oferecido por um Provedor de Serviços em Nuvem e é frequentemente uma combinação de modelos, dados e outros componentes. Um modelo é o componente central de um serviço e é frequentemente um modelo fundamental, como um LLM. - -Os serviços são frequentemente otimizados para uso em produção e muitas vezes são mais fáceis de usar do que os modelos, por meio de uma interface gráfica de usuário. No entanto, os serviços nem sempre estão disponíveis gratuitamente e podem exigir uma assinatura ou pagamento para uso, em troca de aproveitar os recursos e equipamentos do proprietário do serviço, otimizando despesas e escalando facilmente. Um exemplo de serviço é o [Serviço do Azure OpenAI](https://learn.microsoft.com/azure/ai-services/openai/overview?WT.mc_id=academic-105485-koreyst), que oferece um plano de tarifas pay-as-you-go, o que significa que os usuários são cobrados de acordo com o quanto usam o serviço. Além disso, o serviço do Azure OpenAI oferece segurança de nível empresarial e um framework de IA responsável sobre as capacidades dos modelos. - -Os modelos são apenas as Redes Neurais, com parâmetros, pesos e outros. Isso permite que as empresas os executem localmente. No entanto, elas precisariam comprar equipamentos, criar uma estrutura para escalar e adquirir uma licença ou usar um modelo de código aberto. Um modelo como o `LLaMA` está disponível para uso, exigindo poder computacional para executar o modelo. - -## Como testar e iterar com diferentes modelos para entender o desempenho no Azure - -Depois que nossa equipe explorou o cenário atual dos LLMs e identificou alguns bons candidatos para seus cenários, o próximo passo é testá-los em seus dados e carga de trabalho. Isso é um processo iterativo, feito por meio de experimentos e medições. -A maioria dos modelos mencionados nos parágrafos anteriores (modelos da OpenAI, modelos de código aberto como `Llama2` e `Hugging Face transformers`) está disponível no [Foundation Models](https://learn.microsoft.com/azure/machine-learning/concept-foundation-models?WT.mc_id=academic-105485-koreyst) no [Azure Machine Learning studio](https://ml.azure.com/?WT.mc_id=academic-105485-koreyst). - -[Azure Machine Learning](https://azure.microsoft.com/products/machine-learning/?WT.mc_id=academic-105485-koreyst) é um serviço em nuvem projetado para Cientistas de Dados e Engenheiros de Machine Learning que gerenciam o ciclo completo de Aprendizado de Máquina (treinamento, teste, implantação e gerenciamento de MLOps) em uma única plataforma. O Machine Learning Studio oferece uma interface gráfica de usuário para este serviço e permite ao usuário: - -- Encontrar o Foundation Model de interesse no catálogo, filtrando por tarefa, licença ou nome. Também é possível importar novos modelos que ainda não estejam incluídos no catálogo. -- Analisar o cartão do modelo, incluindo uma descrição detalhada e exemplos de código, e testá-lo com o widget de Inferência de Amostra, fornecendo um prompt de amostra para testar o resultado. - -![Cartão do Modelo](../../images/Llama1.png?WT.mc_id=academic-105485-koreyst) - -- Avaliar o desempenho do modelo com métricas de avaliação objetivas em uma carga de trabalho específica e um conjunto de dados específico fornecido como entrada. - -![Avaliação do Modelo](../../images/Llama2.png?WT.mc_id=academic-105485-koreyst) - -- Ajustar o modelo com dados de treinamento personalizados para melhorar o desempenho do modelo em uma carga de trabalho específica, aproveitando as capacidades de experimentação e rastreamento do Aprendizado de Máquina do Azure. - -![Ajuste do Modelo](../../images/Llama3.png?WT.mc_id=academic-105485-koreyst) - -- Implante o modelo pré-treinado original ou a versão ajustada a um ponto de extremidade remoto em tempo real ou por lote, para permitir que aplicativos o consumam. - -![Implantação do Modelo](../../images/Llama4.png?WT.mc_id=academic-105485-koreyst) - -## Melhorando os Resultados dos LLMs - -Exploramos com nossa equipe de startup diferentes tipos de Modelos de Linguagem de Grande Escala (LLMs) e uma Plataforma em Nuvem (Azure Machine Learning) que nos permite comparar diferentes modelos, avaliá-los em dados de teste, melhorar o desempenho e implantá-los em pontos de extremidade de inferência. - -Mas quando eles devem considerar o ajuste fino de um modelo em vez de usar um pré-treinado? Existem outras abordagens para melhorar o desempenho do modelo em cargas de trabalho específicas? - -Existem várias abordagens que uma empresa pode usar para obter os resultados desejados de um LLM, você pode selecionar diferentes tipos de modelos com diferentes graus de treinamento. - -Implantar um LLM em produção, com diferentes níveis de complexidade, custo e qualidade. Aqui estão algumas abordagens diferentes: - -- **Engenharia de prompts com contexto**: a ideia é fornecer contexto suficiente ao formular o prompt para garantir que você obtenha as respostas de que precisa. - -- **Geração Aprimorada com Recuperação, RAG**: seus dados podem existir em um banco de dados ou ponto de extremidade da web, por exemplo. Para garantir que esses dados, ou um subconjunto deles, estejam incluídos no momento do prompt, você pode buscar os dados relevantes e torná-los parte do prompt do usuário. - -- **Modelo ajustado fino**: nesse caso, você treinou o modelo ainda mais com seus próprios dados, o que torna o modelo mais preciso e responsivo às suas necessidades, mas pode ser custoso. - -![Implantação de LLMs](../../images/Deploy.png?WT.mc_id=academic-105485-koreyst) - -Fonte da imagem: [Quatro Maneiras de Empresas Implatarem LLMs | Blog Fiddler AI](https://www.fiddler.ai/blog/four-ways-that-enterprises-deploy-llms?WT.mc_id=academic-105485-koreyst) - -### Engenharia de Prompts com Contexto - -Os LLMs pré-treinados funcionam muito bem em tarefas de linguagem natural generalizadas, mesmo quando chamados com um prompt curto, como uma frase a ser completada ou uma pergunta - o chamado "aprendizado de zero-shot". - -No entanto, quanto mais o usuário puder estruturar sua consulta, com uma solicitação detalhada e exemplos (o Contexto) mais precisa e próxima das expectativas do usuário será a resposta. Nesse caso, falamos de "aprendizado de um único exemplo" se o prompt incluir apenas um exemplo e "aprendizado de alguns exemplos" se incluir vários exemplos. -A Engenharia de Prompts com contexto é a abordagem mais econômica para começar. - -### Recuperação de Geração Aumentada (RAG) - -Os LLMs têm a limitação de que só podem usar os dados que foram usados durante seu treinamento para gerar uma resposta. Isso significa que eles não sabem nada sobre os fatos que ocorreram após seu processo de treinamento e não podem acessar informações não públicas (como dados de uma empresa). -Isso pode ser superado por meio do `RAG`, uma técnica que amplia o prompt com dados externos na forma de trechos de documentos, considerando limites de comprimento do prompt. Isso é suportado por ferramentas de banco de dados vetoriais (como [Azure Vector Search](https://learn.microsoft.com/azure/search/vector-search-overview?WT.mc_id=academic-105485-koreyst)) que recuperam trechos úteis de várias fontes de dados predefinidas e os adicionam ao Contexto do prompt. - -Essa técnica é muito útil quando uma empresa não possui dados suficientes, tempo suficiente ou recursos para ajustar finamente um LLM, mas ainda deseja melhorar o desempenho em uma carga de trabalho específica e reduzir os riscos de alucinações. Ou seja, mistificação da realidade ou conteúdo prejudicial. - -### Modelo Ajustado Fino - -O ajuste fino é um processo que alavanca a aprendizagem por transferência para 'adaptar' o modelo a uma tarefa subsequente ou para resolver um problema específico. Diferentemente do aprendizado de alguns exemplos e do RAG, ele resulta na geração de um novo modelo, com pesos e vieses atualizados. Isso requer um conjunto de exemplos de treinamento consistindo de uma única entrada (o prompt) e sua saída associada (a conclusão). -Essa seria a abordagem preferida se: - -- **Usando modelos ajustados finamente**: Uma empresa deseja usar modelos menos capazes ajustados finamente (como modelos de incorporação) em vez de modelos de alto desempenho, resultando em uma solução mais econômica e rápida. - -- **Considerando a latência**: A latência é importante para um caso de uso específico, portanto, não é possível usar prompts muito longos ou o número de exemplos que devem ser aprendidos a partir do modelo não se encaixa no limite de comprimento do prompt. - -- **Mantendo-se atualizado**: Uma empresa possui muitos dados de alta qualidade e rótulos de verdade fundamentais e os recursos necessários para manter esses dados atualizados ao longo do tempo. - -### Modelo Treinado - -Treinar um LLM a partir do zero é, sem dúvida, a abordagem mais difícil e complexa de adotar, exigindo enormes quantidades de dados, recursos qualificados e poder computacional adequado. Essa opção deve ser considerada apenas em um cenário em que uma empresa possui um caso de uso específico de domínio e uma grande quantidade de dados centrados no domínio. - -## Verificação de Conhecimento - -Qual poderia ser uma boa abordagem para melhorar os resultados de completude do LLM? - -1. Engenharia de prompts com contexto -1. RAG -1. Modelo ajustado fino - -R: 3 Pois, se você tem o tempo, os recursos e dados de alta qualidade, o ajuste fino é a melhor opção para se manter atualizado. No entanto, se você está procurando melhorar as coisas e está com pouco tempo, vale a pena considerar o RAG primeiro. - -## 🚀 Desafio - -Saiba mais sobre como você pode [usar o RAG](https://learn.microsoft.com/azure/search/retrieval-augmented-generation-overview?WT.mc_id=academic-105485-koreyst) para o seu negócio. - -## Ótimo Trabalho, Continue com Seu Aprendizado - -Deseja aprender mais sobre diferentes conceitos de IA Generativa? Acesse a [página de aprendizado contínuo](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) para encontrar outros ótimos recursos sobre este tópico. - -Vamos para a Lição 3, onde veremos como podemos [Criar IA Generativa de forma Responsável](../../../03-using-generative-ai-responsibly/translations/pt-br/README.md?WT.mc_id=academic-105485-koreyst)! diff --git a/02-exploring-and-comparing-different-llms/translations/tr/README.md b/02-exploring-and-comparing-different-llms/translations/tr/README.md deleted file mode 100644 index 33fb476db5..0000000000 --- a/02-exploring-and-comparing-different-llms/translations/tr/README.md +++ /dev/null @@ -1,203 +0,0 @@ -# Farklı LLM'leri Keşfetme ve Karşılaştırma - -[![Farklı LLM'leri Keşfetme ve Karşılaştırma](../../images/02-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson2-gh?WT.mc_id=academic-105485-koreyst) - -> _Bu dersin videosunu izlemek için yukarıdaki görsele tıklayın_ - -Önceki derste, Üretici Yapay Zeka'nın teknoloji dünyasını nasıl değiştirdiğini, Büyük Dil Modellerinin (LLM'ler) nasıl çalıştığını ve bir işletmenin - bizim startup'ımız gibi - bunları kendi kullanım senaryolarına nasıl uygulayıp büyüyebileceğini gördük. Bu bölümde, farklı büyük dil modellerini (LLM'ler) karşılaştırarak avantaj ve dezavantajlarını anlamaya çalışacağız. - -Startup'ımızın yolculuğundaki bir sonraki adım, mevcut LLM'lerin durumunu keşfetmek ve hangilerinin kullanım senaryomuz için uygun olduğunu anlamaktır. - -## Giriş - -Bu ders şunları kapsayacak: - -- Mevcut LLM türleri. -- Azure'da kullanım senaryonuz için farklı modelleri test etme, yineleme ve karşılaştırma. -- Bir LLM'in nasıl dağıtılacağı. - -## Öğrenme Hedefleri - -Bu dersi tamamladıktan sonra: - -- Kullanım senaryonuz için doğru modeli seçebilecek, -- Modelinizin performansını nasıl test edeceğinizi, yineleyeceğinizi ve iyileştireceğinizi anlayacak, -- İşletmelerin modelleri nasıl dağıttığını bileceksiniz. - -## Farklı LLM Türlerini Anlama - -LLM'ler mimarilerine, eğitim verilerine ve kullanım senaryolarına göre birden fazla kategoriye ayrılabilir. Bu farklılıkları anlamak, startup'ımızın senaryo için doğru modeli seçmesine ve modelin performansını nasıl test edeceğini, yineleyeceğini ve iyileştireceğini anlamasına yardımcı olacaktır. - -Birçok farklı LLM modeli türü vardır, model seçiminiz bunları ne için kullanmayı amaçladığınıza, verilerinize, ne kadar ödeme yapmaya hazır olduğunuza ve daha fazlasına bağlıdır. - -Modelleri metin, ses, video, görüntü oluşturma vb. için kullanmayı amaçlamanıza bağlı olarak, farklı bir model türünü seçebilirsiniz. - -- **Ses ve konuşma tanıma**. Bu amaç için, Whisper tipi modeller genel amaçlı ve konuşma tanımaya yönelik oldukları için harika bir seçimdir. Çeşitli ses verileriyle eğitilmiştir ve çok dilli konuşma tanıma yapabilir. [Whisper tipi modeller hakkında buradan](https://platform.openai.com/docs/models/whisper?WT.mc_id=academic-105485-koreyst) daha fazla bilgi edinebilirsiniz. - -- **Görüntü oluşturma**. Görüntü oluşturma için, DALL-E ve Midjourney çok iyi bilinen iki seçenektir. DALL-E, Azure OpenAI tarafından sunulmaktadır. [DALL-E hakkında buradan](https://platform.openai.com/docs/models/dall-e?WT.mc_id=academic-105485-koreyst) ve bu müfredatın 9. Bölümünden daha fazla bilgi edinebilirsiniz. - -- **Metin oluşturma**. Çoğu model metin oluşturma üzerine eğitilmiştir ve GPT-3.5'ten GPT-4'e kadar geniş bir seçenek yelpazesine sahipsiniz. GPT-4'ün en pahalı olduğu farklı maliyetlerle gelirler. Yetenek ve maliyet açısından hangi modellerin ihtiyaçlarınıza en uygun olduğunu değerlendirmek için [Azure OpenAI playground](https://oai.azure.com/portal/playground?WT.mc_id=academic-105485-koreyst)'a göz atmanızda fayda var. - -- **Çoklu modalite**. Girdi ve çıktıda birden fazla veri türünü işlemeyi düşünüyorsanız, doğal dil işlemeyi görsel anlama ile birleştirebilen ve çoklu modal arayüzler aracılığıyla etkileşime olanak tanıyan [gpt-4 turbo with vision veya gpt-4](https://learn.microsoft.com/azure/ai-services/openai/concepts/models#gpt-4-and-gpt-4-turbo-models?WT.mc_id=academic-105485-koreyst) gibi modellere - OpenAI modellerinin en son sürümlerine - bakabilirsiniz. - -Bir model seçmek, temel yetenekler elde etmek anlamına gelir, ancak bu her zaman yeterli olmayabilir. Çoğu zaman, modelinize şirketinize özel verileri aktarmanız gerekir. Bunu yapmanın birkaç farklı yolu vardır; bunlara ilerleyen bölümlerde daha ayrıntılı değineceğiz. - -### Temel Modeller ve Büyük Dil Modelleri (LLM'ler) - -"Temel Model" terimi, [Stanford araştırmacıları tarafından ortaya atılmıştır](https://arxiv.org/abs/2108.07258?WT.mc_id=academic-105485-koreyst) ve şu kriterleri karşılayan yapay zeka modellerini tanımlamak için kullanılır: - -- **Denetimsiz öğrenme veya kendi kendine denetimli öğrenme ile eğitilirler**, etiketlenmemiş çok modlu verilerle eğitildikleri ve eğitim süreçlerinde insan tarafından yapılan veri açıklamalarına veya etiketlemelere ihtiyaç duymadıkları anlamına gelir. -- **Çok büyük modellerdir**, milyarlarca parametre içeren çok derin sinir ağlarına dayanırlar. -- **Diğer modeller için bir "temel" olarak kullanılmaları amaçlanır**, başka modellerin bu temel model üzerine inşa edilebileceği anlamına gelir; bu işlem genellikle ince ayar (fine-tuning) ile gerçekleştirilir. - -![Temel Modeller ve LLM'ler](../../images/FoundationModel.png?WT.mc_id=academic-105485-koreyst) - -Görsel kaynağı: [Essential Guide to Foundation Models and Large Language Models | Babar M Bhatti tarafından | Medium -](https://thebabar.medium.com/essential-guide-to-foundation-models-and-large-language-models-27dab58f7404) - -Bu ayrımı daha net hale getirmek için ChatGPT'yi örnek alalım. ChatGPT'nin ilk versiyonunu oluşturmak için GPT-3.5 adlı bir model temel model olarak kullanıldı. Yani, OpenAI, GPT-3.5 modelini sohbet senaryolarında daha iyi performans gösterecek şekilde özel sohbet verileriyle özelleştirdi. - -![Temel Model](../../images/Multimodal.png?WT.mc_id=academic-105485-koreyst) - -Görsel Kaynağı: [2108.07258.pdf (arxiv.org)](https://arxiv.org/pdf/2108.07258.pdf?WT.mc_id=academic-105485-koreyst) - -### Açık Kaynak ve Tescilli Modeller - -Bir başka LLM kategorisi, modellerin açık kaynak mı yoksa tescilli mi olduğuna dayalıdır. - -Açık kaynak modeller, halka açık olan ve herkes tarafından kullanılabilen modellerdir. Genellikle modelin geliştiricileri veya araştırma toplulukları tarafından yayımlanırlar. Bu modeller incelenebilir, değiştirilebilir ve farklı kullanım senaryolarına göre özelleştirilebilir. Ancak, her zaman üretim kullanımı için optimize edilmemiş olabilirler ve tescilli modellere kıyasla performans açısından daha zayıf olabilirler. Ayrıca, açık kaynak modellerin finansmanı sınırlı olabilir, uzun vadede bakımları sağlanamayabilir veya en son araştırmalarla güncellenmeyebilirler. Popüler açık kaynak modellere örnek olarak [Alpaca](https://crfm.stanford.edu/2023/03/13/alpaca.html?WT.mc_id=academic-105485-koreyst), [Bloom](https://huggingface.co/bigscience/bloom) ve [LLaMA](https://llama.meta.com) verilebilir. - -Tescilli modeller, bir şirketin sahip olduğu ve halka açık olmayan modellerdir. Genellikle üretim ortamı için optimize edilmiştir. Ancak, kullanıcılar bu modelleri inceleyemez, değiştiremez veya farklı kullanım senaryolarına göre özelleştiremez. Ayrıca, genellikle ücretsiz olarak sunulmazlar ve kullanım için abonelik veya ödeme gerektirebilirler. Kullanıcılar, modelin eğitiminde kullanılan veriler üzerinde kontrole sahip olamazlar ve veri gizliliği ile sorumlu yapay zeka ilkelerinin model sahibi tarafından sağlanmasına güvenmek zorundadırlar. Popüler tescilli modellere örnek olarak [OpenAI modelleri](https://platform.openai.com/docs/models/overview?WT.mc_id=academic-105485-koreyst), [Google Bard](https://sapling.ai/llm/bard?WT.mc_id=academic-105485-koreyst) ve [Claude 2](https://www.anthropic.com/index/claude-2?WT.mc_id=academic-105485-koreyst) verilebilir. - -### Gömme, Görüntü Üretimi ve Metin/Kod Üretimi - -LLM'ler, ürettikleri çıktılara göre de kategorize edilebili - -Gömme (Embedding) modelleri, metni sayısal bir forma dönüştürerek makinelerin kelimeler veya cümleler arasındaki ilişkileri anlamasını sağlar. Bu modeller genellikle sınıflandırma veya kümeleme gibi diğer yapay zeka modelleri için giriş verisi olarak kullanılır. Örneğin [OpenAI embedding modelleri](https://platform.openai.com/docs/models/embeddings?WT.mc_id=academic-105485-koreyst). - -![Gömme (Embedding)](../../images/Embedding.png?WT.mc_id=academic-105485-koreyst) - -Görüntü Üretimi modelleri, yeni görüntüler oluşturabilir veya mevcut görüntüleri düzenleyebilir. Örneğin, [LAION-5B](https://laion.ai/blog/laion-5b/?WT.mc_id=academic-105485-koreyst), [DALL-E-3](https://openai.com/dall-e-3?WT.mc_id=academic-105485-koreyst) ve [Stable Diffusion models](https://github.com/Stability-AI/StableDiffusion?WT.mc_id=academic-105485-koreyst). - -![Görsel oluşturucu](../../images/Image.png?WT.mc_id=academic-105485-koreyst) - -Metin ve kod oluşturma modelleri, metin veya kod üreten modellerdir. Bu modeller genellikle metin özetleme, çeviri ve soru-cevap gibi görevler için kullanılır. Metin oluşturma modelleri genellikle [BookCorpus](https://www.cv-foundation.org/openaccess/content_iccv_2015/html/Zhu_Aligning_Books_and_ICCV_2015_paper.html?WT.mc_id=academic-105485-koreyst) gibi büyük metin veri kümeleri üzerinde eğitilir ve yeni metinler oluşturmak veya soruları yanıtlamak için kullanılabilir. Kod oluşturma modelleri, [CodeParrot](https://huggingface.co/codeparrot?WT.mc_id=academic-105485-koreyst) gibi, genellikle GitHub gibi büyük kod veri kümeleri üzerinde eğitilir ve yeni kod üretmek veya mevcut koddaki hataları düzeltmek için kullanılabilir. - -![Metin ve Kod Oluşturucu](../../images/Text.png?WT.mc_id=academic-105485-koreyst) - -### Kodlayıcı-Kod Çözücü ve Sadece Kod Çözücü Karşılaştırması - -LLM'lerin farklı mimari türleri hakkında konuşmak için bir benzetme kullanalım. - -Yöneticinizin size öğrenciler için bir sınav yazma görevi verdiğini düşünün. İki iş arkadaşınız var; biri içeriği oluşturmaktan, diğeri ise bunları gözden geçirmekten sorumlu. - -İçerik oluşturucu, sadece Kod Çözücü model gibidir, konuya bakabilir ve zaten yazdıklarınızı görebilir ve buna dayanarak bir ders yazabilir. İlgi çekici ve bilgilendirici içerik yazmakta çok iyidirler, ancak konuyu ve öğrenme hedeflerini anlamakta çok iyi değildirler. Kod Çözücü modellere örnek olarak GPT-3 gibi GPT ailesi modelleri verilebilir. - -İnceleyici, sadece Kodlayıcı model gibidir, yazılan dersi ve cevapları inceler, aralarındaki ilişkiyi fark eder ve bağlamı anlar, ancak içerik üretmekte iyi değildir. Sadece Kodlayıcı modele örnek olarak BERT verilebilir. - -Sınavı hem oluşturabilen hem de gözden geçirebilen birisine de sahip olabileceğimizi düşünün, bu bir Kodlayıcı-Kod Çözücü modeldir. BART ve T5 buna örnek olarak verilebilir. - -### Hizmet ve Model Karşılaştırması - -Şimdi, bir hizmet ve model arasındaki farkı konuşalım. Hizmet, bir Bulut Hizmet Sağlayıcısı tarafından sunulan bir üründür ve genellikle modeller, veriler ve diğer bileşenlerin bir kombinasyonudur. Model, bir hizmetin temel bileşenidir ve genellikle LLM gibi bir temel modeldir. - -Hizmetler genellikle üretim kullanımı için optimize edilmiştir ve grafiksel kullanıcı arayüzü sayesinde modellerden daha kolay kullanılır. Ancak, hizmetler her zaman ücretsiz değildir ve hizmet sahibinin ekipman ve kaynaklarından yararlanmak, giderleri optimize etmek ve kolayca ölçeklendirmek karşılığında kullanmak için abonelik veya ödeme gerektirebilir. Bir hizmet örneği olarak [Azure OpenAI Service](https://learn.microsoft.com/azure/ai-services/openai/overview?WT.mc_id=academic-105485-koreyst) verilebilir; kullandıkça öde fiyatlandırma planı sunar, yani kullanıcılar hizmeti ne kadar kullandıklarına göre orantılı olarak ücretlendirilir. Ayrıca, Azure OpenAI Service, modellerin yeteneklerinin üzerine kurumsal düzeyde güvenlik ve sorumlu yapay zeka çerçevesi sunar. - -Modeller sadece parametreler, ağırlıklar ve diğerleriyle birlikte Sinir Ağıdır. Şirketlerin yerel olarak çalıştırmasına izin vermek için ekipman satın almaları, ölçeklendirme için bir yapı kurmaları ve lisans satın almaları veya açık kaynaklı bir model kullanmaları gerekir. LLaMA gibi bir model kullanılabilir durumdadır, ancak modeli çalıştırmak için hesaplama gücü gerektirir. - -## Azure'da Farklı Modellerin Performansını Anlamak İçin Test ve Yineleme - -Ekibimiz mevcut LLM'lerin durumunu keşfettikten ve senaryoları için iyi adayları belirledikten sonra, bir sonraki adım bunları kendi verileri ve iş yükleri üzerinde test etmektir. Bu, deneyler ve ölçümlerle yapılan yinelemeli bir süreçtir. -Önceki paragraflarda bahsettiğimiz modellerin çoğu (OpenAI modelleri, Llama2 gibi açık kaynak modeller ve Hugging Face dönüştürücüleri) [Azure AI Studio](https://ai.azure.com/?WT.mc_id=academic-105485-koreyst)'daki [Model Kataloğu](https://learn.microsoft.com/azure/ai-studio/how-to/model-catalog-overview?WT.mc_id=academic-105485-koreyst)'nda mevcuttur. - -[Azure AI Studio](https://learn.microsoft.com/azure/ai-studio/what-is-ai-studio?WT.mc_id=academic-105485-koreyst), geliştiricilerin üretici yapay zeka uygulamaları oluşturması ve tüm geliştirme yaşam döngüsünü - denemeden değerlendirmeye kadar - kullanışlı bir GUI ile tüm Azure AI hizmetlerini tek bir merkezde birleştirerek yönetmesi için tasarlanmış bir Bulut Platformudur. Azure AI Studio'daki Model Kataloğu kullanıcıya şunları sağlar: - -- Katalogda ilgilenilen Temel Modeli bulma - özel veya açık kaynak, görev, lisans veya ada göre filtreleme. Aranabilirliği artırmak için modeller Azure OpenAI koleksiyonu, Hugging Face koleksiyonu ve daha fazlası gibi koleksiyonlara ayrılmıştır. - -![Model kataloğu](../../images/AzureAIStudioModelCatalog.png?WT.mc_id=academic-105485-koreyst) - -- Model kartını inceleme, amaçlanan kullanım ve eğitim verileri hakkında ayrıntılı açıklama, kod örnekleri ve dahili değerlendirmeler kütüphanesindeki değerlendirme sonuçları dahil. - -![Model kartı](../../images/ModelCard.png?WT.mc_id=academic-105485-koreyst) - -- İş senaryosuna uygun olanı değerlendirmek için [Model Karşılaştırmaları](https://learn.microsoft.com/azure/ai-studio/how-to/model-benchmarks?WT.mc_id=academic-105485-koreyst) paneli aracılığıyla sektörde mevcut modeller ve veri setleri arasında karşılaştırma yapma. - -![Model karşılaştırmaları](../../images/ModelBenchmarks.png?WT.mc_id=academic-105485-koreyst) - -- Azure AI Studio'nun deneme ve izleme yeteneklerinden yararlanarak, belirli bir iş yükünde model performansını iyileştirmek için modeli özel eğitim verileri üzerinde ince ayarlama. - -![Model ince ayarı](../../images/FineTuning.png?WT.mc_id=academic-105485-koreyst) - -- Uygulamaların tüketebilmesi için orijinal önceden eğitilmiş modeli veya ince ayarlı versiyonu uzak gerçek zamanlı çıkarım - yönetilen hesaplama - veya sunucusuz api uç noktasına - [kullandıkça öde](https://learn.microsoft.com/azure/ai-studio/how-to/model-catalog-overview#model-deployment-managed-compute-and-serverless-api-pay-as-you-go?WT.mc_id=academic-105485-koreyst) - dağıtma. - -![Model dağıtımı](../../images/ModelDeploy.png?WT.mc_id=academic-105485-koreyst) - -> [!NOT] -> Katalogdaki tüm modeller şu anda ince ayar ve/veya kullandıkça öde dağıtımı için mevcut değildir. Model yetenekleri ve sınırlamaları hakkında ayrıntılar için model kartını kontrol edin. - -## LLM Sonuçlarını İyileştirme - -Startup ekibimizle farklı LLM türlerini ve farklı modelleri karşılaştırmamızı, test verileri üzerinde değerlendirmemizi, performansı iyileştirmemizi ve çıkarım uç noktalarına dağıtmamızı sağlayan bir Bulut Platformunu (Azure Machine Learning) keşfettik. - -Peki önceden eğitilmiş bir model kullanmak yerine ne zaman bir modeli ince ayarlamayı düşünmeliler? Belirli iş yüklerinde model performansını iyileştirmek için başka yaklaşımlar var mı? - -Bir işletmenin bir LLM'den ihtiyaç duyduğu sonuçları alması için kullanabileceği birkaç yaklaşım vardır. Üretimde bir LLM dağıtırken farklı karmaşıklık, maliyet ve kalite seviyeleriyle farklı eğitim derecelerine sahip farklı model türleri seçebilirsiniz. İşte bazı farklı yaklaşımlar: - -- **Bağlamla istem mühendisliği**. Fikir, ihtiyacınız olan yanıtları aldığınızdan emin olmak için istem verirken yeterli bağlam sağlamaktır. - -- **Geri Alma Artırılmış Üretim, RAG**. Verileriniz örneğin bir veritabanında veya web uç noktasında bulunabilir, bu verinin veya bir alt kümesinin istem zamanında dahil edilmesini sağlamak için ilgili verileri alabilir ve kullanıcının isteminin bir parçası haline getirebilirsiniz. - -- **İnce ayarlı model**. Burada, modeli kendi verileriniz üzerinde daha fazla eğittiniz, bu da modelin ihtiyaçlarınıza daha kesin ve duyarlı olmasını sağladı ancak maliyetli olabilir. - -![LLM'lerin dağıtımı](../../images/Deploy.png?WT.mc_id=academic-105485-koreyst) - -Görsel kaynağı: [İşletmelerin LLM'leri Dağıtmasının Dört Yolu | Fiddler AI Blog](https://www.fiddler.ai/blog/four-ways-that-enterprises-deploy-llms?WT.mc_id=academic-105485-koreyst) - -### Bağlamla İstem Mühendisliği - -Önceden eğitilmiş LLM'ler, kısa bir istemle bile - tamamlanacak bir cümle veya bir soru gibi - genel doğal dil görevlerinde çok iyi çalışır - buna "sıfır-atış" öğrenme denir. - -Ancak, kullanıcı sorgusunu ne kadar detaylı bir istek ve örneklerle - Bağlam - çerçeveleyebilirse, yanıt o kadar doğru ve kullanıcının beklentilerine yakın olacaktır. Bu durumda, istem yalnızca bir örnek içeriyorsa "tek-atış" öğrenmeden, birden fazla örnek içeriyorsa "az-atış öğrenme"den bahsederiz. -Bağlamla istem mühendisliği, başlamak için en maliyet-etkin yaklaşımdır. - -### Geri Alma Artırılmış Üretim (RAG) - -LLM'ler yalnızca eğitimleri sırasında kullanılan verileri bir yanıt üretmek için kullanabilme sınırlamasına sahiptir. Bu, eğitim süreçlerinden sonra gerçekleşen olaylar hakkında hiçbir şey bilmedikleri ve halka açık olmayan bilgilere (şirket verileri gibi) erişemedikleri anlamına gelir. -Bu, RAG ile aşılabilir; istem uzunluğu sınırlarını dikkate alarak, belge parçaları şeklinde dış verilerle istemi artıran bir tekniktir. Bu, çeşitli önceden tanımlanmış veri kaynaklarından yararlı parçaları alan ve bunları istem Bağlamına ekleyen Vektör veritabanı araçları (örneğin [Azure Vector Search](https://learn.microsoft.com/azure/search/vector-search-overview?WT.mc_id=academic-105485-koreyst)) tarafından desteklenir. - -Bu teknik, bir işletmenin bir LLM'yi ince ayarlamak için yeterli verisi, zamanı veya kaynağı olmadığında, ancak yine de belirli bir iş yükünde performansı iyileştirmek ve uydurma risklerini azaltmak istediğinde çok yararlıdır, yani gerçeğin mistifikasyonu veya zararlı içerik. - -### İnce Ayarlı Model - -İnce ayarlama, modeli bir alt görev için 'uyarlamak' veya belirli bir sorunu çözmek için transfer öğrenmeden yararlanan bir süreçtir. Az-atış öğrenme ve RAG'den farklı olarak, güncellenmiş ağırlıklar ve yanlılıklarla yeni bir model oluşturulmasıyla sonuçlanır. Tek bir girdi (istem) ve ilişkili çıktısından (tamamlama) oluşan bir eğitim örnekleri seti gerektirir. -Şu durumlarda tercih edilen yaklaşım olacaktır: - -- **İnce ayarlı modeller kullanma**. Bir işletme, daha maliyet etkin ve hızlı bir çözümle sonuçlanan yüksek performanslı modeller yerine ince ayarlı daha az yetenekli modeller (gömme modelleri gibi) kullanmak isteyebilir. - -- **Gecikmeyi dikkate alma**. Belirli bir kullanım senaryosu için gecikme önemlidir, bu nedenle çok uzun istemler kullanmak mümkün değildir veya modelden öğrenilmesi gereken örnek sayısı istem uzunluğu sınırına uymaz. - -- **Güncel kalma**. Bir işletmenin çok sayıda yüksek kaliteli verisi ve temel gerçek etiketleri ile bu verileri zaman içinde güncel tutmak için gereken kaynakları vardır. - -### Eğitilmiş Model - -Sıfırdan bir LLM eğitmek şüphesiz benimsenmesi en zor ve en karmaşık yaklaşımdır, büyük miktarda veri, yetenekli kaynaklar ve uygun hesaplama gücü gerektirir. Bu seçenek yalnızca bir işletmenin alana özgü bir kullanım senaryosu ve büyük miktarda alan merkezli verisi olduğu bir senaryoda düşünülmelidir. - -## Bilgi Kontrolü - -LLM tamamlama sonuçlarını iyileştirmek için iyi bir yaklaşım ne olabilir? - -1. Bağlamla istem mühendisliği -2. RAG -3. İnce ayarlı model - -C:3, eğer zamanınız, kaynaklarınız ve yüksek kaliteli verileriniz varsa, güncel kalmak için ince ayarlama daha iyi bir seçenektir. Ancak, işleri iyileştirmek istiyorsanız ve zamanınız kısıtlıysa, önce RAG'ı düşünmek faydalı olabilir. - -## 🚀 Challenge - -İşletmeniz için [RAG'ı nasıl kullanabileceğiniz](https://learn.microsoft.com/azure/search/retrieval-augmented-generation-overview?WT.mc_id=academic-105485-koreyst) hakkında daha fazla bilgi edinin. - -## Harika İş, Öğrenmeye Devam Edin - -Bu dersi tamamladıktan sonra, Üretici Yapay Zeka bilginizi artırmaya devam etmek için [Üretici Yapay Zeka Öğrenme koleksiyonumuza](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) göz atın! - -[Üretici Yapay Zeka'yı Sorumlu Bir Şekilde Oluşturma](../../../03-using-generative-ai-responsibly/README.md?WT.mc_id=academic-105485-koreyst) konusunu inceleyeceğimiz Ders 3'e geçin! diff --git a/02-exploring-and-comparing-different-llms/translations/tw/README.md b/02-exploring-and-comparing-different-llms/translations/tw/README.md deleted file mode 100644 index 695e824a7f..0000000000 --- a/02-exploring-and-comparing-different-llms/translations/tw/README.md +++ /dev/null @@ -1,204 +0,0 @@ -# 探索和比較不同的 LLMs - -[![探索和比較不同的 LLMs](../../images/02-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson2-gh?WT.mc_id=academic-105485-koreyst) - -> _點擊上方圖片觀看本課程的影片_ - -隨著上一課,我們已經看到生成式 AI 如何改變技術格局、大型語言模型(LLMs)如何運作以及企業(如我們的初創公司)如何將它們應用於其使用案例並成長!在本章中,我們將比較和對比不同類型的大型語言模型(LLMs),以了解它們的優缺點。 - -我們初創公司旅程的下一步是探索目前的LLM領域,並了解哪些適合我們的使用案例。 - -## 簡介 - -本課程將涵蓋: - -- 當前環境中不同類型的 LLMs。 -- 在 Azure 中測試、迭代和比較不同的模型以適應您的使用案例。 -- 如何部署 LLM。 - -## 學習目標 - -完成本課程後,你將能夠: - -- 選擇適合您使用案例的模型。 -- 了解如何測試、迭代和改進模型的性能。 -- 知道企業如何部署模型。 - -## 了解不同類型的 LLMs - -LLMs 可以根據其架構、訓練數據和使用案例進行多種分類。了解這些差異將幫助我們的初創公司為場景選擇合適的模型,並了解如何測試、迭代和改進性能。 - -有許多不同類型的 LLM 模型,你選擇的模型取決於你打算如何使用它們、你的數據、你準備支付多少以及更多。 - -根據您是否打算使用模型來生成文本、音訊、影片、圖像等,您可能會選擇不同類型的模型。 - -- **音訊和語音識別**. 為此目的,Whisper 型模型是一個很好的選擇,因為它們是通用的並且針對語音識別。它在多樣化的音訊上進行訓練,能夠執行多語言的語音識別。了解更多關於[Whisper 型模型](https://platform.openai.com/docs/models/whisper?WT.mc_id=academic-105485-koreyst)。 - -- **圖像生成**. 對於圖像生成,DALL-E 和 Midjourney 是兩個非常知名的選擇。DALL-E 由 Azure OpenAI 提供。 [閱讀更多關於 DALL-E 的資訊](https://platform.openai.com/docs/models/dall-e?WT.mc_id=academic-105485-koreyst) 以及本課程的第九章。 - -- **文本生成**. 大多數模型都是針對文本生成進行訓練的,您可以從 GPT-3.5 到 GPT-4 中選擇多種選擇。它們的成本不同,其中 GPT-4 是最昂貴的。值得查看 [Azure OpenAI playground](https://oai.azure.com/portal/playground?WT.mc_id=academic-105485-koreyst) 來評估哪個模型在能力和成本方面最適合您的需求。 - -- **多模態**. 如果您希望處理輸入和輸出中的多種類型數據,您可能需要查看像 [gpt-4 turbo with vision 或 gpt-4o](https://learn.microsoft.com/azure/ai-services/openai/concepts/models#gpt-4-and-gpt-4-turbo-models?WT.mc_id=academic-105485-koreyst) 這樣的模型 - 最新發布的 OpenAI 模型 - 它們能夠將自然語言處理與視覺理解相結合,通過多模態介面實現互動。 - -選擇一個模型意味著你會獲得一些基本功能,但這可能還不夠。通常你會有一些公司特定的數據需要告訴LLM。有幾種不同的方法可以解決這個問題,更多內容將在接下來的部分中介紹。 - -### Foundation Models versus LLMs - -術語 Foundation Model 由[史丹佛研究人員創造](https://arxiv.org/abs/2108.07258?WT.mc_id=academic-105485-koreyst),並定義為符合某些標準的 AI 模型,例如: - -- **它們使用無監督學習或自我監督學習進行訓練**, 意味著它們在未標記的多模態資料上進行訓練,並且不需要人類註釋或標記資料來進行訓練過程。 -- **它們是非常大的模型**, 基於非常深的神經網絡,訓練了數十億個參數。 -- **它們通常旨在作為其他模型的「基礎」**, 意味著它們可以作為其他模型的起點,通過微調來建構。 - -![Foundation Models versus LLMs](../../images/FoundationModel.png?WT.mc_id=academic-105485-koreyst) - -圖片來源: [Essential Guide to Foundation Models and Large Language Models | by Babar M Bhatti | Medium](https://thebabar.medium.com/essential-guide-to-foundation-models-and-large-language-models-27dab58f7404) - -為了進一步澄清這一區別,讓我們以ChatGPT為例。為了建構第一版的ChatGPT,一個名為GPT-3.5的模型作為基礎模型。這意味著OpenAI使用了一些特定於聊天的資料來建立一個調整過的GPT-3.5版本,專門在對話場景中表現良好,例如聊天機器人。 - -![Foundation Model](../../images/Multimodal.png?WT.mc_id=academic-105485-koreyst) - -圖片來源: [2108.07258.pdf (arxiv.org)](https://arxiv.org/pdf/2108.07258.pdf?WT.mc_id=academic-105485-koreyst)。 - -### 開放原始碼 versus 專有模型 - -另一種分類 LLMs 的方式是它們是開放原始碼還是專有的。 - -開放原始碼模型是公開提供給大眾使用的模型,任何人都可以使用。這些模型通常由創建它們的公司或研究社群提供。這些模型允許被檢查、修改和自訂,以適應LLM的各種使用案例。然而,它們並不總是針對生產使用進行最佳化,性能可能不如專有模型。此外,開放原始碼模型的資金可能有限,可能不會長期維護或更新最新的研究。受歡迎的開放原始碼模型範例包括[Alpaca](https://crfm.stanford.edu/2023/03/13/alpaca.html?WT.mc_id=academic-105485-koreyst)、[Bloom](https://huggingface.co/bigscience/bloom)和[LLaMA](https://llama.meta.com)。 - -專有模型是由公司擁有且不對公眾開放的模型。這些模型通常針對生產用途進行最佳化。然而,它們不允許被檢查、修改或針對不同的使用案例進行自訂。此外,它們並不總是免費提供,可能需要訂閱或支付費用才能使用。而且,使用者無法控制用於訓練模型的數據,這意味著他們應該信任模型擁有者來確保對數據隱私和負責任使用 AI 的承諾。流行的專有模型範例包括[OpenAI models](https://platform.openai.com/docs/models/overview?WT.mc_id=academic-105485-koreyst)、[Google Bard](https://sapling.ai/llm/bard?WT.mc_id=academic-105485-koreyst)或[Claude 2](https://www.anthropic.com/index/claude-2?WT.mc_id=academic-105485-koreyst)。 - -### 嵌入對比圖像生成對比文本和程式碼產生器 - -LLM 也可以根據它們生成的輸出來分類。 - -嵌入是一組可以將文本轉換為數字形式的模型,稱為嵌入,這是輸入文本的數字表示。嵌入使機器更容易理解單詞或句子之間的關係,並且可以作為其他模型的輸入,例如分類模型或在數據上表現更好的聚類模型。嵌入模型通常用於遷移學習,其中模型是為有大量數據的代理任務建構的,然後模型權重(嵌入)被重新用於其他下游任務。這類的範例是[OpenAI embeddings](https://platform.openai.com/docs/models/embeddings?WT.mc_id=academic-105485-koreyst)。 - -![嵌入](../../images/Embedding.png?WT.mc_id=academic-105485-koreyst) - -圖像生成模型是生成圖像的模型。這些模型通常用於圖像編輯、圖像合成和圖像翻譯。圖像生成模型通常在大型圖像數據集上進行訓練,例如 [LAION-5B](https://laion.ai/blog/laion-5b/?WT.mc_id=academic-105485-koreyst),並可用於生成新圖像或使用修補、超分辨率和上色技術編輯現有圖像。範例包括 [DALL-E-3](https://openai.com/dall-e-3?WT.mc_id=academic-105485-koreyst) 和 [Stable Diffusion models](https://github.com/Stability-AI/StableDiffusion?WT.mc_id=academic-105485-koreyst)。 - -![圖像生成](../../images/Image.png?WT.mc_id=academic-105485-koreyst) - -文本和程式碼產生器模型是生成文本或程式碼的模型。這些模型通常用於文本摘要、翻譯和問答。文本生成模型通常在大型文本數據集上訓練,例如[BookCorpus](https://www.cv-foundation.org/openaccess/content_iccv_2015/html/Zhu_Aligning_Books_and_ICCV_2015_paper.html?WT.mc_id=academic-105485-koreyst),可以用來生成新文本或回答問題。程式碼產生器模型,例如[CodeParrot](https://huggingface.co/codeparrot?WT.mc_id=academic-105485-koreyst),通常在大型程式碼數據集上訓練,例如GitHub,可以用來生成新程式碼或修復現有程式碼中的錯誤。 - -![文字和程式碼產生器](../../images/Text.png?WT.mc_id=academic-105485-koreyst) - -### 編碼器-解碼器與僅解碼器 - -為了討論不同類型的LLM架構,讓我們用一個類比來說明。 - -想像一下,你的經理給你一個任務,為學生編寫一個測驗。你有兩個同事;一個負責建立內容,另一個負責審查它們。 - -內容創作者就像一個解碼器模型,他們可以查看主題並看到你已經寫了什麼,然後基於此編寫課程。他們非常擅長撰寫引人入勝且資訊豐富的內容,但他們不太擅長理解主題和學習目標。一些解碼器模型的範例是GPT系列模型,例如GPT-3。 - -審查者就像一個僅有編碼器的模型,他們查看編寫的課程和答案,注意它們之間的關係並理解上下文,但他們不擅長生成內容。僅有編碼器模型的一個範例是BERT。 - -想像一下,我們也可以有一個人能夠建立和審查測驗,這是一個編碼器-解碼器模型。一些範例是 BART 和 T5。 - -### 服務 versus 模型 - -現在,讓我們來談談服務和模型之間的區別。服務是由雲服務提供商提供的產品,通常是模型、資料和其他元件的組合。模型是服務的核心元件,通常是一個基礎模型,例如一個 LLM。 - -服務通常針對生產使用進行最佳化,並且通常比模型更易於使用,通過圖形用戶界面。然而,服務並不總是免費提供,可能需要訂閱或支付費用來使用,以換取利用服務擁有者的設備和資源,優化開支並輕鬆擴展。服務的一個範例是[Azure OpenAI Service](https://learn.microsoft.com/azure/ai-services/openai/overview?WT.mc_id=academic-105485-koreyst),它提供按使用量計費的方案,這意味著用戶根據使用服務的多少按比例收費。此外,Azure OpenAI Service在模型的能力之上提供企業級安全性和負責任的 AI 框架。 - -模型只是神經網路,包含參數、權重等。允許公司在本地執行,然而需要購買設備、建構延展性結構並購買許可證或使用開放原始碼模型。像 LLaMA 這樣的模型可以使用,並需要計算能力來執行模型。 - -## 如何測試和反覆運算不同模型以了解在 Azure 上的性能 - -一旦我們的團隊探索了當前的 LLMs 版圖並確定了一些適合其場景的良好候選者,下一步就是在他們的數據和工作負載上測試它們。這是一個通過實驗和測量進行的迭代過程。 -我們在前幾段中提到的大多數模型(OpenAI 模型、開放原始碼模型如 Llama2 和 Hugging Face transformers)都可以在 [Model Catalog](https://learn.microsoft.com/azure/ai-studio/how-to/model-catalog-overview?WT.mc_id=academic-105485-koreyst) 中的 [Azure AI Studio](https://ai.azure.com/?WT.mc_id=academic-105485-koreyst) 找到。 - -[Azure AI Studio](https://learn.microsoft.com/azure/ai-studio/what-is-ai-studio?WT.mc_id=academic-105485-koreyst) 是一個雲端平台,專為開發人員設計,用於建構生成式 AI 應用程式並管理整個開發生命週期 - 從實驗到評估 - 將所有 Azure AI 服務整合到一個方便的 GUI 中。Azure AI Studio 中的模型目錄使使用者能夠: - -- 在目錄中找到感興趣的基礎模型 - 無論是專有的還是開放原始碼的,可以按任務、許可證或名稱進行篩選。為了提高可搜索性,這些模型被組織成集合,如 Azure OpenAI 集合、Hugging Face 集合等。 - -![模型目錄](../../images/AzureAIStudioModelCatalog.png?WT.mc_id=academic-105485-koreyst) - -- 查看模型卡,包括預期用途和訓練數據的詳細描述、程式碼範例以及內部評估函式庫的評估結果。 - -![Model card](../../images/ModelCard.png?WT.mc_id=academic-105485-koreyst) - -- 通過[模型基準](https://learn.microsoft.com/azure/ai-studio/how-to/model-benchmarks?WT.mc_id=academic-105485-koreyst)窗格,比較行業中可用的模型和數據集的基準,以評估哪一個符合業務場景。 - -![模型基準](../../images/ModelBenchmarks.png?WT.mc_id=academic-105485-koreyst) - -- 在自訂訓練資料上微調模型,以利用 Azure AI Studio 的實驗和追蹤功能來提升模型在特定工作負載中的表現。 - -![模型微調](../../images/FineTuning.png?WT.mc_id=academic-105485-koreyst) - -- 部署原始的預訓練模型或微調版本到遠端即時推論 - 管理的計算 - 或無伺服器的 api 端點 - [隨用隨付](https://learn.microsoft.com/azure/ai-studio/how-to/model-catalog-overview#model-deployment-managed-compute-and-serverless-api-pay-as-you-go?WT.mc_id=academic-105485-koreyst) - 以使應用程式能夠使用它。 - -![模型部署](../../images/ModelDeploy.png?WT.mc_id=academic-105485-koreyst) - -> [!NOTE] -> 並非目錄中的所有模型目前都可用於微調和/或按需部署。查看模型卡以了解模型的功能和限制。 - -## 改善 LLM 結果 - -我們已經與我們的初創團隊探索了不同種類的 LLMs 和一個雲平台 (Azure Machine Learning),使我們能夠比較不同的模型,在測試資料上評估它們,改進性能並將它們部署在推論端點上。 - -但是他們什麼時候應該考慮微調模型而不是使用預訓練模型呢?是否有其他方法可以改善模型在特定工作負載上的性能? - -企業可以使用多種方法從LLM中獲得所需的結果,你可以選擇不同訓練程度的不同類型模型 - -在生產環境中部署 LLM,具有不同的複雜性、成本和品質。以下是一些不同的方法: - -- **帶有上下文的提示工程**。這個想法是當你提示時提供足夠的上下文,以確保你得到所需的回應。 - -- **檢索增強生成(RAG)**。你的資料可能存在於資料庫或網路端點。例如,為了確保這些資料或其子集在提示時被包含,你可以獲取相關資料並將其作為使用者提示的一部分。 - -- **微調模型**。在這裡,你在自己的資料上進一步訓練模型,這使得模型更精確並能響應你的需求,但可能會很昂貴。 - -![LLMs 部署](../../images/Deploy.png?WT.mc_id=academic-105485-koreyst) - -圖片來源: [四種企業部署 LLM 的方式 | Fiddler AI Blog](https://www.fiddler.ai/blog/four-ways-that-enterprises-deploy-llms?WT.mc_id=academic-105485-koreyst) - -### 提示工程與上下文 - -預訓練的 LLMs 在一般化的自然語言任務上表現非常好,即使只用一個簡短的提示來呼叫它們,例如完成一句話或回答一個問題——所謂的「零樣本」學習。 - -然而,用戶越能夠框定他們的查詢,並提供詳細的請求和範例(即上下文),答案就會越準確且越接近用戶的期望。在這種情況下,如果提示中只包含一個範例,我們稱之為「單次」學習;如果包含多個範例,則稱為「少次學習」。具有上下文的提示工程是啟動時最具成本效益的方法。 - -### 檢索增強生成 (RAG) - -LLMs 有一個限制,即它們只能使用訓練期間使用的資料來生成答案。這意味著它們對訓練過程之後發生的事實一無所知,並且無法訪問非公開資訊(如公司資料)。 -這可以通過 RAG 技術來克服,該技術通過將外部資料以文件片段的形式增強提示,考慮提示長度限制。這由向量資料庫工具(如 [Azure Vector Search](https://learn.microsoft.com/azure/search/vector-search-overview?WT.mc_id=academic-105485-koreyst))支持,這些工具從各種預定義資料來源檢索有用的片段並將它們添加到提示上下文中。 - -這項技術在企業沒有足夠的數據、時間或資源來微調 LLM,但仍希望提高特定工作負載的性能並降低虛構風險(即現實的神秘化或有害內容)時非常有幫助。 - -### 微調模型 - -微調是一種利用遷移學習將模型「適應」下游任務或解決特定問題的過程。與少量學習和RAG不同,它會生成一個新的模型,並更新權重和偏差。這需要一組訓練範例,包括單一輸入(提示)及其相關的輸出(完成)。 -如果符合以下情況,這將是首選方法: - -- **使用微調模型**。企業希望使用微調的低性能模型(如嵌入模型)而不是高性能模型,從而達到更具成本效益和快速的解決方案。 - -- **考慮延遲**。延遲對於特定用例很重要,因此無法使用非常長的提示詞或範例數量不符合提示詞長度限制。 - -- **保持最新**。企業擁有大量高品質數據和真實標籤,以及保持這些數據隨時間更新所需的資源。 - -### 訓練模型 - -從零開始訓練一個 LLM 毫無疑問是最困難和最複雜的方法,需要大量的數據、熟練的資源和適當的計算能力。這個選項應該僅在企業有特定領域的使用案例和大量領域中心數據的情況下考慮。 - -## 知識檢查 - -改進 LLM 完成結果的良好方法是什麼? - -1. 帶上下文的提示工程 -1. RAG -1. 微調模型 - -A:3, 如果你有時間和資源以及高品質的資料,微調是保持最新的更好選擇。然而,如果你想改進事情但缺乏時間,值得先考慮 RAG。 - -## 🚀 挑戰 - -了解更多關於如何[使用 RAG](https://learn.microsoft.com/azure/search/retrieval-augmented-generation-overview?WT.mc_id=academic-105485-koreyst)來發展您的業務。 - -## 很棒的工作,繼續學習 - -完成本課程後,請查看我們的[生成式 AI 學習集合](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst)以繼續提升您的生成式 AI 知識! - -前往第3課,我們將探討如何[負責任地建構生成式 AI](../../../03-using-generative-ai-responsibly/translations/tw/README.md?WT.mc_id=academic-105485-koreyst)! - diff --git a/03-using-generative-ai-responsibly/translations/cn/README.md b/03-using-generative-ai-responsibly/translations/cn/README.md deleted file mode 100644 index ca897d9b59..0000000000 --- a/03-using-generative-ai-responsibly/translations/cn/README.md +++ /dev/null @@ -1,131 +0,0 @@ -# 第三章 : 负责任地使用生成式人工智能 - -[![Using Generative AI Responsibly](../../images/03-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson3-gh?WT.mc_id=academic-105485-koreyst) - -人们很容易对人工智能尤其是生成式人工智能着迷,但你需要考虑如何负责任地使用它。 你需要考虑如何确保输出是公平的、无害的等等。 本章旨在为您提供上述相关背景信息、需要考虑的事项以及如何采取积极措施来改善人工智能的使用。 - -## 本章概述 - -本章内容包括: - -- 为什么在构建生成式人工智能应用程序时应优先考虑负责任的人工智能。 -- 负责任的人工智能的核心原则以及它们与生成式人工智能的关系。 -- 如何通过策略和工具将这些负责任的人工智能原则付诸实践。 - -## 学习目标 - -学完本章内容后您将了解到: - -- 构建生成式人工智能应用程序时负责任的人工智能的重要性。 -- 在构建生成式 AI 应用程序时何时思考和应用 Responsible AI 的核心原则。 -- 您可以使用哪些工具和策略来将 Responsible AI 的概念付诸实践。 - -## 负责任的人工智能原则 - -生成式人工智能的热度非常高。 这种热度为这个领域带来了许多新的开发人员、关注和资金。 虽然这对于任何想要使用生成式人工智能构建产品和公司的人来说都是非常积极的,但我们负责任地行事也很重要。 - -在整个课程中,我们专注于构建“Our startup”和相关人工智能教育产品。 我们将使用负责任的人工智能的原则:公平、包容、可靠性/安全、安全和隐私、透明度和问责制。 根据这些原则,我们将探讨它们与我们在产品中使用生成式人工智能的关系。 - -## 为什么你应该优先考虑负责任的人工智能 - -在构建产品时,采取以人为本的方法并牢记用户的最大利益会带来最大的爱意 - -生成式人工智能的独特性在于它能够为用户创建有用的答案、信息、指导和内容。 无需许多手动步骤即可完成此操作,这可以带来非常令人印象深刻的结果。 不幸的是如果没有适当的规划和策略,它也可能会给您的用户、产品和整个社会带来一些有害的结果。 - -让我们看看这些潜在有害结果中的一些(但不是全部): - -### 幻觉 - -幻觉是一个术语,用于描述 LLMs 产生的内容要么完全无意义,要么根据给出其他错误的信息。 - -举个例子,我们为“Our startup”构建了一个功能,允许学生向模型提出历史问题。 一名学生问“泰坦尼克号的唯一幸存者是谁?” - -该模型产生如下响应: - -![提示说“谁是泰坦尼克号的唯一幸存者”](../../../03-using-generative-ai-responsibly/images/ChatGPT-titanic-survivor-prompt.webp?WT.mc_id=academic-105485-koreyst) - -> _(来源:[飞翔的野牛](https://flyingbisons.com?WT.mc_id=academic-105485-koreyst))_ - -给出了一个非常确切的答案。 不幸的是,这是不正确的。 即使极少了解,人们也会发现泰坦尼克号幸存者不止一名。 但对于刚开始研究这个领域的学生来说,这个答案足以有说服力,不会被质疑并被视为事实。 这样做的后果可能会导致人工智能系统不可靠,并对我们初创公司的声誉产生负面影响。 - -在任何给定的 LLMs 的每次迭代中,我们都看到了在最大限度地减少幻觉方面的性能改进。 即使有了这样的改进,我们作为应用程序构建者和用户仍然需要意识到这些限制。 - -### 有害内容 - -我们在前面的部分中介绍了 LLMs 会产生不正确或毫无意义的回答。 我们需要注意的另一个风险是模型产生有害内容。 - -有害内容可以定义为: - -- 提供指示或鼓励自残或伤害某些群体。 -- 仇恨或侮辱性内容。 -- 指导策划任何类型的攻击或暴力行为。 -- 提供有关如何查找非法内容或实施非法行为的说明。 -- 展示露骨的色情内容。 - -对于我们的初创公司来说,我们希望确保拥有正确的工具和策略来防止学生看到此类内容。 - -### 缺乏公平性 - -公平的定义是“确保人工智能系统没有偏见和歧视,并公平、平等地对待每个人。” 在生成式人工智能的世界中,我们希望确保模型的输出不会强化边缘群体的排他性世界观。 - -这些类型的输出不仅会破坏为用户建立积极的产品体验,还会造成进一步对社会进行危害。 作为应用程序构建者,在使用生成式人工智能构建解决方案时,我们应该始终牢记广泛且多样化的用户群。 - -## 如何负责任地使用生成式人工智能 - -现在我们已经确定了负责任的生成式人工智能的重要性,让我们看看我们可以采取的 4 个步骤来负责任地构建我们的人工智能解决方案: - -![缓解循环](../../images/mitigate-cycle.png?WT.mc_id=academic-105485-koreyst) - -### 衡量潜在危害 - -在软件测试中,我们测试用户对应用程序的预期操作。 同样,测试用户最有可能使用的一组不同的提示是衡量潜在危害的好方法。 - -由于“Our startup”正在开发教育产品,因此最好准备一份与教育相关的提示列表。 这可以涉及某个主题、历史事实和有关学生生活的提示。 - -### 减轻潜在危害 - -现在是时候寻找方法来预防或限制模型及其响应造成的潜在危害了。 我们可以从 4 个不同的层面来看待这个问题: - -![缓解层](../../images/mitigation-layers.png?WT.mc_id=academic-105485-koreyst) - -- **模型**。 为正确的用例选择正确的模型。 当应用于更小、更具体的用例时,更大、更复杂的模型(例如 GPT-4)可能会导致更大的有害内容风险。 使用训练数据进行微调还可以降低有害内容的风险。 - -- **安全系统**。 安全系统是平台上为模型服务的一组工具和配置,有助于减轻伤害。 Azure OpenAI Service 上的内容过滤系统就是一个例子。 系统还应该检测越狱攻击和不需要的活动,例如来自网络机器人的请求。 - -- **元提示**。 元提示和基础是我们可以根据某些行为和信息指导或限制模型的方法。 这可以使用系统输入来定义模型的某些限制。 此外,提供与系统范围或领域更相关的输出。 - - 它还可以使用检索增强生成 (RAG) 等技术,让模型仅从选定的可信来源中提取信息。 本课程后面有一章关于[构建搜索应用程序](../../../08-building-search-applications/translations/cn/README.md?WT.mc_id=academic-105485-koreyst)的内容 - -- **用户体验**。 最后一层是用户通过应用程序界面以某种方式直接与模型交互的地方。 通过这种方式,我们可以设计 UI/UX 来限制用户可以发送到模型的输入类型以及向用户显示的文本或图像。 在部署人工智能应用程序时,我们还必须透明地了解我们的生成式人工智能应用程序可以做什么和不能做什么。 - -我们有一章内容致力于[为人工智能应用程序设计用户体验](../../../12-designing-ux-for-ai-applications/translations/cn/README.md?WT.mc_id=academic-105485-koreyst) - -- **评估模型**。 与 LLMs 合作可能具有挑战性,因为我们并不总是能够控制模型训练的数据。 无论如何,我们应该始终评估模型的性能和输出。 衡量模型的准确性、相似性、基础性和输出的相关性仍然很重要。 这有助于为应用相关人员和用户提供透明度和信任。 - -### 运营负责任的生成式人工智能解决方案 - -围绕人工智能应用程序构建操作实践是最后阶段。 这包括与“Our startup”的其他部门(例如法律和安全部门)合作,以确保我们遵守所有监管政策。 在发布之前,我们还希望围绕交付、处理事件和回滚制定计划,以防止扩大对用户造成的任何伤害。 - -## 相关工具 - -虽然开发负责任 AI 解决方案的工作量可能看起来很多,但这是值得付出的。 随着生成式人工智能领域的发展,更多帮助开发人员有效地将责任整合到工作流程中的工具将会更成熟。 如,[Azure AI 内容安全](https://learn.microsoft.com/azure/ai-services/content-safety/overview?WT.mc_id=academic-105485-koreyst) 可以通过 API 请求帮助检测有害内容和图像。 - -## 知识检查 - -为了确保负责任地使用人工智能,您需要注意哪些事项? - -1. 答案正确。 -2. 有害使用,即人工智能不用于犯罪目的。 -3. 确保人工智能不存在偏见和歧视。 - -答:2 和 3 是正确的。 负责任的人工智能可以帮助您考虑如何减轻有害影响和偏见等。 - -## 🚀 知识拓展 - -阅读 [Azure AI 内容安全](https://learn.microsoft.com/azure/ai-services/content-safety/overview?WT.mc_id=academic-105485-koreyst) 并了解您可以采用什么方法。 - -## 继续学习 - -想要了解更多有关如何负责任地使用生成式 AI 进行构建的信息? 转至[进阶学习的页面](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) 查找有关本章的其他重要资源。 - -前往第四章,我们将了解 [提示工程基础](../../../04-prompt-engineering-fundamentals/translations/cn/README.md?WT.mc_id=academic-105485-koreyst)! diff --git a/03-using-generative-ai-responsibly/translations/es-mx/README.md b/03-using-generative-ai-responsibly/translations/es-mx/README.md deleted file mode 100644 index 1c916b192d..0000000000 --- a/03-using-generative-ai-responsibly/translations/es-mx/README.md +++ /dev/null @@ -1,133 +0,0 @@ -# Uso Responsable de la IA Generativa - -[![Uso Responsable de la IA Generativa](../../images/03-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson3-gh?WT.mc_id=academic-105485-koreyst) - -> _Haga click en la imagen de arriba para ver el video de esta lección_ - -Es fácil fascinarse con la IA, y en particular con la IA generativa, pero es necesario considerar cómo usarla responsablemente. Debe considerar aspectos como cómo garantizar que el resultado sea justo y no dañino, entre otros. Este capítulo busca brindarle el contexto mencionado, qué considerar y cómo tomar medidas activas para mejorar su uso de la IA. - -## Introducción - -Esta lección abordará: - -- Por qué debería priorizar la IA Responsable al crear aplicaciones de IA Generativa. -- Principios fundamentales de la IA Responsable y su relación con la IA Generativa. -- Cómo poner en práctica estos principios de la IA Responsable mediante estrategias y herramientas. - -## Objetivos de aprendizaje - -Tras completar esta lección, sabrás: - -- La importancia de la IA Responsable al crear aplicaciones de IA Generativa. -- Cuándo considerar y aplicar los principios fundamentales de la IA Responsable al crear aplicaciones de IA Generativa. -- Qué herramientas y estrategias tienes a tu disposición para poner en práctica el concepto de IA Responsable. - -## Principios de la IA Responsable - -El entusiasmo por la IA Generativa nunca ha sido tan grande. Este entusiasmo ha atraído a muchos nuevos desarrolladores, atención y financiación a este espacio. Si bien esto es muy positivo para quienes buscan crear productos y empresas utilizando IA Generativa, también es importante que procedamos con responsabilidad. - -A lo largo de este curso, nos centraremos en el desarrollo de nuestra startup y nuestro producto educativo de IA. Utilizaremos los principios de la IA Responsable: Equidad, Inclusión, Fiabilidad/Seguridad, Seguridad y Privacidad, Transparencia y Responsabilidad. Con estos principios, exploraremos cómo se relacionan con el uso de la IA Generativa en nuestros productos. - -## Por qué debería priorizar la IA responsable? - -Al desarrollar un producto, adoptar un enfoque centrado en el usuario, priorizando el bienestar del usuario, genera los mejores resultados. - -La singularidad de la IA generativa reside en su capacidad para crear respuestas, información, orientación y contenido útiles para los usuarios. Esto se puede lograr sin muchos pasos manuales, lo que puede generar resultados impresionantes. Sin una planificación y estrategias adecuadas, también puede, lamentablemente, tener consecuencias perjudiciales para los usuarios, el producto y la sociedad en su conjunto. - -Analicemos algunos (pero no todos) de estos resultados potencialmente dañinos: - -### Alucinaciones - -El término alucinaciones se utiliza para describir cuando un Máster en Derecho (LLM) produce contenido completamente absurdo o algo que sabemos que es factualmente incorrecto según otras fuentes de información. - -Por ejemplo, creamos una función para nuestra startup que permite a los estudiantes formular preguntas históricas a un modelo. Un estudiante pregunta: "Quién fue el único superviviente del Titanic?". - -El modelo produce una respuesta como la siguiente: - -![Indicación: "Quién fue el único superviviente del Titanic?"](../../../03-using-generative-ai-responsibly/images/ChatGPT-titanic-survivor-prompt.webp?WT.mc_id=academic-105485-koreyst) - -> _(Fuente: [Flying bisons](https://flyingbisons.com?WT.mc_id=academic-105485-koreyst))_ - -Esta es una respuesta muy fiable y exhaustiva. Desafortunadamente, es incorrecta. Incluso con una investigación mínima, se descubriría que hubo más de un superviviente del desastre del Titanic. Para un estudiante que apenas comienza a investigar este tema, esta respuesta puede ser lo suficientemente convincente como para no ser cuestionada y considerada un hecho. Las consecuencias de esto pueden hacer que el sistema de IA sea poco fiable y afectar negativamente la reputación de nuestra startup. - -Con cada iteración de cualquier LLM, hemos observado mejoras de rendimiento en la minimización de las alucinaciones. Aun con esta mejora, como desarrolladores de aplicaciones y usuarios, debemos ser conscientes de estas limitaciones. - -### Contenido dañino - -En la sección anterior, abordamos cuándo un LLM produce respuestas incorrectas o sin sentido. Otro riesgo que debemos tener en cuenta es cuando un modelo responde con contenido dañino. - -El contenido dañino se puede definir como: - -- Proporcionar instrucciones o incitar a la autolesión o a dañar a ciertos grupos. -- Contenido de odio o degradante. -- Orientar la planificación de cualquier tipo de ataque o acto violento. -- Proporcionar instrucciones sobre cómo encontrar contenido ilegal o cometer actos ilegales. -- Mostrar contenido sexualmente explícito. - -En nuestra startup, queremos asegurarnos de contar con las herramientas y estrategias adecuadas para evitar que los estudiantes vean este tipo de contenido. - -### Falta de imparcialidad - -La imparcialidad se define como «garantizar que un sistema de IA esté libre de sesgos y discriminación, y que trate a todos de forma justa e igualitaria». En el ámbito de la IA generativa, queremos asegurarnos de que las visiones excluyentes de los grupos marginados no se vean reforzadas por los resultados del modelo. - -Este tipo de resultados no solo perjudica la creación de experiencias positivas de producto para nuestros usuarios, sino que también causa un mayor daño social. Como desarrolladores de aplicaciones, siempre debemos tener en cuenta una base de usuarios amplia y diversa al crear soluciones con IA Generativa. - -## Cómo usar la IA Generativa de forma responsable - -Ahora que hemos identificado la importancia de la IA Generativa Responsable, veamos cuatro pasos que podemos seguir para desarrollar nuestras soluciones de IA de forma responsable: - -![Mitigar el ciclo](../../images/mitigate-cycle.png?WT.mc_id=academic-105485-koreyst) - -### Medir posibles daños - -En las pruebas de software, evaluamos las acciones esperadas de un usuario en una aplicación. De igual forma, evaluar un conjunto diverso de indicaciones que los usuarios probablemente utilizarán es una buena manera de medir posibles daños. - -Dado que nuestra startup está desarrollando un producto educativo, sería recomendable preparar una lista de indicaciones relacionadas con la educación. Esta podría abarcar un tema específico, hechos históricos e indicaciones sobre la vida estudiantil. - -### Mitigar posibles daños - -Ahora es el momento de encontrar maneras de prevenir o limitar los posibles daños causados ​​por el modelo y sus respuestas. Podemos analizar esto en cuatro niveles diferentes: - -![Capas de mitigación](../../images/mitigation-layers.png?WT.mc_id=academic-105485-koreyst) - -- **Modelo**. Elegir el modelo adecuado para el caso de uso adecuado. Los modelos más grandes y complejos, como GPT-4, pueden generar un mayor riesgo de contenido dañino al aplicarse a casos de uso más pequeños y específicos. Usar los datos de entrenamiento para ajustar el modelo también reduce el riesgo de contenido dañino. - -- **Sistema de Seguridad**. Un sistema de seguridad es un conjunto de herramientas y configuraciones en la plataforma que sirve al modelo y que ayudan a mitigar los daños. Un ejemplo de esto es el sistema de filtrado de contenido del servicio Azure OpenAI. Los sistemas también deben detectar ataques de jailbreak y actividad no deseada, como solicitudes de bots. - -- **Metaprompt**. Los metaprompts y la puesta a tierra son formas de dirigir o limitar el modelo en función de ciertos comportamientos e información. Esto podría implicar el uso de entradas del sistema para definir ciertos límites del modelo. Además, se pueden proporcionar salidas más relevantes para el alcance o dominio del sistema. - -También se pueden utilizar técnicas como la Generación Aumentada por Recuperación (RAG) para que el modelo solo extraiga información de una selección de fuentes confiables. Más adelante en este curso, se incluye una lección sobre [desarrollo de aplicaciones de búsqueda](../../../08-building-search-applications/README.md?WT.mc_id=academic-105485-koreyst) - -- **Experiencia de usuario**. La capa final es donde el usuario interactúa directamente con el modelo a través de la interfaz de nuestra aplicación. De esta manera, podemos diseñar la UI/UX para limitar los tipos de entradas que el usuario puede enviar al modelo, así como el texto o las imágenes que se le muestran. Al implementar la aplicación de IA, también debemos ser transparentes sobre lo que nuestra aplicación de IA generativa puede y no puede hacer. - -Tenemos una lección completa dedicada a [Diseño de UX para Aplicaciones de IA](../../../12-designing-ux-for-ai-applications/README.md?WT.mc_id=academic-105485-koreyst) - -- **Evaluar el modelo**. Trabajar con LLM puede ser un desafío porque no siempre tenemos control sobre los datos con los que se entrenó el modelo. En cualquier caso, siempre debemos evaluar el rendimiento y los resultados del modelo. Sigue siendo importante medir la precisión, la similitud, la solidez y la relevancia del resultado del modelo. Esto ayuda a brindar transparencia y confianza a las partes interesadas y a los usuarios. - -### Operar una solución de IA Generativa Responsable - -Desarrollar una práctica operativa en torno a sus aplicaciones de IA es la etapa final. Esto incluye la colaboración con otras áreas de nuestra startup, como los departamentos Legal y de Seguridad, para garantizar el cumplimiento de todas las políticas regulatorias. Antes del lanzamiento, también queremos desarrollar planes para la entrega, la gestión de incidentes y la reversión para evitar que los daños a nuestros usuarios se agraven. - -## Herramientas - -Aunque desarrollar soluciones de IA responsable pueda parecer una tarea ardua, vale la pena. A medida que crece el campo de la IA generativa, se desarrollarán más herramientas que ayuden a los desarrolladores a integrar la responsabilidad de forma eficiente en sus flujos de trabajo. Por ejemplo, la [Seguridad de contenido de IA de Azure](https://learn.microsoft.com/azure/ai-services/content-safety/overview?WT.mc_id=academic-105485-koreyst) puede ayudar a detectar contenido e imágenes dañinos mediante una solicitud de API. - -## Comprobación de conocimientos - -Qué aspectos debes tener en cuenta para garantizar un uso responsable de la IA? - -1. Que la respuesta sea correcta. -1. Uso perjudicial: que la IA no se utilice con fines delictivos. -1. Garantizar que la IA esté libre de sesgos y discriminación. - -R: Las respuestas 2 y 3 son correctas. La IA responsable te ayuda a considerar cómo mitigar los efectos perjudiciales, los sesgos y mucho más. - -## 🚀 Desafío - -Infórmate sobre [Seguridad del contenido de la IA de Azure](https://learn.microsoft.com/azure/ai-services/content-safety/overview?WT.mc_id=academic-105485-koreyst) y descubre qué puedes adoptar para tu uso. - -## ¡Buen trabajo! ¡Continúa aprendiendo! - -Después de completar esta lección, consulta nuestra [Colección de aprendizaje de IA generativa](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) para seguir mejorando tus conocimientos sobre IA generativa. - -Dirígete a la Lección 4, donde veremos los [Fundamentos de ingeniería de indicaciones](../../../04-prompt-engineering-fundamentals/README.md?WT.mc_id=academic-105485-koreyst). \ No newline at end of file diff --git a/03-using-generative-ai-responsibly/translations/ja-jp/README.md b/03-using-generative-ai-responsibly/translations/ja-jp/README.md deleted file mode 100644 index 400897f750..0000000000 --- a/03-using-generative-ai-responsibly/translations/ja-jp/README.md +++ /dev/null @@ -1,145 +0,0 @@ -# 生成 AI の責任ある使用 - -[![生成 AI の責任ある使用](../../images/03-lesson-banner.png?WT.mc_id=academic-105485-yoterada)](https://aka.ms/gen-ai-lesson3-gh?WT.mc_id=academic-105485-koreyst) - -AI、特に生成 AI にとても強い興味は抱くのは理解できますが、それをどのように責任を持って利用するかについて、十分に検討する必要があります。例えば、出力結果が「公平で有害でない」のを保証するなど、多くの点を考慮すべきです。本章は、上記の背景や考慮すべき点、そして AI をより有効活用するための具体的な行動指針を、皆様にお届けします。 - -## はじめに - -このレッスンでは、下記の内容について説明します。 - -- 生成 AI アプリケーションを構築する際に、なぜ責任ある AI を重視すべきか -- 責任ある AI の基本原則と、それが生成 AI とどう結びつくのか -- 戦略とツールを使って、責任ある AI の原則をどのように実践するのか - -## 学習目標 - -このレッスンを修了すると、下記を理解できます: - -- 生成 AI アプリケーション構築時の、責任ある AI の重要性 -- 生成 AI アプリケーションの構築時、責任ある AI の基本原則をいつ、どのように検討し適用するか -- 責任ある AI の概念を実践するために利用可能なツールと戦略 - -## 責任ある AI の原則 - -生成 AI に対する興味は、今までにないほど高まっています。この盛り上がりは、新たな開発者や関心、資金をこの業界にもたらしています。これは、生成 AI を使用して新しい製品や、新しい企業を創業する人々にとって非常に好意的な状況ですが、同時に責任を持って進めるのも重要です。 - -このコースでは、スタートアップが AI を利用した教育製品の実装に焦点を当てます。公平性、包括性、信頼性・安全性、セキュリティ・プライバシー、透明性、説明責任といった責任ある AI の原則に基づいて、これらが製品における生成 AI の活用と、どのように関連していくのかについて考えます。 - -## 責任ある AI を優先すべき理由 - -製品開発時、「利用者の利益を最優先に考える顧客中心のアプローチ」で進めると、最良の結果が得られます。 - -生成 AI は、利用者に役立つ回答、情報、ガイダンス、コンテンツを生成する力があります。こうした作業の多くは手作業を必要とせずに実行でき、それによって非常に素晴らしい成果を生み出せます。しかし、適切な計画と戦略がなければ、残念ながら利用者、製品、そして社会全体に悪影響をもたらす場合もあります。 - -下記に記載する、潜在的に害を及ぼす可能性のある例(全てではありませんが)をご覧ください: - -### Hallucinations (幻覚) - -「Hallucinations (幻覚)」とは、LLM が完全に無意味な内容や、他の情報に基づいて事実と異なる内容を出力する際に使用する用語です。 - -例えば、スタートアップで、学生から AI モデルに対して歴史に関する問い合わせが可能な機能を作ったとします。そして、ある学生がこんな質問をしました -`タイタニックの唯一の生き残りは誰ですか?` - -すると、モデルは以下のような回答を生成します - -> [!NOTE] -> 訳者追記 -> ご注意:毎回同じ回答結果ではありませんし、利用するモデルのバージョンによっても回答内容は異なります - -![Prompt saying "Who was the sole survivor of the Titanic"](../../../03-using-generative-ai-responsibly/images/ChatGPT-titanic-survivor-prompt.webp?WT.mc_id=academic-105485-yoterada) - -> [!TIP] -> 訳者追記 -> プロンプト:タイタニックの唯一の生き残りは誰ですか? -> 回答:タイタニック号の事故の唯一の生存者は、チャールズ・ジョーギンでした。彼はイギリスのパン職人で、タイタニック号のチーフ・ベーカリー職人でした。ジョーギンは、転覆した救命ボートにしがみつき、極寒の海で数時間耐え、RMS カルパチアに救助されたと伝えられています。彼の生存は、彼が大量のアルコールを摂取していたため、極度の寒さに耐えられたのではないかと伝えられています。ジョーギンは 1956 年まで生存し、後にタイタニック号の事故の経験について証言しました。 - -> _(Source: [Flying bisons](https://flyingbisons.com?WT.mc_id=academic-105485-yoterada))_ - -これはとても自信に満ちて、詳細な回答結果です。しかし残念ながら、この回答は間違っています。タイタニック号の生存者は複数名いたという事実が、調査結果から判明しています。一方で、この課題研究を始めたばかりの学生にとって、この回答は疑う余地のないほど、そして事実として受け入れられるほどの説得力があります。このような間違いのある回答結果から、学生は AI システムを信頼できなくなり、さらにはスタートアップ企業の評判にも悪影響を及ぼす可能性があります。 - -LLM のバージョンを更新するごとに、幻覚を減らす方向でパフォーマンス改善がはかられています。しかし、こうした改善があったとしても、アプリケーションの開発者や利用者は、こうした回答捏造の問題を意識する必要があります。 - -### 有害なコンテンツ - -前のセクションで、LLM が不正確、または無意味な回答を出力する可能性について触れました。もう一つ注意すべきリスクは、モデルが有害なコンテンツを回答する場合です。 - -有害なコンテンツには以下のようなものがあります: - -- 自傷行為や、特定グループへの危害を助長、または奨励する指示 -- 憎悪や侮辱的な内容 -- あらゆる種類の攻撃や、暴力行為の計画 -- 違法なコンテンツを探す方法や、犯罪を犯す方法 -- 性的に露骨な内容 - -スタートアップでは、このようなコンテンツが学生に見られないように、適切なツールと戦略を確実に導入したいと考えています。 - -### 公平性の欠如 - -公平性とは、「AI システムがいかなる偏見や差別も抱かず、全人類に対して公平かつ平等にサービスを提供する状況」を指します。生成 AI の世界では、マイノリティ・グループの排他的な世界観が、モデルで再強化されないように注意しなければなりません。 - -このような公平性が欠如した出力は、利用者にとって好意的な製品体験を妨げるだけでなく、社会的な損害をさらに引き起こします。アプリケーション開発者は、生成 AI を活用したソリューションを作る際、多様な利用者層を考慮する必要があります。 - -## 責任ある生成 AI の使用方法 - -責任ある生成 AI の重要性を理解した上で、責任を持って AI ソリューションを構築するための、4 つの重点項目をご覧ください。 - -![Mitigate Cycle](../../images/mitigate-cycle.png?WT.mc_id=academic-105485-yoterada) - -### 潜在的な危害の測定 - -一般的なソフトウェアのテストでは、アプリケーションに対して、利用者がおこなう行動を予想してテストを行います。同様に、利用者が入力する可能性のあるプロンプトを、様々なテスト・ケースを用いて実行すると、潜在的な問題を事前に発見できる可能性があります。 - -スタートアップが教育関連の製品を実装しているので、教育関連のプロンプトのリストを準備すると良いでしょう。これには、特定の科目、歴史的事実、学生生活に関するプロンプトなどが含まれるかもしれません。 - -### 潜在的な危害の軽減 - -AI モデルとその出力によって引き起こされる、潜在的な問題を防ぐ、または抑制する方法を検討する時が来ました。これを 4 つの異なるレイヤーで考えます。 - -![Mitigation Layers](../../images/mitigation-layers.png?WT.mc_id=academic-105485-yoterada) - -- **AI モデル**:用途に適したモデルを選択します。GPT-4 のように大きくて複雑なモデルを、より小規模で特定の用途に使う場合、有害な内容を引き起こす可能性があり、リスクが高まります。独自のトレーニング・データを使ってモデルをファイン・チューニングし、有害コンテンツのリスクを減らせます。 - -- **安全システム**:安全システムとは、モデルを提供するプロバイダのプラットフォーム上で危害を軽減するために使用する設定やツールです。例えば、Azure OpenAI サービスのコンテンツ・フィルタリング・システムがあります。安全システムはボットにおける、脱獄攻撃 (Jailbreak) や、望ましくない活動などのリクエストも検出する必要があります。 - -- **メタ・プロンプト**:メタ・プロンプトやグラウンディングといった手法を使って、モデルの行動や情報を特定の方向に誘導したり制限できます。これはシステム入力を使って、モデルに対して特定の制限を定義します。また、システムのスコープや領域に合った、より適切な結果も出力できます。 - -> [!TIP] -> 訳者追記: -> グラウンディングの詳細は、[こちらの記事](https://techcommunity.microsoft.com/blog/fasttrackforazureblog/grounding-llms/3843857?WT.mc_id=academic-105485-yoterada)をご参照ください。 - -信頼性のある情報源のデータだけをモデルが利用するように、Retrieval Augmented Generation(RAG)のような技術を使用できます。このコースの後半で、検索アプリケーションの構築に関するレッスンもあります。 - -- **ユーザー・エクスペリエンス**:最後のレイヤーは、ユーザ・インターフェースです。利用者はどのような形であれ、アプリケーションが提供するインターフェイスを利用してモデルとやりとりを行います。適切な UI/UX を設計し、モデルに送信する入力の種類や利用者で表示されるテキストや画像を制限できます。AI アプリケーションをデプロイする際、生成 AI アプリケーションでできる処理と、できない処理について透明性を持って利用者に伝える必要があります。 - - 本レッスンの最終章に「[12. AI アプリケーションの UX デザイン](../../../12-designing-ux-for-ai-applications/translations/ja-jp/README.md?WT.mc_id=academic-105485-yoterada)」に特化したレッスンがあります。 - -- **モデルを評価**:大規模言語モデル(LLM)は、そのモデルがどのようなデータを使って学習されたのかを完全に把握できないため、扱うのが難しい場合があります。それでもなお、モデルの性能や出力は常に検証すべきです。特に出力の正確性、類似性、根拠の正しさ、関連性の評価は重要です。これにより、利害関係者や利用者に透明性と信頼性を提供できます。 - -### 責任ある生成 AI ソリューションを運用する - - 本番環境用の AI アプリケーションを構築する最終段階に入りました。スタートアップにおいては、法務部門やセキュリティ部門との協力を通じて、全ての規制方針に準拠しているかを確認する作業も含まれます。サービスのローンチ前には、デリバリー計画、問題発生時の対応方法、不具合が発生した際に元に戻すロールバック手順を作成し、利用者に被害が及ばないような戦略を練りたいと思います。 - -## ツール - -責任ある AI ソリューションを開発する作業は、手間がかかるように感じられるかもしれません。しかし、その労力に見合う価値があります。生成 AI のビジネスが進化するに連れて、開発作業中に責任ある AI を効率的に取り入れられるツールが、より充実していくでしょう。例えば、[Azure AI Content Safety](https://learn.microsoft.com/azure/ai-services/content-safety/overview?WT.mc_id=academic-105485-yoterada) は、API を呼び出す際に有害なコンテンツや画像を検出するのに役立ちます。 - -## 知識チェック - -責任ある AI の利用を確実にするために、どのような点に考慮する必要があるのでしょうか? - -1. 常に回答が正しい -2. AI が悪用されたり犯罪目的で利用されないように注意する -3. AI が偏りや差別的な内容を含まないようにする - -A: 2 と 3 が正解です。責任ある AI を導入し、害を及ぼす可能性のある影響や偏見をどのように緩和できるか、さらにその他のさまざまな問題について考える手助けにもなります。 - -## 🚀 チャレンジ - -[Azure AI Content Safety](https://learn.microsoft.com/azure/ai-services/content-safety/overview?WT.mc_id=academic-105485-yoterada) について調べ、ご自身の用途に適用できるかご検討ください。 - -## お疲れ様でした! 次のレッスンを続ける - -このレッスン終了後、[生成 AI 学習コレクション](https://aka.ms/genai-collection?WT.mc_id=academic-105485-yoterada)をチェックして、生成 AI の知識をさらに深めましょう。 - -レッスン 4 では、[プロンプト・エンジニアリングの基本](../../../04-prompt-engineering-fundamentals/translations/ja-jp/README.md?WT.mc_id=academic-105485-yoterada)について学びます! diff --git a/03-using-generative-ai-responsibly/translations/ko/README.md b/03-using-generative-ai-responsibly/translations/ko/README.md deleted file mode 100644 index 80afd6100d..0000000000 --- a/03-using-generative-ai-responsibly/translations/ko/README.md +++ /dev/null @@ -1,129 +0,0 @@ -# 책임감 있게 생성형 AI 사용하기 - -[![Using Generative AI Responsibly](../../images/03-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson3-gh?WT.mc_id=academic-105485-koreyst) - -AI 및 특히 생성형 AI에 매료되는 것은 쉽지만, 우리는 책임 있는 사용 방법을 고려해야 합니다. 즉, 출력물이 공정하고, 해를 끼치지 않도록 하는 등을 어떻게 보장할지에 대해 고려해야 합니다. 이 장에서는 '책임 있는 AI'가 나오게 된 상황과, 이를 위해 고려해야할 사항 및 AI 사용을 개선하기 위해 적극적인 단계를 취하는 방법을 알려주는 것을 목표로 합니다 - -## 소개 - -이 장은 다음과 같은 것을 다룹니다: - -- 생성형 AI 애플리케이션을 개발할 때 '책임 있는 AI(Responsible AI)'를 우선적으로 고려해야 하는 이유. -- '책임 있는 AI'의 핵심 원칙과 그것들이 어떻게 생성형 AI와 관련되어 있는지. -- 전략과 도구를 통해 '책임 있는 AI'의 원칙을 실천하는 방법. - -## 학습 목표 - -이 장이 끝나면 다음을 이해하게 될 것입니다: - -- 생성형 AI 애플리케이션을 개발할 때 '책임 있는 AI'의 중요성. -- 생성형 AI 애플리케이션을 개발할 때 '책임 있는 AI'의 핵심 원칙을 언제 생각하고 적용해야 하는지. -- '책임 있는 AI' 개념을 실천하기 위해 사용 가능한 도구와 전략. - -## '책임 있는 AI' 원칙 - -생성형 AI에 대한 흥미는 전례 없이 높습니다. 이 흥미는 이 분야에 새로운 개발자, 주목, 자금을 많이 유치하게 되었습니다. 이러한 상황은 생성형 AI를 사용하여 제품과 기업을 만들려는 모든 이에게는 매우 긍정적인 상황이지만, 동시에 이를 책임 있게 진행하는 것도 중요합니다. - -이 코스의 전반에 걸쳐 우리는 스타트업과 AI 교육 제품을 만드는데 중점을 두고 있습니다. 우리는 '공정성, 포용성, 안정성/안전성, 보안 및 개인 정보 보호, 투명성 및 책임성'의 책임 있는 AI 원칙을 사용할 것입니다. 이러한 원칙들을 통해 제품에서 생성형 AI를 사용하는 방법과의 관련성을 탐구할 것입니다. - -## 왜 '책임 있는 AI'를 우선시해야 하는가 - -제품을 만드는 것에 있어, 사용자의 이익을 최우선으로 하는 인간 중심적인 접근 방식은 가장 좋은 결과를 가져옵니다. - -생성형 AI의 특별한 점은 사용자에게 도움이 되는 답변, 정보, 지침 및 콘텐츠를 만들 수 있는 능력입니다. 이러한 것은 매뉴얼 단계를 많이 거치지 않아도 인상적인 결과를 얻을 수 있습니다. 하지만 적절한 계획과 전략이 없으면 사용자, 제품, 그리고 사회 전체에게 해로운 결과를 끼칠 수도 있습니다. - -이에 대해 몇가지(전체가 아님) 잠재적으로 해로운 결과를 살펴보겠습니다: - -### 환각 (Hallucinations) - -환각 (Hallucinations)은 LLM이 완전히 비논리적이거나, 잘못되거나 다른 정보 출처를 기반으로 일반적으로 알고 있는 것과 다른 내용을 생성할 때 사용하는 용어입니다. - -예를 들어 우리 스타트업의 기능 중 하나로 학생들이 모델에게 역사와 관련한 질문을 할 수 있도록 하는 경우를 생각해 보겠습니다. 학생이 '타이타닉의 유일한 생존자는 누구였나요?'라는 질문을 한 경우 모델은 아래와 같이 응답할 수 있습니다: - -![Prompt saying "Who was the sole survivor of the Titanic"](../../../03-using-generative-ai-responsibly/images/ChatGPT-titanic-survivor-prompt.webp?WT.mc_id=academic-105485-koreyst) - -> _(Source: [Flying bisons](https://flyingbisons.com?WT.mc_id=academic-105485-koreyst))_ - -이 대답은 매우 확신에 차있고 철저합 답변처럼 느껴지지만, 불행하게도 부정확한 답변입니다. 조사를 아주 조금만 해보더라도 우리는 타이타닉에서 생존한 사람은 한명 이상임을 찾을 수 있습니다. 그러나 이 주제를 처음 조사하기 시작하는 학생에게는 이 답변은 충분히 설득력이 있는 것처럼 보이고, 의심하지 않고 사실처럼 생각할 수도 있습니다. 이러한 결과들은 AI 시스템을 불안정하고 신뢰할 수 없게 만들어 우리의 스타트업의 평판에 부정적인 영향을 미칠수도 있습니다. - -각 LLM의 반복마다 Hallucination을 최소화하는 성능 향상이 있었지만, 이러한 개선에도 불구하고 응용 프로그램 빌더 및 사용자로서 이러한 제한에 대해 계속 알아야 합니다. - -### 유해한 콘텐츠 - -이전 섹션에서 우리는 LLM이 부정확하거나 비논리적인 응답을 생성할 때를 다뤘습니다. 또 다른 리스크는 모델이 유해한 콘텐츠로 응답할 때 발생합니다. - -유해한 콘텐츠는 다음과 같이 정의될 수 있습니다: - -- 자해 또는 특정 그룹에 대한 피해를 유도하거나 권장하는 지침을 제공. -- 혐오스럽거나 또는 모독적인 내용. -- 모든 유형의 공격이나 폭력 행위를 계획하도록 안내. -- 불법 콘텐츠를 찾거나 불법 행위를 저지르도록 하는 지침을 제공. -- 성적으로 유해한 콘텐츠 표시. - -스타트업에서는 학생들이 이러한 유형의 콘텐츠를 보지 못하도록 방지하기 위한 적절한 도구와 전략이 갖추어져 있어야 합니다. - -### 공정성 부족 - -공정성은 "AI 시스템이 편견과 차별이 없으며 모든 사람을 공정하고 동등하게 대우한다는 것을 보장하는 것"으로 정의됩니다. 생성형 AI의 세계에서는 모델의 출력이 특정 그룹의 배타적인 세계관을 강화하지 않도록 해야 합니다. - -이러한 종류의 출력물은 사용자에게 부정적인 제품 경험을 만드는 것에 일조할 뿐 아니라 사회적 피해까지 초래합니다. 응용 프로그램 빌더로서 우리는 생성형 AI를 사용하여 솔루션을 개발할 때 항상 넓고 다양한 사용자 베이스를 고려해야 합니다. - -## 생성형 AI를 책임 있게 사용하는 방법 - -책임 있는 생성형 AI의 중요성에 대해 배웠으므로 이제 생성형 AI의 답변들을 책임 있게 만드는 4가지 단계에 대해 배워봅시다. - -![Mitigate Cycle](../../images/mitigate-cycle.png?WT.mc_id=academic-105485-koreyst) - -### 잠재적 피해 측정 - -소프트웨어 테스트에 있어 우리는 애플리케이션에서 사용자의 예상되는 행동을 테스트합니다. 마찬가지로 사용자가 사용할 가능성이 높은 다양한 프롬프트를 테스트하는 것은 잠재적인 피해를 측정하는 좋은 방법입니다 - -우리의 스타트업이 교육용 제품을 만들고 있기 때문에 교육 관련 프롬프트의 리스트를 준비하는 게 좋을 것입니다. 이것은 특정 주제들, 역사적 사실들, 그리고 학생의 삶에 관한 프롬프트 등을 포함할 것입니다. - -### 잠재적 피해 완화 - -이제 모델 및 해당 응답이 일으킬 수 있는 잠재적 피해를 방지하거나 제한할 수 있는 방법을 찾아보겠습니다. 이를 4가지 다른 레이어로 살펴볼 수 있습니다: - -![Mitigation Layers](../../images/mitigation-layers.png?WT.mc_id=academic-105485-koreyst) - -- **모델**. 올바른 사용 사례에 적합한 모델 선택. GPT-4와 같이 크고 복잡한 모델은 더 작고 구체적인 사용 사례에 적용할 때 유해한 콘텐츠의 위험을 더 많이 초래할 수 있습니다. 훈련 데이터를 사용하여 세밀하게 조정하면 해로운 콘텐츠의 위험을 줄일 수 있습니다. - -- **안전 시스템**. 안전 시스템은 플랫폼에 있는 도구와 구성의 모음으로 모델이 해로운 콘텐츠 생산하는 것을 막습니다. Azure OpenAI 서비스의 콘텐츠 필터링 시스템이 이것에 대한 예시입니다. 안전 시스템은 또한 탈옥 공격 및 봇의 요청과 같은 활동을 감지해야 합니다. - -- **메타프롬프트**. 메타프롬프트와 그라운딩은 특정 행동 및 정보를 기반으로 모델을 제한하거나 안내하는 방법입니다. 이것은 시스템 입력을 사용하여 모델의 특정 한계를 정의하거나 시스템의 범위나 도메인과 관련이 더 있는 출력을 제공할 수 있습니다. - -또한 Retrieval Augmented Generation (RAG)과 같은 방법을 사용하여 모델이 검증된 출처들에서 선택하여 정보를 가져올 수 있도록 할 수 있습니다. 추후에 이에 관한 수업이 있습니다. [검색 애플리케이션 구축](../../../08-building-search-applications/translations/ko/README.md?WT.mc_id=academic-105485-koreyst) - -- **사용자 경험**. 최종 레이어는 사용자가 모델과 어떤 방식으로든 응용 프로그램 인터페이스를 통해 직접 상호 작용하는 곳입니다. 이를 통해 UI/UX를 디자인하여 사용자가 모델로 보낼 수 있는 입력 유형과 사용자에게 표시되는 텍스트 또는 이미지를 제한할 수 있습니다. AI 애플리케이션을 배포할 때에는 또한 생성형 AI 애플리케이션이 무엇을 할 수 있고 할 수 없는지에 대해 투명하게 밝혀야 합니다. - -이에 관한 전체 내용을 담은 수업이 있습니다. [AI 애플리케이션을 위한 UX 디자인](../../../12-designing-ux-for-ai-applications/translations/ko/README.md?WT.mc_id=academic-105485-koreyst) - -- **모델 평가**. LLM 모델과 작업하는 것은 모델이 학습하는 데이터를 우리가 항상 제어할 수는 없기 때문에 어려울 수 있습니다. 그럼에도 불구하고 우리는 모델의 성능과 출력을 항상 평가해야 합니다. 모델의 정확도, 유사성, 기초 특성 및 출력의 관련성을 측정하는 것은 여전히 중요하고, 이는 이해관계자 및 사용자에게 투명성과 신뢰를 제공합니다. - -### 책임 있는 생성형 AI 솔루션 운영 - -당신의 AI 애플리케이션을 중심으로 운영적인 실천 방안을 마련하는 것이 최종 단계입니다. 이에는 법적 및 보안 측면에서 스타트업의 다른 부분과 협력하여 모든 규제 정책을 준수하는 것이 포함됩니다. 그리고 출시전에는 제공, 사건 처리 및 사용자에게 피해가 가지 않도록 롤백할 수 있는 계획을 수립해야 합니다. - -## 도구들 - -책임 있는 AI 솔루션을 개발하는 작업은 많아 보일 수 있지만 그 노력은 확실히 가치 있는 작업입니다. 생성형 AI의 영역이 넓어질 수록 개발자가 책임을 효율적으로 통합할 수 있는 도구들이 많이 생기게 될 것 입니다. 예를 들어 [Azure AI Content Safety](https://learn.microsoft.com/azure/ai-services/content-safety/overview?WT.mc_id=academic-105485-koreyst)는 유해한 콘텐츠 및 이미지를 API 요청을 통해 감지하는 데 도움이 될 수 있습니다. - -## 문제 - -문제: 책임 있는 AI 사용을 보장하기 위해 고려해야 할 사항은 무엇인가요? - -1. 답변이 정확한가? -2. 유해한 사용, 즉 AI가 범죄 목적으로 사용되지 않도록 하는 것. -3. AI가 편견과 차별에서 자유로운지 확인하는 것. - -정답: 2번, 3번. 책임 있는 AI는 어떻게 유해한 효과와 편견, 차별들을 완화할지에 대한 도움을 줍니다. - -## 🚀 도전 - -[Azure AI Content Saftey](https://learn.microsoft.com/azure/ai-services/content-safety/overview?WT.mc_id=academic-105485-koreyst)를 읽어보고 사용할 수 있는 내용이 무엇인지 확인해보세요. - -## 수고하셨습니다. 학습을 계속하세요! - -이 수업을 마치고 나서 [Generative AI 학습 컬렉션](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst)를 확인하여 생성형 AI에 관련한 지식을 더욱 쌓을 수 있습니다! - -4번 수업으로 이동하여 [프롬프트 엔지니어링 기초](../../../04-prompt-engineering-fundamentals/translations/ko/README.md?WT.mc_id=academic-105485-koreyst)를 살펴보세요! diff --git a/03-using-generative-ai-responsibly/translations/pl/README.md b/03-using-generative-ai-responsibly/translations/pl/README.md deleted file mode 100644 index a8778f66cc..0000000000 --- a/03-using-generative-ai-responsibly/translations/pl/README.md +++ /dev/null @@ -1,133 +0,0 @@ -# Odpowiedzialne Korzystanie z Generatywnej SI - -[![Odpowiedzialne Korzystanie z Generatywnej SI](../../images/03-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson3-gh?WT.mc_id=academic-105485-koreyst) - -> _Kliknij powyższy obraz, aby obejrzeć wideo tej lekcji_ - -Łatwo jest być zafascynowanym sztuczną inteligencją, a w szczególności generatywną SI, ale musisz rozważyć, jak odpowiedzialnie z niej korzystać. Musisz wziąć pod uwagę takie kwestie jak zapewnienie, że rezultat jest sprawiedliwy, nie szkodliwy i więcej. Ten rozdział ma na celu dostarczenie ci wspomnianego kontekstu, co wziąć pod uwagę i jak podjąć aktywne kroki w celu poprawy twojego korzystania z SI. - -## Wprowadzenie - -Ta lekcja obejmie: - -- Dlaczego powinieneś priorytetowo traktować Odpowiedzialną SI podczas budowania aplikacji Generatywnej SI. -- Podstawowe zasady Odpowiedzialnej SI i jak odnoszą się one do Generatywnej SI. -- Jak wprowadzić te zasady Odpowiedzialnej SI w praktyce poprzez strategię i narzędzia. - -## Cele Nauki - -Po ukończeniu tej lekcji będziesz wiedzieć: - -- Znaczenie Odpowiedzialnej SI podczas budowania aplikacji Generatywnej SI. -- Kiedy myśleć i stosować podstawowe zasady Odpowiedzialnej SI podczas budowania aplikacji Generatywnej SI. -- Jakie narzędzia i strategie są dostępne, aby wprowadzić koncepcję Odpowiedzialnej SI w praktyce. - -## Zasady Odpowiedzialnej SI - -Ekscytacja Generatywną SI nigdy nie była większa. Ta ekscytacja przyciągnęła wielu nowych deweloperów, uwagę i finansowanie do tej przestrzeni. Choć jest to bardzo pozytywne dla każdego, kto chce budować produkty i firmy korzystające z Generatywnej SI, ważne jest również, abyśmy postępowali odpowiedzialnie. - -W całym tym kursie skupiamy się na budowaniu naszego startupu i naszego produktu edukacyjnego SI. Będziemy korzystać z zasad Odpowiedzialnej SI: Uczciwość, Inkluzywność, Niezawodność/Bezpieczeństwo, Ochrona i Prywatność, Przejrzystość i Odpowiedzialność. Z tymi zasadami zbadamy, jak odnoszą się one do naszego korzystania z Generatywnej SI w naszych produktach. - -## Dlaczego Powinieneś Priorytetowo Traktować Odpowiedzialną SI - -Podczas budowania produktu, przyjęcie podejścia skoncentrowanego na człowieku, mając na uwadze najlepszy interes użytkownika, prowadzi do najlepszych rezultatów. - -Wyjątkowość Generatywnej SI polega na jej mocy tworzenia pomocnych odpowiedzi, informacji, wskazówek i treści dla użytkowników. Można to zrobić bez wielu ręcznych kroków, co może prowadzić do bardzo imponujących rezultatów. Bez odpowiedniego planowania i strategii może to również niestety prowadzić do pewnych szkodliwych rezultatów dla twoich użytkowników, twojego produktu i społeczeństwa jako całości. - -Przyjrzyjmy się niektórym (ale nie wszystkim) z tych potencjalnie szkodliwych rezultatów: - -### Halucynacje - -Halucynacje to termin używany do opisania sytuacji, gdy LLM produkuje treść, która jest albo całkowicie bezsensowna, albo coś, co wiemy, że jest faktycznie błędne na podstawie innych źródeł informacji. - -Weźmy na przykład, że budujemy funkcję dla naszego startupu, która pozwala uczniom zadawać pytania historyczne do modelu. Uczeń zadaje pytanie `Kto był jedynym ocalałym z Titanica?` - -Model generuje odpowiedź taką jak poniższa: - -![Prompt mówiący "Kto był jedynym ocalałym z Titanica"](../../images/ChatGPT-titanic-survivor-prompt.webp?WT.mc_id=academic-105485-koreyst) - -> _(Źródło: [Flying bisons](https://flyingbisons.com?WT.mc_id=academic-105485-koreyst))_ - -Jest to bardzo pewna i dokładna odpowiedź. Niestety, jest niepoprawna. Nawet przy minimalnej ilości badań odkryłoby się, że było więcej niż jeden ocalały z katastrofy Titanica. Dla ucznia, który dopiero zaczyna badać ten temat, ta odpowiedź może być wystarczająco przekonująca, aby nie być kwestionowana i traktowana jako fakt. Konsekwencje tego mogą prowadzić do tego, że system SI jest niewiarygodny i negatywnie wpływa na reputację naszego startupu. - -Z każdą iteracją dowolnego modelu LLM widzieliśmy poprawę wydajności w zakresie minimalizacji halucynacji. Nawet z tą poprawą, my jako twórcy aplikacji i użytkownicy musimy pozostać świadomi tych ograniczeń. - -### Szkodliwa Treść - -Omówiliśmy w poprzedniej sekcji, kiedy LLM produkuje niepoprawne lub bezsensowne odpowiedzi. Innym ryzykiem, którego musimy być świadomi, jest sytuacja, gdy model odpowiada szkodliwą treścią. - -Szkodliwa treść może być zdefiniowana jako: - -- Dostarczanie instrukcji lub zachęcanie do samookaleczenia lub szkodzenia określonym grupom. -- Nienawistna lub poniżająca treść. -- Prowadzenie planowania jakiegokolwiek ataku lub aktów przemocy. -- Dostarczanie instrukcji, jak znaleźć nielegalne treści lub popełnić nielegalne czyny. -- Wyświetlanie treści o charakterze seksualnym. - -Dla naszego startupu chcemy upewnić się, że mamy odpowiednie narzędzia i strategie, aby zapobiec temu rodzajowi treści przed jej zobaczeniem przez uczniów. - -### Brak Uczciwości - -Uczciwość jest definiowana jako "zapewnienie, że system SI jest wolny od uprzedzeń i dyskryminacji i że traktuje wszystkich sprawiedliwie i równo." W świecie Generatywnej SI chcemy zapewnić, że wykluczające światopoglądy marginalizowanych grup nie są wzmacniane przez rezultat modelu. - -Tego typu rezultaty są nie tylko destrukcyjne dla budowania pozytywnych doświadczeń produktowych dla naszych użytkowników, ale także powodują dalsze szkody społeczne. Jako twórcy aplikacji powinniśmy zawsze mieć na uwadze szeroką i zróżnicowaną bazę użytkowników podczas budowania rozwiązań z Generatywną SI. - -## Jak Odpowiedzialnie Korzystać z Generatywnej SI - -Teraz, gdy zidentyfikowaliśmy znaczenie Odpowiedzialnej Generatywnej SI, przyjrzyjmy się 4 krokom, które możemy podjąć, aby odpowiedzialnie budować nasze rozwiązania SI: - -![Cykl łagodzenia](../../images/mitigate-cycle.png?WT.mc_id=academic-105485-koreyst) - -### Mierzenie Potencjalnych Szkód - -W testowaniu oprogramowania testujemy oczekiwane działania użytkownika na aplikacji. Podobnie, testowanie różnorodnego zestawu promptów, których użytkownicy najprawdopodobniej będą używać, jest dobrym sposobem na mierzenie potencjalnych szkód. - -Ponieważ nasz startup buduje produkt edukacyjny, dobrze byłoby przygotować listę promptów związanych z edukacją. Mogłoby to obejmować określony przedmiot, fakty historyczne i prompty dotyczące życia studenckiego. - -### Łagodzenie Potencjalnych Szkód - -Teraz czas znaleźć sposoby, w jakie możemy zapobiec lub ograniczyć potencjalne szkody spowodowane przez model i jego odpowiedzi. Możemy spojrzeć na to w 4 różnych warstwach: - -![Warstwy łagodzenia](../../images/mitigation-layers.png?WT.mc_id=academic-105485-koreyst) - -- **Model**. Wybór odpowiedniego modelu do odpowiedniego przypadku użycia. Większe i bardziej złożone modele, takie jak GPT-4, mogą powodować większe ryzyko szkodliwych treści, gdy są stosowane do mniejszych i bardziej specyficznych przypadków użycia. Używanie danych treningowych do dostrajania również zmniejsza ryzyko szkodliwych treści. - -- **System Bezpieczeństwa**. System bezpieczeństwa to zestaw narzędzi i konfiguracji na platformie obsługującej model, które pomagają łagodzić szkody. Przykładem tego jest system filtrowania treści w usłudze Azure OpenAI. Systemy powinny również wykrywać ataki jailbreak i niepożądaną aktywność, taką jak żądania od botów. - -- **Metaprompt**. Metaprompty i ugruntowanie są sposobami, w jakie możemy kierować lub ograniczać model na podstawie pewnych zachowań i informacji. Może to być używanie danych wejściowych systemu do definiowania pewnych ograniczeń modelu. Dodatkowo, dostarczanie rezultatów, które są bardziej odpowiednie dla zakresu lub domeny systemu. - -Może to być również używanie technik takich jak Retrieval Augmented Generation (RAG), aby model pobierał informacje tylko z wyboru zaufanych źródeł. Jest lekcja później w tym kursie o [budowaniu aplikacji wyszukiwania](../../../08-building-search-applications/README.md?WT.mc_id=academic-105485-koreyst) - -- **Doświadczenie Użytkownika**. Ostatnia warstwa to miejsce, gdzie użytkownik bezpośrednio wchodzi w interakcję z modelem poprzez interfejs naszej aplikacji w jakiś sposób. W ten sposób możemy zaprojektować UI/UX, aby ograniczyć użytkownika w zakresie rodzajów danych wejściowych, które mogą wysłać do modelu, a także tekstu lub obrazów wyświetlanych użytkownikowi. Podczas wdrażania aplikacji SI musimy również być przejrzyści co do tego, co nasza aplikacja Generatywnej SI może i czego nie może zrobić. - -Mamy całą lekcję poświęconą [Projektowaniu UX dla Aplikacji SI](../../../12-designing-ux-for-ai-applications/translations/pl/README.md?WT.mc_id=academic-105485-koreyst) - -- **Ocena modelu**. Praca z modelami LLM może być trudna, ponieważ nie zawsze mamy kontrolę nad danymi, na których model był trenowany. Niezależnie od tego, zawsze powinniśmy oceniać wydajność modelu i jego rezultaty. Nadal ważne jest mierzenie dokładności modelu, podobieństwa, ugruntowania i istotności rezultatu. Pomaga to zapewnić przejrzystość i zaufanie dla interesariuszy i użytkowników. - -### Prowadzenie Odpowiedzialnego Rozwiązania Generatywnej SI - -Budowanie praktyki operacyjnej wokół twoich aplikacji SI jest ostatnim etapem. Obejmuje to partnerstwo z innymi częściami naszego startupu, takimi jak Prawne i Bezpieczeństwo, aby zapewnić, że jesteśmy zgodni ze wszystkimi politykami regulacyjnymi. Przed uruchomieniem chcemy również budować plany dotyczące dostarczania, obsługi incydentów i wycofywania, aby zapobiec narastaniu szkód dla naszych użytkowników. - -## Narzędzia - -Chociaż praca nad rozwijaniem rozwiązań Odpowiedzialnej SI może wydawać się dużym wysiłkiem, jest to praca warta wysiłku. Wraz z rozwojem obszaru Generatywnej SI, będą dojrzewać narzędzia pomagające deweloperom efektywnie integrować odpowiedzialność w ich przepływach pracy. Na przykład, [Azure AI Content Safety](https://learn.microsoft.com/azure/ai-services/content-safety/overview?WT.mc_id=academic-105485-koreyst) może pomóc wykryć szkodliwe treści i obrazy poprzez żądanie API. - -## Sprawdzenie wiedzy - -O co musisz dbać, aby zapewnić odpowiedzialne korzystanie z SI? - -1. Że odpowiedź jest poprawna. -1. Szkodliwe użytkowanie, że SI nie jest używana do celów przestępczych. -1. Zapewnienie, że SI jest wolna od uprzedzeń i dyskryminacji. - -A: 2 i 3 są poprawne. Odpowiedzialna SI pomaga rozważyć, jak łagodzić szkodliwe efekty i uprzedzenia oraz więcej. - -## 🚀 Wyzwanie - -Przeczytaj więcej o [Azure AI Content Safety](https://learn.microsoft.com/azure/ai-services/content-safety/overview?WT.mc_id=academic-105485-koreyst) i zobacz, co możesz adoptować do swojego użytku. - -## Świetna Praca, Kontynuuj Naukę - -Po ukończeniu tej lekcji, sprawdź naszą [kolekcję materiałów do nauki Generatywnej SI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst), aby kontynuować podnoszenie swojej wiedzy o Generatywnej SI! - -Przejdź do Lekcji 4, gdzie przyjrzymy się [Podstawom Inżynierii Promptów](../../../04-prompt-engineering-fundamentals/translations/pl/README.md?WT.mc_id=academic-105485-koreyst)! diff --git a/03-using-generative-ai-responsibly/translations/pt-br/README.md b/03-using-generative-ai-responsibly/translations/pt-br/README.md deleted file mode 100644 index 9911b208bc..0000000000 --- a/03-using-generative-ai-responsibly/translations/pt-br/README.md +++ /dev/null @@ -1,131 +0,0 @@ -# Usando a IA Generativa de Forma Responsável - -[![Usando a IA Generativa de Forma Responsável](../../images/03-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson3-gh?WT.mc_id=academic-105485-koreyst) - -É fácil se encantar com a IA e a IA generativa em particular. Mas é preciso considerar como você a usará de forma responsável. Você precisa considerar coisas como como garantir que a saída seja justa, não prejudicial e muito mais. Este capítulo tem como objetivo fornecer o contexto mencionado, o que considerar e como tomar medidas ativas para melhorar o uso de sua IA. - -## Introdução - -Esta lição abordará: - -- Por que você deve priorizar a IA Responsável ao criar aplicações de IA Generativa. -- Princípios fundamentais da IA Responsável e como eles se relacionam com a IA Generativa. -- Como colocar esses princípios de IA Responsável em prática por meio de estratégias e ferramentas. - -## Metas de Aprendizado - -Após completar esta lição, você saberá: - -- A importância da IA Responsável ao criar aplicações de IA Generativa. -- Quando pensar e aplicar os princípios fundamentais da IA Responsável ao criar aplicações de IA Generativa. -- Quais ferramentas e estratégias estão disponíveis para você colocar o conceito de IA Responsável em prática. - -## Princípios de IA Responsável - -A empolgação em torno da IA Generativa nunca foi tão alta. Essa empolgação trouxe muitos novas pessoas desenvolvedoras, atenção e financiamento para esse espaço. Embora isso seja muito positivo para quem deseja construir produtos e empresas usando a IA Generativa, também é importante que procedamos de forma responsável. - -Ao longo deste curso, estamos nos concentrando em criar nossa startup e nosso produto de educação em IA. Usaremos os princípios da IA Responsável: Justiça, Inclusão, Confiabilidade/Segurança, Segurança e Privacidade, Transparência e Responsabilidade. Com esses princípios, exploraremos como eles se relacionam com o nosso uso da IA Generativa em nossos produtos. - -## Por Que Você Deve Priorizar a IA Responsável - -Ao criar um produto, adotar uma abordagem centrada no ser humano, mantendo o melhor interesse de seus usuários em mente, sempre leva aos melhores resultados. - -A singularidade da IA Generativa está em seu poder de criar respostas úteis, informações, orientações e conteúdo para os usuários. Isso pode ser feito sem muitas etapas manuais, o que pode levar a resultados muito impressionantes. Sem um planejamento adequado e estratégias, também pode infelizmente levar a alguns resultados prejudiciais para seus usuários, seu produto e a sociedade como um todo. - -Vamos dar uma olhada em alguns (mas não todos) desses resultados potencialmente prejudiciais: - -### Alucinações - -Alucinações é um termo usado para descrever quando um LLM produz conteúdo que é completamente sem sentido ou algo que sabemos ser factualmente incorreto com base em outras fontes de informação. - -Vamos dar, por exemplo, a criação de um recurso para nossa startup que permite aos estudantes fazer perguntas históricas a um modelo. Um estudante faz a pergunta `Quem foi o único sobrevivente do Titanic?` - -O modelo produz uma resposta como a que está abaixo: - -![Prompt dizendo "Quem foi o único sobrevivente do Titanic"](<../../../03-using-generative-ai-responsibly/images/2135-ChatGPT(1)_11zon.webp?WT.mc_id=academic-105485-koreyst>) - -> _(Fonte: [Flying bisons](https://flyingbisons.com?WT.mc_id=academic-105485-koreyst))_ - -Esta é uma resposta muito confiante e completa. Infelizmente, está incorreta. Mesmo com uma quantidade mínima de pesquisa, alguém descobriria que houve mais de um sobrevivente do Titanic. Para um estudante que está começando a pesquisar esse tópico, essa resposta pode ser persuasiva o suficiente para não ser questionada e tratada como fato. As consequências disso podem levar ao sistema de IA sendo pouco confiável e impactar negativamente a reputação de nossa startup. - -Com cada iteração de qualquer LLM dado, vimos melhorias de desempenho na minimização de alucinações. Mesmo com essa melhoria, nós, como construtores e usuários de aplicativos, ainda precisamos estar cientes dessas limitações. - -### Conteúdo Prejudicial - -Nós cobrimos na seção anterior quando um LLM produz respostas incorretas ou sem sentido. Outro risco que precisamos estar cientes é quando um modelo responde com conteúdo prejudicial. - -Conteúdo prejudicial pode ser definido como: - -- Fornecer instruções ou incentivar autolesão ou dano a certos grupos. -- Conteúdo odioso ou humilhante. -- Orientar o planejamento de qualquer tipo de ataque ou atos violentos. -- Fornecer instruções sobre como encontrar conteúdo ilegal ou cometer atos ilegais. -- Exibir conteúdo sexualmente explícito. - -Para nossa startup, queremos garantir que tenhamos as ferramentas e estratégias certas em vigor para impedir que esse tipo de conteúdo seja visto pelos estudantes. - -### Falta de Equidade - -A equidade é definida como "garantir que um sistema de IA esteja livre de viés e discriminação e que trate todos de forma justa e igual". No mundo da IA Generativa, queremos garantir que visões de mundo excludentes de grupos marginalizados não sejam reforçadas pela saída do modelo. - -Esses tipos de saídas não são apenas destrutivos para a criação de experiências de produtos positivas para nossos usuários. Mas também causam mais danos à sociedade. Como criadores de aplicações, devemos sempre ter em mente uma base de usuários ampla e diversificada ao criar soluções com IA Generativa. - -## Como Usar a IA Generativa de Forma Responsável - -Agora que identificamos a importância da IA Generativa Responsável, vamos ver 4 etapas que podemos seguir para construir nossas soluções de IA de forma responsável: - -![Ciclo de Mitigação](../../images/mitigate-cycle.png?WT.mc_id=academic-105485-koreyst) - -### Medir Danos Potenciais - -Na área de testes de software, testamos as ações esperadas de um usuário em um aplicativo. Da mesma forma, testar um conjunto diversificado de prompts que os usuários provavelmente usarão é uma boa maneira de medir o dano potencial. - -Como nossa startup está criando um produto de educação, seria bom preparar uma lista de prompts relacionados à educação. Isso poderia ser para cobrir um certo assunto, fatos históricos e prompts sobre a vida dos estudantes. - -### Mitigar Danos Potenciais - -Agora é hora de encontrar maneiras de prevenir ou limitar o dano potencial causado pelo modelo e suas respostas. Podemos analisar isso em 4 camadas diferentes: - -![Camadas de Mitigação](../../images/mitigation-layers.png?WT.mc_id=academic-105485-koreyst) - -- **Modelo**: escolher o modelo certo para o caso de uso certo. Modelos maiores e mais complexos, como o GPT-4, podem causar mais risco de conteúdo prejudicial quando aplicados a casos de uso menores e mais específicos. Usar seus dados de treinamento para ajuste fino também reduz o risco de conteúdo prejudicial. - -- **Sistema de Segurança**: um sistema de segurança é um conjunto de ferramentas e configurações na plataforma que serve o modelo e ajuda a mitigar o dano. Um exemplo disso é o sistema de filtragem de conteúdo no serviço Azure OpenAI. Os sistemas também devem detectar ataques de jailbreak e atividades indesejadas, como solicitações de bots. - -- **Metaprompt**: metaprompts e fundamentação são maneiras de direcionar ou limitar o modelo com base em determinados comportamentos e informações. Isso poderia ser o uso de entradas do sistema para definir certos limites do modelo. Além disso, fornecer saídas mais relevantes para o escopo ou domínio do sistema. - -Também pode ser o uso de técnicas como a Recuperação de Geração Aumentada (RAG) para fazer com que o modelo obtenha informações apenas de uma seleção de fontes confiáveis. Há uma lição posterior neste curso para [criar aplicações de busca](../../../08-building-search-applications/translations/pt-br/README.md?WT.mc_id=academic-105485-koreyst) - -- **Experiência do Usuário**: a camada final é onde o usuário interage diretamente com o modelo por meio da interface de nosso aplicativo de alguma forma. Dessa forma, podemos projetar a UI/UX para limitar o usuário quanto aos tipos de entradas que podem enviar ao modelo, bem como ao texto ou imagens exibidos ao usuário. Ao implantar o aplicativo de IA, também devemos ser transparentes sobre o que nossa aplicação de IA Generativa pode e não pode fazer. - -Temos uma lição inteira dedicada a [Projetar UX para Aplicações de IA](../../../12-designing-ux-for-ai-applications/translations/pt-br/README.md?WT.mc_id=academic-105485-koreyst) - -- **Avaliar o modelo**: trabalhar com LLMs pode ser desafiador porque nem sempre temos controle sobre os dados em que o modelo foi treinado. Independentemente disso, sempre devemos avaliar o desempenho e as saídas do modelo. Ainda é importante medir a precisão, similaridade, fundamentação e relevância do modelo de saída. Isso ajuda a fornecer transparência e confiança aos interessados e usuários. - -### Operar uma Solução de IA Generativa Responsável - -Criar uma prática operacional em torno de suas aplicações de IA é a etapa final. Isso inclui a parceria com outras partes de nossa startup, como Jurídico e Segurança, para garantir que estejamos em conformidade com todas as políticas regulatórias. Antes do lançamento, também queremos criar planos em torno da entrega, tratamento de incidentes e retorno para evitar qualquer dano crescente aos nossos usuários. - -## Ferramentas - -Embora o trabalho de desenvolver soluções de IA Responsável possa parecer muito, porém é um trabalho que vale a pena. À medida que a área de IA Generativa cresce, mais ferramentas para ajudar os desenvolvedores a integrar eficientemente a responsabilidade em seus fluxos de trabalho amadurecerão. Por exemplo, o [Azure AI Content Safety](https://learn.microsoft.com/azure/ai-services/content-safety/overview?WT.mc_id=academic-105485-koreyst) pode ajudar a detectar conteúdo e imagens prejudiciais por meio de uma solicitação de API. - -## Verificação de Conhecimento - -Quais são algumas coisas das quais você precisa se preocupar para garantir o uso responsável da IA? - -1. Que a resposta esteja correta. -2. Uso prejudicial, para que a IA não seja usada para fins criminosos. -3. Garantir que a IA esteja livre de viés e discriminação. - -R: 2 e 3 estão corretas. A IA Responsável ajuda a considerar como mitigar efeitos prejudiciais e vieses, entre outros. - -## 🚀 Desafio - -Leia sobre o [Azure AI Content Safety](https://learn.microsoft.com/azure/ai-services/content-safety/overview?WT.mc_id=academic-105485-koreyst) e veja o que você pode adotar para o seu uso. - -## Ótimo Trabalho, Continue Sua Aprendizagem - -Quer aprender mais sobre como construir com IA Generativa de forma responsável? Acesse a [página de aprendizado contínuo](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) para encontrar outros ótimos recursos sobre esse tópico. - -Vamos agora para a Lição 4, onde exploraremos os [Fundamentos da Engenharia de Prompt](../../../04-prompt-engineering-fundamentals/translations/pt-br/README.md?WT.mc_id=academic-105485-koreyst)! diff --git a/03-using-generative-ai-responsibly/translations/tr/README.md b/03-using-generative-ai-responsibly/translations/tr/README.md deleted file mode 100644 index 151c79f57a..0000000000 --- a/03-using-generative-ai-responsibly/translations/tr/README.md +++ /dev/null @@ -1,133 +0,0 @@ -# Üretici Yapay Zekayı Sorumlu Kullanma - -[![Üretici Yapay Zekayı Sorumlu Kullanma](../../images/03-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson3-gh?WT.mc_id=academic-105485-koreyst) - -> _Bu dersin videosunu izlemek için yukarıdaki görsele tıklayın_ - -Yapay zeka ve özellikle üretici yapay zekaya hayran kalmak kolaydır, ancak bunu nasıl sorumlu bir şekilde kullanacağınızı düşünmeniz gerekir. Çıktının adil, zararsız ve daha fazlası olmasını nasıl sağlayacağınız gibi şeyleri düşünmeniz gerekir. Bu bölüm, size bahsedilen bağlamı, neyi düşünmeniz gerektiğini ve yapay zeka kullanımınızı iyileştirmek için aktif adımlar atmayı nasıl sağlayacağınızı anlatmayı amaçlamaktadır. - -## Giriş - -Bu ders şunları kapsayacak: - -- Üretici Yapay Zeka uygulamaları oluştururken Sorumlu Yapay Zekaya neden öncelik vermelisiniz. -- Sorumlu Yapay Zekanın temel ilkeleri ve bunların Üretici Yapay Zeka ile nasıl ilişkili olduğu. -- Bu Sorumlu Yapay Zeka ilkelerini strateji ve araçlar yoluyla pratiğe nasıl dökebilirsiniz. - -## Öğrenme Hedefleri - -Bu dersi tamamladıktan sonra şunları bileceksiniz: - -- Üretici Yapay Zeka uygulamaları oluştururken Sorumlu Yapay Zekanın önemi. -- Üretici Yapay Zeka uygulamaları oluştururken Sorumlu Yapay Zekanın temel ilkelerini ne zaman düşünüp uygulayacağınız. -- Sorumlu Yapay Zeka kavramını pratiğe dökmek için hangi araç ve stratejilerin mevcut olduğu. - -## Sorumlu Yapay Zeka İlkeleri - -Üretici Yapay Zekaya olan heyecan hiç bu kadar yüksek olmamıştı. Bu heyecan, bu alana birçok yeni geliştirici, dikkat ve finansman getirdi. Bu, Üretici Yapay Zekayı kullanarak ürün ve şirket kurmak isteyen herkes için çok olumlu olsa da, sorumlu bir şekilde ilerlememiz de önemlidir. - -Bu kurs boyunca, startup'ımızı ve yapay zeka eğitim ürünümüzü oluşturmaya odaklanıyoruz. Sorumlu Yapay Zekanın ilkelerini kullanacağız: Adillik, Kapsayıcılık, Güvenilirlik/Güvenlik, Güvenlik ve Gizlilik, Şeffaflık ve Hesap Verebilirlik. Bu ilkelerle, ürünlerimizde Üretici Yapay Zekayı kullanımımızla nasıl ilişkili olduklarını keşfedeceğiz. - -## Neden Sorumlu Yapay Zekaya Öncelik Vermelisiniz - -Bir ürün oluştururken, kullanıcılarınızın çıkarlarını göz önünde bulundurarak insan merkezli bir yaklaşım benimsemek en iyi sonuçları verir. - -Üretici Yapay Zekanın benzersizliği, kullanıcılar için yararlı yanıtlar, bilgiler, rehberlik ve içerik oluşturma gücüdür. Bu, çok etkileyici sonuçlara yol açabilecek birçok manuel adım olmadan yapılabilir. Uygun planlama ve stratejiler olmadan, ne yazık ki kullanıcılarınız, ürününüz ve bir bütün olarak toplum için bazı zararlı sonuçlara da yol açabilir. - -Bu potansiyel zararlı sonuçlardan bazılarına (hepsine değil) bakalım: - -### Halüsinasyonlar - -Halüsinasyonlar, bir LLM'nin ya tamamen anlamsız ya da diğer bilgi kaynaklarına dayanarak faktüel olarak yanlış olduğunu bildiğimiz içerik ürettiğinde kullanılan bir terimdir. - -Örneğin, startup'ımız için öğrencilerin bir modele tarihsel sorular sormasına izin veren bir özellik oluşturduğumuzu düşünelim. Bir öğrenci `Titanic'in tek hayatta kalanı kimdi?` sorusunu soruyor. - -Model aşağıdaki gibi bir yanıt üretiyor: - -![Titanic'in tek hayatta kalanı kimdi" diyen istem](../../../03-using-generative-ai-responsibly/images/ChatGPT-titanic-survivor-prompt.webp?WT.mc_id=academic-105485-koreyst) - -> _(Kaynak: [Flying bisons](https://flyingbisons.com?WT.mc_id=academic-105485-koreyst))_ - -Bu çok güvenli ve kapsamlı bir yanıt. Ne yazık ki, yanlış. Minimal bir araştırmayla bile, Titanic felaketinden birden fazla hayatta kalan olduğu ortaya çıkardı. Bu konuyu yeni araştırmaya başlayan bir öğrenci için, bu yanıt sorgulanmayacak ve gerçek olarak kabul edilecek kadar ikna edici olabilir. Bunun sonuçları, yapay zeka sisteminin güvenilmez olmasına ve startup'ımızın itibarını olumsuz etkilemesine yol açabilir. - -Herhangi bir LLM'nin her iterasyonunda, halüsinasyonları en aza indirme konusunda performans iyileştirmeleri gördük. Bu iyileştirmeye rağmen, uygulama geliştiricileri ve kullanıcılar olarak bu sınırlamaların farkında olmaya devam etmeliyiz. - -### Zararlı İçerik - -Daha önceki bölümde bir LLM'nin yanlış veya anlamsız yanıtlar ürettiği durumları ele aldık. Farkında olmamız gereken bir diğer risk de modelin zararlı içerikle yanıt vermesidir. - -Zararlı içerik şöyle tanımlanabilir: - -- Kendine zarar verme veya belirli gruplara zarar verme talimatları verme veya teşvik etme. -- Nefret dolu veya aşağılayıcı içerik. -- Her türlü saldırı veya şiddet eyleminin planlanmasına rehberlik etme. -- Yasa dışı içerik bulma veya yasa dışı eylemler gerçekleştirme konusunda talimatlar verme. -- Cinsel açıdan açık içerik gösterme. - -Startup'ımız için, öğrencilerin bu tür içerikleri görmesini engellemek için doğru araç ve stratejilere sahip olduğumuzdan emin olmak istiyoruz. - -### Adillik Eksikliği - -Adillik, "bir yapay zeka sisteminin önyargı ve ayrımcılıktan arındırılmış olmasını ve herkese adil ve eşit davranmasını sağlamak" olarak tanımlanır. Üretici Yapay Zeka dünyasında, marjinalleştirilmiş grupların dışlayıcı dünya görüşlerinin model çıktısı tarafından pekiştirilmemesini sağlamak istiyoruz. - -Bu tür çıktılar sadece kullanıcılarımız için olumlu ürün deneyimleri oluşturmada yıkıcı olmakla kalmaz, aynı zamanda toplumsal zarara da neden olur. Uygulama geliştiricileri olarak, Üretici Yapay Zeka ile çözümler oluştururken her zaman geniş ve çeşitli bir kullanıcı tabanını akılda tutmalıyız. - -## Üretici Yapay Zekayı Sorumlu Bir Şekilde Nasıl Kullanılır - -Şimdi Sorumlu Üretici Yapay Zekanın önemini belirlediğimize göre, yapay zeka çözümlerimizi sorumlu bir şekilde oluşturmak için atabileceğimiz 4 adıma bakalım: - -![Azaltma Döngüsü](../../images/mitigate-cycle.png?WT.mc_id=academic-105485-koreyst) - -### Potansiyel Zararları Ölçme - -Yazılım testinde, bir uygulamada kullanıcının beklenen eylemlerini test ederiz. Benzer şekilde, kullanıcıların en çok kullanması muhtemel çeşitli istemleri test etmek, potansiyel zararı ölçmek için iyi bir yoldur. - -Startup'ımız bir eğitim ürünü oluşturduğu için, eğitimle ilgili istemler listesi hazırlamak iyi olacaktır. Bu, belirli bir konuyu, tarihsel gerçekleri ve öğrenci yaşamı hakkındaki istemleri kapsayabilir. - -### Potansiyel Zararları Azaltma - -Şimdi model ve yanıtlarının neden olabileceği potansiyel zararı önlemenin veya sınırlamanın yollarını bulma zamanı. Buna 4 farklı katmanda bakabiliriz: - -![Azaltma Katmanları](../../images/mitigation-layers.png?WT.mc_id=academic-105485-koreyst) - -- **Model**. Doğru kullanım senaryosu için doğru modeli seçmek. GPT-4 gibi daha büyük ve karmaşık modeller, daha küçük ve spesifik kullanım senaryolarına uygulandığında zararlı içerik riski oluşturabilir. Eğitim verilerinizi ince ayar için kullanmak da zararlı içerik riskini azaltır. - -- **Güvenlik Sistemi**. Güvenlik sistemi, modele hizmet veren platformda zararı azaltmaya yardımcı olan bir dizi araç ve yapılandırmadır. Buna örnek olarak Azure OpenAI hizmetindeki içerik filtreleme sistemi verilebilir. Sistemler ayrıca jailbreak saldırılarını ve botlardan gelen istekler gibi istenmeyen aktiviteleri tespit etmelidir. - -- **Meta İstem**. Meta istemler ve temellendirme, modeli belirli davranışlara ve bilgilere göre yönlendirmenin veya sınırlamanın yollarıdır. Bu, modelin belirli sınırlarını tanımlamak için sistem girdilerini kullanmak olabilir. Ayrıca, sistemin kapsamına veya alanına daha uygun çıktılar sağlamak da olabilir. - -Ayrıca, modelin yalnızca güvenilir kaynaklardan bilgi çekmesini sağlamak için Geri Alma Artırılmış Üretim (RAG) gibi teknikleri kullanmak da olabilir. Bu kursta daha sonra [arama uygulamaları oluşturma](../../../08-building-search-applications/README.md?WT.mc_id=academic-105485-koreyst) hakkında bir ders var. - -- **Kullanıcı Deneyimi**. Son katman, kullanıcının uygulamamızın arayüzü üzerinden bir şekilde modelle doğrudan etkileşime girdiği yerdir. Bu şekilde, kullanıcının modele gönderebileceği girdi türlerini ve kullanıcıya gösterilen metin veya görselleri sınırlamak için UI/UX'i tasarlayabiliriz. Yapay zeka uygulamasını dağıtırken, Üretici Yapay ZekA uygulamamızın neler yapıp yapamayacağı konusunda da şeffaf olmalıyız. - -[Yapay Zeka Uygulamaları için UX Tasarımı](../../../12-designing-ux-for-ai-applications/README.md?WT.mc_id=academic-105485-koreyst) konusuna adanmış bir dersimiz var. - -- **Modeli değerlendirme**. LLM'lerle çalışmak zor olabilir çünkü modelin eğitildiği veriler üzerinde her zaman kontrolümüz olmaz. Yine de, modelin performansını ve çıktılarını her zaman değerlendirmeliyiz. Modelin doğruluğunu, benzerliğini, temellendirilmişliğini ve çıktının uygunluğunu ölçmek hala önemlidir. Bu, paydaşlara ve kullanıcılara şeffaflık ve güven sağlamaya yardımcı olur. - -### Sorumlu Bir Üretici Yapay Zeka Çözümünü İşletme - -Yapay zeka uygulamalarınız etrafında operasyonel bir uygulama oluşturmak son aşamadır. Bu, tüm düzenleyici politikalara uygun olduğumuzdan emin olmak için startup'ımızın Hukuk ve Güvenlik gibi diğer bölümleriyle ortaklık kurmayı içerir. Lansmandan önce, kullanıcılarımıza yönelik herhangi bir zararın büyümesini önlemek için teslimat, olayları ele alma ve geri alma planları da oluşturmak istiyoruz. - -## Araçlar - -Sorumlu Yapay Zeka çözümleri geliştirme işi çok gibi görünse de, bu çaba değer. Üretici Yapay ZekA alanı büyüdükçe, geliştiricilerin sorumluluğu iş akışlarına verimli bir şekilde entegre etmelerine yardımcı olacak daha fazla araç olgunlaşacaktır. Örneğin, [Azure AI Content Safety](https://learn.microsoft.com/azure/ai-services/content-safety/overview?WT.mc_id=academic-105485-koreyst) bir API isteği aracılığıyla zararlı içerik ve görselleri tespit etmeye yardımcı olabilir. - -## Bilgi Kontrolü - -Sorumlu yapay zeka kullanımını sağlamak için nelere dikkat etmeniz gerekir? - -1. Yanıtın doğru olması. -2. Zararlı kullanım, yapay zekanın suç amaçlı kullanılmaması. -3. Yapay zekanın önyargı ve ayrımcılıktan arındırılmış olmasını sağlamak. - -C: 2 ve 3 doğrudur. Sorumlu Yapay ZekA, zararlı etkileri ve önyargıları ve daha fazlasını nasıl azaltacağınızı düşünmenize yardımcı olur. - -## 🚀 Challenge - -[Azure AI İçerik Güvenliği](https://learn.microsoft.com/azure/ai-services/content-safety/overview?WT.mc_id=academic-105485-koreyst) hakkında bilgi edinin ve kullanımınız için neler benimseyebileceğinize bakın. - -## Harika İş, Öğrenmeye Devam Edin - -Bu dersi tamamladıktan sonra, Üretici Yapay ZekA bilginizi artırmaya devam etmek için [Üretici Yapay ZekA Öğrenme koleksiyonumuza](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) göz atın! - -[İstem Mühendisliği Temelleri](../../../04-prompt-engineering-fundamentals/README.md?WT.mc_id=academic-105485-koreyst) konusunu inceleyeceğimiz Ders 4'e geçin! diff --git a/03-using-generative-ai-responsibly/translations/tw/README.md b/03-using-generative-ai-responsibly/translations/tw/README.md deleted file mode 100644 index 919ca70aaa..0000000000 --- a/03-using-generative-ai-responsibly/translations/tw/README.md +++ /dev/null @@ -1,134 +0,0 @@ -# 負責任地使用生成式 AI - -[![負責任地使用生成式 AI](../../images/03-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson3-gh?WT.mc_id=academic-105485-koreyst) - -> _點擊上方圖片觀看本課程的影片_ - -很容易對 AI 尤其是生成式 AI 感到著迷,但你需要考慮如何負責任地使用它。你需要考慮如何確保輸出是公平的、無害的等等。本章旨在為你提供提到的背景、需要考慮的事項以及如何採取積極措施來改進你的 AI 使用。 - -## 簡介 - -本課程將涵蓋: - -- 為什麼在建構生成式 AI 應用程式時應優先考慮負責任的 AI。 -- 負責任的 AI 的核心原則及其與生成式 AI 的關係。 -- 如何通過策略和工具將這些負責任的 AI 原則付諸實踐。 - -## 學習目標 - -完成本課程後,您將會知道: - -- 建構生成式 AI 應用程式時負責任 AI 的重要性。 -- 何時在建構生成式 AI 應用程式時思考並應用負責任 AI 的核心原則。 -- 有哪些工具和策略可以幫助你將負責任 AI 的概念付諸實踐。 - -## 負責任的 AI 原則 - -Generative AI 的興奮程度從未如此之高。這種興奮吸引了許多新開發者、關注和資金進入這個領域。雖然這對於任何希望使用 Generative AI 建構產品和公司的人士來說是非常積極的,但我們也必須負責任地前進。 - -在整個課程中,我們專注於建構我們的初創公司和我們的 AI 教育產品。我們將使用負責任 AI 的原則: 公平性、包容性、可靠性/安全性、安全性和隱私、透明性和問責制。通過這些原則,我們將探索它們如何與我們在產品中使用生成式 AI 相關。 - -## 為什麼你應該優先考慮負責任的 AI - -在建構產品時,採取以人為本的方法,並考慮使用者的最佳利益,會帶來最佳結果。 - -生成式 AI 的獨特之處在於其為用戶創建有用答案、資訊、指導和內容的能力。這可以在不需要許多手動步驟的情況下完成,從而產生非常令人印象深刻的結果。然而,若沒有適當的規劃和策略,這也可能不幸地為您的用戶、產品和整個社會帶來一些有害的結果。 - -讓我們來看看這些潛在有害結果中的一些(但不是全部): - -### 幻覺 - -幻覺是一個術語,用來描述當LLM產生的內容完全沒有意義或根據其他來源的資訊我們知道是事實錯誤的情況。 - -讓我們以建構一個功能為例,該功能允許學生向模型提問歷史問題。一位學生問了這個問題 `誰是泰坦尼克號的唯一倖存者?` - -模型產生的回應如下: - -![提示說 "誰是鐵達尼號的唯一倖存者"](../../../03-using-generative-ai-responsibly/images/ChatGPT-titanic-survivor-prompt.webp?WT.mc_id=academic-105485-koreyst) - -> _(來源: [Flying bisons](https://flyingbisons.com?WT.mc_id=academic-105485-koreyst))_ - -這是一個非常自信且徹底的回答。不幸的是,它是錯誤的。即使只做了最少量的研究,也會發現泰坦尼克號災難中有不止一個倖存者。對於剛開始研究這個主題的學生來說,這個答案可能足夠有說服力而不被質疑並被視為事實。這樣的後果可能導致 AI 系統不可靠,並對我們初創公司的聲譽產生負面影響。 - -隨著每次任意LLM的迭代,我們已經看到在最小化幻覺方面的性能改進。即使有了這些改進,我們作為應用程式建構者和使用者仍然需要意識到這些限制。 - -### 有害內容 - -我們在前一節中討論了當 LLM 產生不正確或無意義的回應時的情況。我們需要注意的另一個風險是當模型回應有害內容時。 - -有害內容可以定義為: - -- 提供自我傷害或傷害特定群體的指示或鼓勵。 -- 仇恨或貶低的內容。 -- 指導計劃任何類型的攻擊或暴力行為。 -- 提供如何查找非法內容或進行非法行為的指示。 -- 顯示露骨的性內容。 - -為了我們的初創公司,我們希望確保我們擁有正確的工具和策略,以防止學生看到此類內容。 - -### 缺乏公平性 - -公平被定義為「確保 AI 系統沒有偏見和歧視,並且公平和平等地對待每個人」。在生成式 AI 的世界中,我們希望確保模型的輸出不會強化邊緣化群體的排他性世界觀。 - -這些類型的輸出不僅對建構正面的產品體驗有破壞性,還會對社會造成進一步的傷害。作為應用程式建構者,我們在使用生成式 AI 建構解決方案時,應該始終考慮到廣泛且多樣化的使用者群體。 - -## 如何負責任地使用生成式 AI - -現在我們已經確定了負責任生成式 AI 的重要性,讓我們來看看可以採取的 4 個步驟,以負責任地建構我們的 AI 解決方案: - -![減輕循環](../../images/mitigate-cycle.png?WT.mc_id=academic-105485-koreyst) - -### 測量潛在危害 - -在軟體測試中,我們測試使用者在應用程式上的預期操作。同樣地,測試使用者最有可能使用的各種提示是一種衡量潛在危害的好方法。 - -由於我們的初創公司正在建構一款教育產品,準備一份與教育相關的提示清單會很有幫助。這可以涵蓋某個特定主題、歷史事實以及關於學生生活的提示。 - -### 減輕潛在危害 - -現在是時候找出方法來防止或限制模型及其回應可能造成的潛在傷害。我們可以從4個不同層面來看這個問題: - -![Mitigation Layers](../../images/mitigation-layers.png?WT.mc_id=academic-105485-koreyst) - -- **模型**. 為正確的使用案例選擇正確的模型。像 GPT-4 這樣更大且更複雜的模型在應用於較小且更具體的使用案例時,可能會帶來更多有害內容的風險。使用您的訓練數據進行微調也可以減少有害內容的風險。 - -- **安全系統**. 安全系統是一組在平台上服務模型的工具和配置,有助於減輕危害。範例是 Azure OpenAI 服務上的內容過濾系統。系統還應該檢測越獄攻擊和不需要的活動,例如來自機器人的請求。 - -- **Metaprompt**. Metaprompt 和基礎是我們可以根據某些行為和資訊來指導或限制模型的方法。這可以使用系統輸入來定義模型的某些限制。此外,提供更相關於系統範圍或領域的輸出。 - -它也可以使用像檢索增強生成(RAG)這樣的技術,讓模型僅從選定的可信來源中提取資訊。本課程後面有一節是[建構搜尋應用程式](../../../08-building-search-applications/translations/tw/README.md?WT.mc_id=academic-105485-koreyst)。 - -- **使用者體驗**。最終層是使用者通過我們應用程式的介面以某種方式直接與模型互動。在這種方式下,我們可以設計 UI/UX 來限制使用者能夠傳送給模型的輸入類型以及顯示給使用者的文字或圖像。在部署 AI 應用程式時,我們也必須透明地告知我們的生成式 AI 應用程式能夠和不能夠做的事情。 - -我們有一整節課專門介紹[設計 AI 應用的 UX](../../../12-designing-ux-for-ai-applications/translations/tw/README.md?WT.mc_id=academic-105485-koreyst) - -- **評估模型**. 使用 LLMs 可能具有挑戰性,因為我們無法總是控制模型訓練所使用的數據。不管怎樣,我們應該始終評估模型的性能和輸出。衡量模型的準確性、相似性、基礎性和輸出的相關性仍然很重要。這有助於為利益相關者和用戶提供透明度和信任。 - -### 操作負責任的生成式 AI 解決方案 - -建構圍繞您的 AI 應用程式的操作實踐是最後階段。這包括與我們初創公司中的其他部門(如法務和安全)合作,以確保我們符合所有監管政策。在推出之前,我們還希望制定有關交付、處理事件和回滾的計劃,以防止用戶因增長而受到任何損害。 - -## 工具 - -雖然開發負責任的 AI 解決方案的工作可能看起來很多,但這些工作非常值得努力。隨著生成式 AI 領域的增長,更多幫助開發者有效地將責任整合到他們工作流程中的工具將會成熟。例如,[Azure AI Content Safety](https://learn.microsoft.com/azure/ai-services/content-safety/overview?WT.mc_id=academic-105485-koreyst) 可以通過 API 請求幫助檢測有害內容和圖像。 - -## 知識檢查 - -確保負責任的 AI 使用需要注意哪些事項? - -1. 這個答案是正確的。 -1. 有害使用,確保 AI 不被用於犯罪目的。 -1. 確保 AI 沒有偏見和歧視。 - -A: 2 和 3 是正確的。負責任的 AI 幫助您考慮如何減輕有害影響和偏見等。 - -## 🚀 挑戰 - -閱讀 [Azure AI Content Saftey](https://learn.microsoft.com/azure/ai-services/content-safety/overview?WT.mc_id=academic-105485-koreyst) 並查看您可以採用的內容。 - -## 很棒的工作,繼續學習 - -完成本課程後,請查看我們的[生成式 AI 學習集合](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst)以繼續提升您的生成式 AI 知識! - -前往第4課,我們將查看[提示工程基礎](../../../04-prompt-engineering-fundamentals/translations/tw/README.md?WT.mc_id=academic-105485-koreyst)! - diff --git a/04-prompt-engineering-fundamentals/translations/cn/README.md b/04-prompt-engineering-fundamentals/translations/cn/README.md deleted file mode 100644 index 72f0ff89ed..0000000000 --- a/04-prompt-engineering-fundamentals/translations/cn/README.md +++ /dev/null @@ -1,391 +0,0 @@ -# 第四章:提示工程基础 - -[![Prompt Engineering Fundamentals](../../images/04-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson4-gh?WT.mc_id=academic-105485-koreyst) - -如何撰写 LLM 的提示很重要,精心设计的提示可以比不精心设计的提示取得更好的结果。 但这些概念到底是什么,提示、提示工程以及我如何改进我发送给 LLMs 的内容? 诸如此类的问题正是本章和下一章想要解答的。 - -*生成式人工智能*能够根据用户请求创建新内容(例如文本、图像、音频、代码等)。 它使用 LLMs 来实现这一目标,例如 OpenAI 的 GPT 模型系列,这些模型通过使用自然语言和代码进行训练。 - -用户现在可以使用熟悉的语言(如聊天)与这些模型进行交互,而无需任何技术专业知识或培训。 这些模型是基于提示的——用户发送文本输入(提示)并获取人工智能响应(完成)。 然后,他们可以在多轮对话中迭代地“与人工智能聊天”,完善他们的提示,直到响应符合他们的预期。 - -“提示”现在成为生成式人工智能应用程序的主要*编程界面*,告诉模型要做什么并影响返回响应的质量。 “提示工程”是一个快速发展的研究领域,专注于提示的“设计和优化”,以大规模提供一致且高质量的响应。 - -## 学习目标 - -在本章中,我们将了解什么是提示工程、为什么它很重要,以及如何针对给定的模型和应用程序目标制定更有效的提示。 我们将了解提示工程的核心概念和最佳实践,并了解交互式 Jupyter Notebooks“沙箱”环境,在 Notebooks 中我们可以看到这些概念应用于实际示例。 - -在本课结束时,我们将能够: - -1. 解释什么是提示工程及其重要性。 -2. 描述提示的组成部分及其使用方法。 -3. 学习提示工程的最佳实践和技术。 -4. 结合 OpenAI 将学到的技术应用于实际示例。 - -## 学习沙盒 - -目前,提示工程更多的是玄学而不是科学。 提高我们直觉的最佳方法是“更多练习”并采用试错方法,将应用程序领域的专业知识与推荐的技术和特定于模型的优化相结合。 - -本课程附带的 Jupyter Notebook 提供了一个*沙盒*环境,您可以在其中尝试所学内容 - 边学边做,或者作为最后代码挑战的一部分。 要完成练习,您需要: - -1. 设置 OpenAI API 密钥 - 已部署的 LLM 的服务端点。 - -2. Python 运行时 - 可以让 Notebook 运行。 - -我们使用一个带有 Python 3 运行时的开发容器来检测这个存储库。 只需在 GitHub Codespaces 或本地 Docker 桌面上打开 Repo,即可自动激活运行时。 然后打开笔记本并选择 Python 3.x 内核以准备 Notebook。 - -默认 Notebook 设置为与 OpenAI API 密钥一起使用。 只需将文件夹根目录中的“.env.copy”文件复制到“.env”,并使用您的 API 密钥更新“OPENAI_API_KEY=”行 - 一切就完成了。 - -该 Notebook 附带入门练习 - 但我们鼓励您添加自己的 Markdown(描述)和代码(提示请求)部分来尝试更多示例或想法 - 并建立您对提示工程设计的感觉。 - -## Our Startup 的使命 - -现在,让我们来谈谈这个主题与 Our Startup 的使命[将人工智能创新带入教育](https://educationblog.microsoft.com/2023/06/collaborating-to-bring-ai-innovation-to-education?WT.mc_id=academic-105485-koreyst)有何关系 。 我们希望构建由人工智能驱动的个性化学习应用程序 - 所以让我们考虑一下我们应用程序的针对不同用户如何“设计”提示: - -- **管理员**可能会要求人工智能分析课程数据以识别覆盖范围的差距\_。 人工智能可以总结结果或用代码将其可视化。 -- **教育者**可能会要求人工智能为目标受众和主题生成教学计划。 AI 可以按照指定的格式构建个性化计划。 -- **学生**可能会要求人工智能辅导他们学习困难的科目。 人工智能现在可以通过适合学生水平的课程、结合提示和示例来指导学生。 - -这只是冰山一角。 查看 [教育中的提示工程](https://github.com/microsoft/prompts-for-edu/tree/main?WT.mc_id=academic-105485-koreyst) - 一个由教育专家设计的开源提示库 ! 尝试在沙箱中运行其中一些提示或使用 OpenAI Playground 看看会产生什么结果! - - - -## 什么是提示工程? - -在本章中,我们将**提示工程**定义为设计和优化文本输入(提示) 的过程,以便为指定的应用程序目标和模型提供一致且高质量的响应(完成) 。 我们可以将其视为一个两步过程: - -- 设计指定模型和目标的初始提示 -- 通过迭代的方式提炼提示语以提高响应质量 - -这必然是一个反复尝试的过程,需要用户的直觉和努力才能获得最佳结果。 那么为什么它很重要呢? 要回答这个问题,我们首先需要了解三个概念: - -- _Tokenization_ = 模型如何“看到”提示 -- _Base LLMs_ = 基础模型如何“处理”提示 -- _Instruction-Tuned LLM_ = 模型现在如何查看“任务” - -### Tokenization - -LLM 将提示视为标记序列,其中不同的模型(或模型的版本)可以以不同的方式对同一提示进行标记。 由于 LLM 是根据标记(而不是原始文本)进行训练的,因此提示标记化的方式对生成的响应的质量有直接影响。 - -要直观地了解标记化的工作原理,请尝试使用如下所示的 [OpenAI Tokenizer](https://platform.openai.com/tokenizer?WT.mc_id=academic-105485-koreyst) 等工具。 复制您的提示 - 并查看如何将其转换为标记,注意空白字符和标点符号的处理方式。 请注意,此例子显示的是较旧的 LLM (GPT-3) - 因此使用较新的模型尝试此操作可能会产生不同的结果。 - -![Tokenization](../../images/04-tokenizer-example.png?WT.mc_id=academic-105485-koreyst) - -### 概念: 基础模型 - -一旦提示被标记化,[“Base LLM”](https://blog.gopenai.com/an-introduction-to-base-and-instruction-tuned-large-language-models-8de102c785a6?WT.mc_id=academic-105485-koreyst)的主要功能 (或基础模型)是预测该序列中的标记。 由于 LLMs 接受过大量文本数据集的训练,因此他们对标记之间的统计关系有很好的理解,并且可以自信地做出预测。 并不是说他们不理解提示或标记中单词的含义,他们只是看到了一个可以通过下一个预测“完成”的模式。 他们可以继续预测序列,直到被用户干预或某些预先设定的条件终止。 - -想了解基于提示补全是如何工作的吗? 使用默认设置将上述提示输入到 Azure OpenAI Studio [_Chat Playground_](https://oai.azure.com/playground?WT.mc_id=academic-105485-koreyst)。 系统配置会将提示视为信息请求 - 因此您应该看到满足此上下文的补全。 - -但是,如果用户想要查看满足某些标准或任务目标的特定内容怎么办? 这就是通过 LLMs 进行指令调整发挥作用的地方。 - -![Base LLM Chat Completion](../../images/04-playground-chat-base.png?WT.mc_id=academic-105485-koreyst) - -### 概念: LLMs 中的指令调整 - -[ LLMs 中的指令调整](https://blog.gopenai.com/an-introduction-to-base-and-instruction-tuned-large-language-models-8de102c785a6?WT.mc_id=academic-105485-koreyst) 从基础模型开始,并使用以下参数对其进行微调 可以包含明确指令的示例或输入/输出对(例如多轮“消息”),以及人工智能尝试遵循该指令的响应。 - -它使用诸如人类反馈强化学习 (RLHF) 之类的技术,可以训练模型“遵循指令”并“从反馈中学习”,从而产生更适合实际应用且与用户目标更相关的响应。 - -让我们尝试一下 - 重新访问上面的提示,但现在更改系统消息,提供以下指令作为上下文: - -> _Summarize content you are provided with for a second-grade student. Keep the result to one paragraph with 3-5 bullet points._ - -看看现在如何调整结果以反映所需的目标和格式? 教育工作者现在可以直接在该课程的 ppt 中使用此结果。 - -![Instruction Tuned LLM Chat Completion](../../images/04-playground-chat-instructions.png?WT.mc_id=academic-105485-koreyst) - -## 为什么我们需要提示工程 - -现在我们知道了 LLMs 如何处理提示,让我们谈谈为什么我们需要提示工程。 答案在于,当前的 LLMs 的算法也有许多挑战,如果不及时优化,就很难实现“可靠且一致的补全”。 例如: - -1. **模型响应是随机的。**相同的提示可能会针对不同的模型或模型版本产生不同的响应。 甚至可能在不同时间使用相同模型产生不同的结果。 提示工程技术可以通过提供更好帮助我们最大限度地减少这些变化所带来的影响。 - -2. **模型可以产生幻觉响应。**模型是使用大型但有限数据集进行预训练的,这意味着它们缺乏有关训练范围之外的概念的知识。 因此,它们可能会产生不准确、虚构或与已知事实直接矛盾的完成结果。 提示工程技术可以帮助用户识别和减轻幻觉,例如通过向人工智能询问出处或推理过程。 - -3. **模型功能会有所不同。** 较新的模型或模型迭代将具有更丰富的功能,但也会带来独特的怪癖以及成本和复杂性方面的平衡。 提示工程可以帮助我们开发最佳实践和工作流程,以可扩展和无缝的方式消除差异并适应特定于模型的要求。 - -让我们看看 OpenAI 或 Azure OpenAI Playground 中的实际情况: - -- 对不同的 LLM 部署(例如 OpenAI、Azure OpenAI、Hugging Face)使用相同的提示 - 您看到差异了吗? -- 对相同的 LLM 部署(例如 Azure OpenAI Playground)重复使用相同的提示 - 产生的结果有何不同? - -### 幻觉示例 - -想了解幻觉是如何运作的吗? 想象一个提示,指示人工智能为不存在的主题生成内容(以确保在训练数据集中没有该信息)。 例如 - 我尝试了这个提示: - -> **Prompt:** generate a lesson plan on the Martian War of 2076. - -网络搜索显示,有关于火星战争的虚构叙述(例如电视剧或书籍),但没有 2076 年的故事。常识还告诉我们,2076 年是“未来”,因此无法与真实事件联系起来。 - -那么,当我们对不同的 LLMs 提供者运行此提示时会发生什么? - -> **响应 1**: OpenAI Playground (GPT-35) - -![Response 1](../../images/04-fabrication-oai.png?WT.mc_id=academic-105485-koreyst) - -> **响应 2**: Azure OpenAI Playground (GPT-35) - -![Response 2](../../images/04-fabrication-aoai.png?WT.mc_id=academic-105485-koreyst) - -> **响应 3**: : Hugging Face Chat Playground (LLama-2) - -![Response 3](../../images/04-fabrication-huggingchat.png?WT.mc_id=academic-105485-koreyst) - -正如预期的那样,由于随机行为和模型能力变化,每个模型(或模型版本)都会产生略有不同的响应。 例如,一个模型针对八年级受众,而另一个模型则假设高中生。 但所有三个模型确实生成了可以让不知情的用户相信该事件是真实的响应 - -像元提示和温度配置这样的提示工程技术可以在一定程度上减少模型幻觉。 新的提示工程架构还将新工具和技术无缝地融入到提示流程中,以减轻或减少其中一些影响。 - -## 案例学习: GitHub Copilot - -让我们通过一个案例研究来了解如何在实际解决方案中使用提示工程:[GitHub Copilot](https://github.com/features/copilot?WT.mc_id=academic-105485-koreyst)。 - -GitHub Copilot 是您的“AI 结对编程器” - 它将文本提示转换为代码补全,并集成到您的开发环境(例如 Visual Studio Code)中,以提供无缝的用户体验。 正如下面的系列博客中所述,最早的版本基于 OpenAI Codex 模型 - 工程师很快意识到需要微调模型并开发更好的提示工程技术,以提高代码质量。 7 月,他们 [首次推出了超越 Codex 模型的改进人工智能模型](https://github.blog/2023-07-28-smarter-more-efficient-coding-github-copilot-goes-beyond-codex-with-improved-ai-model/?WT.mc_id=academic-105485-koreyst) 以获得更快的建议。 - -按顺序阅读帖子,了解他们的成长过程 - -- **2023 年 5 月** | [GitHub Copilot is Getting Better at Understanding Your Code](https://github.blog/2023-05-17-how-github-copilot-is-getting-better-at-understanding-your-code/?WT.mc_id=academic-105485-koreyst) -- **2023 年 5 月** | [Inside GitHub: Working with the LLMs behind GitHub Copilot](https://github.blog/2023-05-17-inside-github-working-with-the-llms-behind-github-copilot/?WT.mc_id=academic-105485-koreyst). -- **2023 年 6 月** | [How to write better prompts for GitHub Copilot](https://github.blog/2023-06-20-how-to-write-better-prompts-for-github-copilot/?WT.mc_id=academic-105485-koreyst). -- **2023 年 7 月** | [.. GitHub Copilot goes beyond Codex with improved AI model](https://github.blog/2023-07-28-smarter-more-efficient-coding-github-copilot-goes-beyond-codex-with-improved-ai-model/?WT.mc_id=academic-105485-koreyst) -- **2023 年 7 月** | [A Developer's Guide to Prompt Engineering and LLMs](https://github.blog/2023-07-17-prompt-engineering-guide-generative-ai-llms/?WT.mc_id=academic-105485-koreyst) -- **2023 年 9 月** | [How to build an enterprise LLM app: Lessons from GitHub Copilot](https://github.blog/2023-09-06-how-to-build-an-enterprise-llm-application-lessons-from-github-copilot/?WT.mc_id=academic-105485-koreyst) - -您还可以浏览他们的[工程师博客](https://github.blog/category/engineering/?WT.mc_id=academic-105485-koreyst)以获取更多帖子,例如[该链接](https://github.blog/2023-09-27-how-i-used-github-copilot-chat-to-build-a-reactjs-gallery-prototype/?WT.mc_id=academic-105485-koreyst) 展示了如何应用这些模型和技术来驱动现实世界的应用程序。 - ---- - - - -## 构建提示的方法 - -我们已经了解了为什么提示工程重要性 - 现在让我们了解提示是如何构建的,以便我们可以评估针对不同的技术以实现更有效的提示设计。 - -### 基础提示 - -让我们从基础提示开始:发送到模型的文本输入,没有其他上下文。 这是一个例子 - 当我们将美国国歌的前几个单词发送到 OpenAI [Completion API](https://platform.openai.com/docs/api-reference/completions?WT.mc_id=academic-105485-koreyst) 时,它会立即完成下一个单词的响应 几行,说明了基本的预测行为。 - -| Prompt (Input) | Completion (Output) | -| :----------------- | :----------------------------------------------------------------------------------------------------------------------------------------- | -| Oh say can you see | It sounds like you're starting the lyrics to "The Star-Spangled Banner," the national anthem of the United States. The full lyrics are ... | - -### 复杂的提示 - -现在让我们为基础提示添加上下文和说明。 [Chat Completion API](https://learn.microsoft.com/azure/ai-services/openai/how-to/chatgpt?WT.mc_id=academic-105485-koreyst) 让我们可以将复杂的提示构建为集合 messages 包含: - -- 反映用户输入和助理响应的输入/输出对。 -- 系统消息设置助理行为或个性化。 - -该请求现在采用以下形式,其中标记化有效地从上下文和对话中捕获相关信息。 现在,更改系统上下文对补全质量的影响并与提供的用户输入一样。 - -```python -response = openai.chat.completions.create( - model="gpt-3.5-turbo", - messages=[ - {"role": "system", "content": "You are a helpful assistant."}, - {"role": "user", "content": "Who won the world series in 2020?"}, - {"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."}, - {"role": "user", "content": "Where was it played?"} - ] -) -``` - -### 指令式的提示 - -在上面的示例中,用户提示是一个简单的文本查询,可以解释为信息请求。 通过指令提示,我们可以使用该文本更详细地指定任务,从而为人工智能提供更好的指导。 这是一个例子: - -| Prompt (Input) | Completion (Output) | Instruction Type | -| :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------- | :------------------ | -| Write a description of the Civil War | _returned a simple paragraph_ | Simple | -| Write a description of the Civil War. Provide key dates and events and describe their significance | _returned a paragraph followed by a list of key event dates with descriptions_ | Complex | -| Write a description of the Civil War in 1 paragraph. Provide 3 bullet points with key dates and their significance. Provide 3 more bullet points with key historical figures and their contributions. Return the output as a JSON file | _returns more extensive details in a text box, formatted as JSON that you can copy-paste to a file and validate as needed_ | Complex. Formatted. | - -## 主要内容 - -在上面的示例中,提示仍然相当开放,允许 LLMs 决定其预训练数据集的哪一部分是相关的。 使用主要内容设计模式,输入文本分为两部分: - -- 指令(动作) -- 相关内容(影响响应) - -下面是一个示例,其中的指令是“用 2 句话总结这一点”。 - -| Prompt (Input) | Completion (Output) | -| :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Jupiter is the fifth planet from the Sun and the largest in the Solar System. It is a gas giant with a mass one-thousandth that of the Sun, but two-and-a-half times that of all the other planets in the Solar System combined. Jupiter is one of the brightest objects visible to the naked eye in the night sky, and has been known to ancient civilizations since before recorded history. It is named after the Roman god Jupiter.[19] When viewed from Earth, Jupiter can be bright enough for its reflected light to cast visible shadows,[20] and is on average the third-brightest natural object in the night sky after the Moon and Venus.
**Summarize this in 2 short sentences** | Jupiter, the fifth planet from the Sun, is the largest in the Solar System and is known for being one of the brightest objects in the night sky. Named after the Roman god Jupiter, it's a gas giant whose mass is two-and-a-half times that of all other planets in the Solar System combined. | - -主要内容片段可以通过多种方式使用来驱动更有效的指令: - -- **示例** - 不要用明确的指令告诉模型要做什么,而是给它提供要做什么的示例,并让它进行推断。 -- **暗示** - 遵循带有“暗示”的说明,引导完成,引导模型做出更相关的响应。 -- **模板** - 这些是带有占位符(变量)提示的可重复“配方”,可以使用特定用例的数据进行自定义。 - -### 用例方式 - -这种方法中,您使用主要内容来“向模型提供”给定指令所需输出的一些示例,并让它推断所需输出的模式。 根据提供的示例数量,我们可以有零样本提示、单样本提示、少样本提示等。 - -提示现在由三个部分组成: - -- 任务描述 -- 所需输出的一些示例 -- 新示例的开始(成为隐式任务描述) - -| Learning Type | Prompt (Input) | Completion (Output) | -| :------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------- | -| Zero-shot | "The Sun is Shining". Translate to Spanish | "El Sol está brillando". | -| One-shot | "The Sun is Shining" => ""El Sol está brillando".
"It's a Cold and Windy Day" => | "Es un día frío y ventoso". | -| Few-shot | The player ran the bases => Baseball
The player hit an ace => Tennis
The player hit a six => Cricket
The player made a slam-dunk => | Basketball | -| | | | - -请注意,我们如何必须在零样本提示中提供明确的指令(“翻译为西班牙语”),但它是在一次提示示例中推断出来的。 这个少样本示例展示了如何添加更多示例来让模型在不添加指令的情况下做出更准确的推理。 - -### 暗示提示 - -使用主要内容的另一种技术是提供暗示而不是示例。 在这种情况下,我们通过使用反映所需响应格式的片段启动来让模型朝正确的方向进行推理。 然后,模型“接受提示”,继续按照这种思路进行。 - -| Number of Cues | Prompt (Input) | Completion (Output) | -| :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| 0 | Jupiter is the fifth planet from the Sun and the largest in the Solar System. It is a gas giant with a mass one-thousandth that of the Sun, but two-and-a-half times that of all the other planets in the Solar System combined. Jupiter is one of the brightest objects visible to the naked eye in the night sky, and has been known to ancient civilizations since before recorded history.
**Summarize This** | Jupiter is the largest planet in our Solar System and the fifth one from the Sun. It is a gas giant with a mass 1/1000th of the Sun's, but it is heavier than all the other planets combined. Ancient civilizations have known about Jupiter for a long time, and it is easily visible in the night sky.. | -| 1 | Jupiter is the fifth planet from the Sun and the largest in the Solar System. It is a gas giant with a mass one-thousandth that of the Sun, but two-and-a-half times that of all the other planets in the Solar System combined. Jupiter is one of the brightest objects visible to the naked eye in the night sky, and has been known to ancient civilizations since before recorded history.
**Summarize This**
What we learned is that Jupiter | is the fifth planet from the Sun and the largest in the Solar System. It is a gas giant with a mass one-thousandth that of the Sun, but two-and-a-half times that of all the other planets combined. It is easily visible to the naked eye and has been known since ancient times. | -| 2 | Jupiter is the fifth planet from the Sun and the largest in the Solar System. It is a gas giant with a mass one-thousandth that of the Sun, but two-and-a-half times that of all the other planets in the Solar System combined. Jupiter is one of the brightest objects visible to the naked eye in the night sky, and has been known to ancient civilizations since before recorded history.
**Summarize This**
Top 3 Facts We Learned: | 1. Jupiter is the fifth planet from the Sun and the largest in the Solar System.
2. It is a gas giant with a mass one-thousandth that of the Sun...
3. Jupiter has been visible to the naked eye since ancient times ... | -| | | | - -### 提示模版 - -提示模板是预定义的提示配方,可以根据需要进行存储和重用,以大规模推动更一致的用户体验。 最简单的形式是,它只是一组提示示例的集合,例如 [OpenAI 中的这个例子](https://platform.openai.com/examples?WT.mc_id=academic-105485-koreyst),它提供了交互式提示组件(用户和系统消息)和 AP 驱动请求格式来支持重用。 - -在它更复杂的形式中,比如[LangChain 的这个例子](https://python.langchain.com/docs/concepts/prompt_templates/?WT.mc_id=academic-105485-koreyst),它包含占位符,可以替换为来自各种来源的数据(用户 输入、系统上下文、外部数据源等)来动态生成提示。 这使我们能够创建一个可重用的提示库,可用于大规模地**以编程方式**驱动一致的用户体验。 - -最后,模板的真正价值在于能够为垂直应用程序领域创建和发布提示库 - 其中提示模板现在已优化以反映特定于应用程序的上下文或示例,使响应对于目标用户受众更加相关和准确 。 [Prompts For Edu](https://github.com/microsoft/prompts-for-edu?WT.mc_id=academic-105485-koreyst) repo 是这种方法的一个很好的例子,它为教育领域策划了一个提示库,重点关注课程计划等关键目标, 课程设计、学生辅导等 - -## 支持内容 - -如果我们将提示构建视为具有指令(任务) 和目标(主要内容),那么次要内容\_像我们提供的附加上下文**以某种方式影响输出**。 它可以是调整参数、格式化指令、主题分类法等,可以帮助模型定制其响应以适应所需的用户目标或期望。 - -例如:给定一个包含课程表中所有可用课程的广泛元数据(名称、描述、级别、元数据标签、讲师等)的课程目录: - -- 我们可以定义一条指令来“总结 2023 年秋季课程目录” -- 我们可以使用主要内容来提供所需输出的一些示例 -- 我们可以使用次要内容来识别最感兴趣的 5 个“标签”。 - -现在,该模型可以按照几个示例所示的格式提供摘要 - 但如果结果具有多个标签,它可以优先考虑辅助内容中标识的 5 个标签。 - ---- - - - -## 提示最佳实践 - -现在我们知道了如何构建提示,我们可以开始思考如何设计它们以反映最佳实践。 我们可以从两部分来思考这个问题——拥有正确的心态和采用正确的技术。 - -### 提示工程思维 - -提示工程是一个反复试验的过程,因此请记住三个广泛的指导因素: - -1. **领域理解很重要。** 响应准确性和相关性是应用程序或用户操作的与特定领域相关的函数。 运用您的直觉和领域专业知识进一步**定制技术**。 例如,在系统提示中定义特定于某个领域的个性化,或在用户提示中使用特定于某领域的模板。 提供反映特定领域上下文的辅助内容,或使用特定领域的提示和示例来指导模型走向熟悉的使用模式。 - -2. **模型理解很重要。** 我们知道模型产生的结果本质上是随机的。 但模型实现也可能因它们使用的训练数据集(预先训练的知识)、它们提供的功能(例如,通过 API 或 SDK)以及它们优化的内容类型(例如,代码与图像与文本)。 了解您正在使用的模型的优点和局限性,并利用这些知识来确定任务的优先级或构建针对模型功能进行优化的自定义模板。 - -3. **迭代和验证很重要。** 模型正在迅速发展,提示工程技术也在迅速发展。 作为领域专家,您可能有其他特定应用程序的背景或标准,这些背景或标准可能不适用于更广泛的社区。 使用提示工程工具和技术“快速启动”提示构建,然后使用您自己的直觉和领域专业知识迭代和验证结果。 记录您的见解并创建一个**知识库**(例如提示库),其他人可以将其用作新的基线,以便将来更快地迭代。 - -## 最佳实践 - -现在让我们看看从业者推荐的常见最佳实践文档,包括 [Open AI](https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-openai-api) 和 [ Azure OpenAI](https://learn.microsoft.com/azure/ai-services/openai/concepts/prompt-engineering#best-practices?WT.mc_id=academic-105485-koreyst) - -| What | Why | -| :-------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| Evaluate the latest models. | New model generations are likely to have improved features and quality - but may also incur higher costs. Evaluate them for impact, then make migration decisions. | -| Separate instructions & context | Check if your model/provider defines _delimiters_ to distinguish instructions, primary and secondary content more clearly. This can help models assign weights more accurately to tokens. | -| Be specific and clear | Give more details about the desired context, outcome, length, format, style etc. This will improve both the quality and consistency of responses. Capture recipes in reusable templates. | -| Be descriptive, use examples | Models may respond better to a "show and tell" approach. Start with a `zero-shot` approach where you give it an instruction (but no examples) then try `few-shot` as a refinement, providing a few examples of the desired output. Use analogies. | -| Use cues to jumpstart completions | Nudge it towards a desired outcome by giving it some leading words or phrases that it can use as a starting point for the response. | -| Double Down | Sometimes you may need to repeat yourself to the model. Give instructions before and after your primary content, use an instruction and a cue, etc. Iterate & validate to see what works. | -| Order Matters | The order in which you present information to the model may impact the output, even in the learning examples, thanks to recency bias. Try different options to see what works best. | -| Give the model an “out” | Give the model a _fallback_ completion response it can provide if it cannot complete the task for any reason. This can reduce chances of models generating false or fabricated responses. | -| | | - -任何最佳实践一样,请记住,\_您的结果可能会因模型、任务和领域而异。 使用这些作为起点,并迭代以找到最适合您的方法。 随着新模型和工具的出现,不断重新评估您的提示工程,重点关注该提示工程的可扩展性和响应质量。 - - - -## 作业 - -恭喜! 您已经完成本章的学习! 是时候用真实的例子来测试其中掌握的一些概念和技术了! - -对于我们的作业,我们将使用 Jupyter Notebook 通过交互式方式完成的练习。 您还可以使用自己的 Markdown 和代码 cell 来扩展 Notebook,以自行探索性想法。 - -### 首先,fork the repo,然后 - --(推荐)启动 GitHub Codespaces - -- (或者)将 repo 克隆到本地设备并将其与 Docker Desktop 一起使用 -- (或者)使用您的笔记本运行时环境来打开笔记本。 - -### 接下来,配置你的环境变量 - -- 将存储库根目录中的“.env.copy”文件复制为“.env”并填写“OPENAI_API_KEY”值。 您可以在 [OpenAI Dashboard](https://beta.openai.com/account/api-keys?WT.mc_id=academic-105485-koreyst) 中找到您的 API 密钥。 - -### 接下来,打开 Jupyter Notebook - -- 选择运行时内核。 如果使用选项 1 或 2,只需选择开发容器提供的默认 Python 3.10.x 内核即可。 - -您已准备好进行操作。 请注意,这里没有正确和错误的答案 - 只是通过反复试验来探索选项,并建立对指定模型和应用程序领域有效的直觉。 - -因此,本章中没有代码解决方案部分。 相反,笔记本将带有标题为“My Solution:”的 Markdown 单元格,其中显示一个示例输出以供参考。 - - - -## 知识检查 - -以下哪项是遵循一些合理的最佳实践的最佳提示? - -1. Show me an image of red car -2. Show me an image of red car of make Volvo and model XC90 parked by a cliff with the sun setting -3. Show me an image of red car of make Volvo and model XC90 - -答:2,这是最好的提示,因为它提供了有关“内容”的详细信息并详细说明(不仅仅是任何汽车,而是特定的品牌和型号),并且还描述了整体设置。 3 是次佳的,因为它也包含很多描述。 - -## 🚀 知识拓展 - -看看您是否可以根据提示利用“暗示”技术:完成句子“向我显示沃尔沃制造的红色汽车的图像”。 它会做出什么反应?您将如何改进它? - -## 继续学习 - -想要了解更多有关不同提示工程概念的信息吗? 转至[进阶学习的页面](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) 查找有关此章节的其他重要资源。 - -前往第五章学习,我们将了解[创建高级的提示工程技巧](../../../05-advanced-prompts/translations/cn/README.md?WT.mc_id=academic-105485-koreyst)! diff --git a/04-prompt-engineering-fundamentals/translations/ja-jp/README.md b/04-prompt-engineering-fundamentals/translations/ja-jp/README.md deleted file mode 100644 index ecd0e00a10..0000000000 --- a/04-prompt-engineering-fundamentals/translations/ja-jp/README.md +++ /dev/null @@ -1,417 +0,0 @@ -# プロンプト・エンジニアリングの基礎 - -[![Prompt Engineering Fundamentals](../../images/04-lesson-banner.png?WT.mc_id=academic-105485-yoterada)](https://aka.ms/gen-ai-lesson4-gh?WT.mc_id=academic-105485-koreyst) - -大規模言語モデル (LLM) では、プロンプトの書き方がとても重要で、慎重に作成したプロンプトは、そうでないものに比べ良い結果をもたらします。しかし、プロンプトやプロンプト・エンジニアリングとは一体どういう物なのでしょうか?また、LLM に送信する内容をどのようにして改善すればいいのでしょうか?この章と次の章では、そうした疑問に答えたいと思います。 - -「_生成 AI_」は、利用者からのリクエストに対して、テキスト、画像、オーディオ、コード等の新しいコンテンツを生成する能力を持っています。これを実現するために、OpenAI の GPT(Generative Pre-trained Transformer)シリーズのような、自然言語とコードの使用目的でトレーニングされた「_大規模言語モデル(LLM)_」を利用できます。 - -利用者は、チャットのような馴染み深い手法で、特別な技術の知識や研修を受講しなくても、これらのモデルと対話できるようになります。これらのモデルは、「_プロンプト_」で操作し、利用者がテキストの入力(プロンプト)をモデルに送信すると、AI モデルからの回答(コンプリーション)が得られます。その後、利用者は何度も 「AI と対話」を重ね、複数回のやり取りを通じてプロンプトを洗練させ、期待する回答が得られるまで調整を行っていきます。 - -現在、「プロンプト」は生成 AI アプリケーションの主要なプログラミング・インターフェースとなっており、モデルに対して何を行うべきか指示し、そして返される回答の品質にも影響を与えています。「プロンプト・エンジニアリング」は、大規模で一貫性のある高品質な回答を得るためのプロンプトの設計と最適化に焦点を当てた、急速に成長している研究分野です。 - -## 学習目標 - -このレッスンでは、プロンプト・エンジニアリングとは何か、そしてその重要性、また特定のモデルやアプリケーションの目的に応じた、効果的なプロンプトの作成方法について学習します。プロンプト・エンジニアリングの基本概念とベスト・プラクティスを理解し、これらを適用する例を、インタラクティブな Jupyter Notebook の「サンドボックス」環境上で動かし、その操作方法も学びます。 - -このレッスンの終了後、下記ができるようになります: - -1. プロンプト・エンジニアリングとは何か、またその重要性について説明できる -2. プロンプトの構成要素とその使用方法について述べる -3. プロンプト・エンジニアリングのベストプラクティスと技術を習得する -4. OpenAI のエンドポイントにアクセスし、学んだテクニックを実際に試す - -プロンプト・エンジニアリングは現在、科学というよりは、むしろ芸術に近いものです。これに対する感覚を高めるには、「_より多くの練習_」を積み重ね、アプリケーション専門知識で推奨される技術や、モデル固有の最適化を組み合わせた、試行錯誤による検証が重要です。 - -## サンドボックス (Sandbox) とは - -このレッスンに付随する Jupyter ノートブックは、学んだ内容を実際に試せる「_サンドボックス_」環境を提供します。レッスン中、もしくは最終的なコードチャレンジで利用できます。演習を行うためには、下記が必要です: - -1. OpenAI API キー - デプロイした大規模言語モデル(LLM)のサービスエンドポイント -2. Python の実行環境 - ノートブックを実行する環境 - -このリポジトリは、Python 3 の実行環境を含むコンテナ・イメージを「_.devcontainer_」ディレクトリ配下の設定ファイルで提供しています。VS Code でこのリポジトリを開くと、GitHub Codespaces、もしくは Docker Desktop をインストールしたご自身のローカル環境で、コンテナ・イメージを自動的に起動できます。その後、ノートブックを開いて Python 3.x カーネルを選択すると、ノートブックを実行する準備が整います。 - -デフォルトで用意されているノートブックは、OpenAI の API キーを利用する設定になっています。フォルダのルート・ディレクトリにある `.env.copy` を `.env` にリネームし、`OPENAI_API_KEY=` の行に API キーを入力するだけで、準備が完了します。 - -このノートブックには基本的な演習が用意されていますが、より多くのサンプルやアイディアを試すために、ご自身で _Markdown_(説明文)や _Code_(プロンプトのリクエスト)のセクションを追加できます。これにより、プロンプト・デザインに対する感覚をより養えます。 - -## スタートアップ - -それでは、_このトピック_ がスタートアップのミッションである「[教育へ AI 革新をもたらす](https://educationblog.microsoft.com/2023/06/collaborating-to-bring-ai-innovation-to-education?WT.mc_id=academic-105485-yoterada)」とどのように結びついているのかについて見て行きましょう。私たちは「_個別学習_」を実現する AI アプリケーションの開発を目指しています。そこで、私たちのアプリケーションを利用する様々な利用者がプロンプトをどのように「デザイン」するのかを考えてみましょう。 - -- **管理者**: AI に「_カリキュラムのデータを分析し、カバーしてない領域を特定してください_」と指示する可能性があります。AI はその結果をまとめたり、コードを用いて可視化できます。 -- **教員**: AI に「_特定の生徒と授業科目に応じた授業計画を作成してください_ 」と指示する可能性があります。AI は指定されたフォーマットに従って個別に計画を作成できます。 -- **生徒**: AI に「_苦手な科目に対して個別指導をしてください_」と指示する可能性があります。AI は生徒のレベルに合わせたレッスン、ヒント、例を提供して指導できます。 - -これらは、ほんの一例です。教育専門家から厳選された、オープンソースのプロンプト・ライブラリ「[Prompts For Education](https://github.com/microsoft/prompts-for-edu/tree/main?WT.mc_id=academic-105485-yoterada)」を確認し、さらに広い視野で可能性を探ってみてください! _サンドボックスでそれらのプロンプトを試しに実行したり、OpenAI Playground で試してどのような結果が得られるかを試してください!_ - - - -## プロンプト・エンジニアリングとは何ですか? - -レッスンの冒頭で、**プロンプト・エンジニアリング**は、特定のアプリケーションとモデルに対して、一貫性があり質の高い回答(コンプリーション)を得るために、テキスト入力(プロンプト)を _設計して最適化する_ 作業と説明しました。これは下記の 2 段階のプロセスとして考えられます。 - -- 特定のモデルと目的に合わせた初期プロンプトを「_設計する_」 -- 回答品質を向上させるために、プロンプトを反復して「_改善する_」 - -最適な結果を導き出すためには、利用者の勘と努力を要する試行錯誤の過程が必要不可欠です。それがどうして重要なのかというと、その答えを出す前に、我々は下記の 3 つの概念を理解する必要があります。 - -- _Tokenization_ = モデルがプロンプトを「理解する」方法 -- _Base LLM_ = ファウンデーション・モデルがプロンプトを「処理する」方法 -- _Instruction-Tuned LLM_ = モデルが「タスク」を理解する方法 - -### Tokenization - -LLM は、プロンプトを「_トークンの連続_」として見ています。異なるモデル(またはモデルの異なるバージョン)を利用すると、同じプロンプトでも異なる方法でトークン化する場合があります。LLM は生のテキストではなくトークンを使ってトレーニングしているため、プロンプトがどのようにトークン化されるかは、生成される回答品質に直接影響を及ぼします。 - -トークン化の仕組みを理解するには、こちらの [OpenAI Tokenizer](https://platform.openai.com/tokenizer?WT.mc_id=academic-105485-yoterada) などのツールを使ってご確認いただくのが良いかもしれません。プロンプトをコピーして、それがどのようにトークンに変換されるかをツールからご確認ください。特に空白文字や句読点の扱いに注意してください。下記の例では、古い LLM(GPT-3)の例を示していますが、新しいモデルを利用すると異なる結果が得られるかもしれません。 - -![Tokenization](../../images/04-tokenizer-example.png?WT.mc_id=academic-105485-yoterada) - -> [!TIP] -> 訳者追記: -> 太陽の 1000 分の 1 の質量を持つ巨大ガス惑星ですが、太陽系の他のすべての惑星を合わせた質量の 2 倍です。木星は、夜空で肉眼で見える天体の中で最も明るい天体の一つで、有史以前から古代文明に知られていました。ローマの神ジュピターにちなんで名付けられました。[19]地球から見ると、木星は反射光が目に見える影を落とすのに十分な明るさであり[20]、夜空では月と金星に次いで平均して 3 番目に明るい天体です。 - -### 概念: ファウンデーション・モデル - -プロンプトをトークンに分割した後、「[Base LLM](https://blog.gopenai.com/an-introduction-to-base-and-instruction-tuned-large-language-models-8de102c785a6?WT.mc_id=academic-105485-yoterada)」(またはファウンデーションモデル)は、その分割したトークンの連続した文字列の中で、次に来るトークンは何かを予測します。LLM は膨大な量のテキスト・データでトレーニングされているため、トークン間の統計的な関連性を十分に把握しており、ある程度の自信を持ってその予測を行えます。ただしモデルは、プロンプトやトークンに含まれる単語の「_意味_」 を理解しているわけではなく、次にくるトークンの確率的な予測から「完成」できるパターンを単純に見ているだけです。利用者が操作を停止するか、あらかじめ定められた条件が満たされるまで、予測を続けます。 - -ベースモデルの補完 (completion) がどのように機能するか確認したいですか?上記のプロンプトの出力結果をデフォルトの設定のままで Azure OpenAI Studio の[_チャットプレイグラウンド_](https://oai.azure.com/playground?WT.mc_id=academic-105485-yoterada)にコピー&ペーストしてください。システムは、プロンプトをリクエストとして処理するように構成されているので、文脈に適した回答結果が得られるはずです。 - -![Base LLM Chat Completion](../../images/04-playground-chat-base.png?WT.mc_id=academic-105485-yoterada) - -> [!TIP] -> 訳者追記: -> はい、その通りです。木星は太陽から 5 番目の惑星であり、太陽系で最大の惑星です。主に水素で構成されており、その質量の 4 分の 1 はヘリウムです。木星の強い内部熱は、雲の帯や、少なくとも 17 世紀から存在がわかっている巨大な嵐である大赤斑など、大気中に多くの半永久的な特徴を生み出します。 -> 木星は、顕著な環(リング)システムと多数の衛星でも知られています。現在、木星の周りを回っている衛星は 79 個あり、そのうち 4 個はガニメデ、イオ、エウロパ、カリストです。 - -それでは、利用者がある特定の基準やタスクの目標に対して適する、特定結果を望む場合はどうでしょうか?そのような場合には、「_インストラクション・チューニングされた LLM_」が役立ちます。 - -### 概念: インストラクション・チューニングされた LLM - -[インストラクション・チューニングされた LLM](https://blog.gopenai.com/an-introduction-to-base-and-instruction-tuned-large-language-models-8de102c785a6?WT.mc_id=academic-105485-yoterada) は、ファウンデーションモデルを基に、明確な指示を含む、例や入出力の組み合わせ(例えば、複数回わたる「質問とそれに対する回答例のメッセージ」など)で微調整を施します。すると、AI はその指示に従うような回答の作成を試みるようになります。 - -これには、人間のフィードバックを取り入れた強化学習(Reinforcement Learning with Human Feedback : RLHF)などの技術が使われます。RLHF を利用すると、モデルが利用者からの「_指示に従って_」、「_フィードバックから学習する_」ようにトレーニングでき、これにより実用的なアプリケーションに適した利用者の目的に一致する回答が、より得られるようになります。 - -それでは、実際に試してみましょう。 -先ほどのプロンプトに戻り、今度は _システムメッセージ_ を変更して、下記の指示をコンテキストとして加えてみてください: - -> _提供された内容を小学 2 年生が理解できるように要約してください。結果は 3〜5 項目を箇条書きで 1 段落にまとめてください。_ - -結果が、期待する内容とフォーマットに合わせて調整されているのをお分かり頂けますか?教員は、この回答を授業のスライドに直接利用できるようになります。 - -![Instruction Tuned LLM Chat Completion](../../images/04-playground-chat-instructions.png?WT.mc_id=academic-105485-yoterada) - -> [!TIP] -> 訳者追記: -> -> - 木星は太陽から 5 番目の惑星で、太陽系で最大の惑星です。 -> - 太陽よりは軽いのですが、他のすべての惑星を合わせた重量よりも重いガス惑星です。 -> - 望遠鏡なしで夜空に木星が見えます、それは本当に明るいです! -> - 惑星はローマの神、Jupiter にちなんで名付けられました。 -> - 木星はとても明るく輝いているので、その光は地球に影を落とす場合もあります。通常、夜に月と金星に次いで 3 番目に明るい星です。 - -## プロンプト・エンジニアリングはなぜ必要なのでしょうか? - -LLM がプロンプトをどのように処理するかを理解したところで、_なぜ_ プロンプト・エンジニアリングが必要なのかについて考えてみましょう。その答えは、現在の LLM にはいくつかの課題を抱えているためです。適切なプロンプトの作成と最適化に取り組まなければ、「_信頼性のある一貫した回答_」を得られません。具体的には、下記のような課題が存在しています。 - -1. **モデルの回答は確率的な性質を持っています**:たとえ「_同一プロンプト_」でも、異なるモデルやモデルのバージョンの違いによって、異なる回答を出力する場合があります。そして「_同じモデル_ 」でも、異なる時期に実行すると異なる結果を生じる場合があります。「_プロンプト・エンジニアリングの手法は、より適切なガイドラインを提供し、こうしたばらつきを減らすのに役立ちます。_」 - -1. **モデルは回答を捏造する場合があります**:モデルは「_大規模ながら有限の_」データセットで事前トレーニングされているため、トレーニングの範囲を超える知識は不足しています。その結果、不正確、もしくは架空、あるいは既知の事実と明らかに矛盾する回答を出力する場合があります。「_プロンプトエンジニアリングの手法は、利用者がこのような捏造を特定し軽減するのに役立ちます。例えば、AI に出典や論理的根拠の説明を求めて防ぎます。_」 - -1. **モデルの能力は異なります**:新しいモデルや新世代のモデルは、より高度な機能を持つ一方で、独自の特性やコストと複雑さの面でトレード・オフをもたらします。「_プロンプト・エンジニアリングは、これらの違いを取り除き、スケーラブルでシームレスな方法でモデル固有の要件に適するベスト・プラクティスとワークフローの開発に役立ちます。_」 - -OpenAI や Azure OpenAI プレイグラウンドで実際に試してみましょう: - -- 「_異なる_」 LLM 環境(例えば OpenAI、Azure OpenAI、Hugging Face)で同じプロンプトを使って実行してください - 変化に気づきましたか? -- 「_同じ_」 LLM 環境(例えば:Azure OpenAI プレイグラウンド)で同じプロンプトを繰り返し実行してみてください - これらの変化はどのように変わりましたか? - -### 捏造の例 - -この講座では、LLM がトレーニングの制限やその他の制約により、事実に反する情報を回答する現象を「**捏造**」という用語で説明します。一般的な記事や研究論文で「_幻覚_」と表現される場合もありますが、機械が生み出した回答に対して人間の特性を誤って当てはめる擬人化を避けるために、「_捏造_」という用語の使用を強く推奨します。これは、用語の観点から[責任ある AI のガイドライン](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-105485-yoterada)を強化するものであり、また、一部の文脈で不快感を与えたり排他的であると考えられる用語を排除できます。 - -捏造がどのように行われるかを理解したいですか?AI に対して、トレーニング・データに含まれていない、架空のトピックに関するコンテンツ作成をプロンプトで指示してみてください。例えば、私は下記のプロンプトを試しました: - -> **プロンプト:** 2076 年の火星戦争についての授業計画を生成してください。 - -Web で検索を行ったところ、火星の戦争についてのフィクション(例:テレビドラマや書籍)はいくつか見つかりましたが、2076 年に関するものは存在しませんでした。常識的に考えても、2076 年は「_未来_」であり、実際の出来事との関連付けできません。 - -それでは、このプロンプトを異なる LLM サービス・プロバイダで試した場合、どのような結果が得られるのでしょうか? - -> **回答 1**: OpenAI Playground (GPT-35) - -![Response 1](../../images/04-fabrication-oai.png?WT.mc_id=academic-105485-yoterada) - -> **回答 2**: Azure OpenAI Playground (GPT-35) - -![Response 2](../../images/04-fabrication-aoai.png?WT.mc_id=academic-105485-yoterada) - -> **回答 3**: : Hugging Face Chat Playground (LLama-2) - -![Response 3](../../images/04-fabrication-huggingchat.png?WT.mc_id=academic-105485-yoterada) - -> [!TIP] -> 訳者追記 -> 上記の個々の回答結果はあえて翻訳していません。ここで重要なのは、下記の説明にあるように、同じ質問をした場合でも、モデル毎に違う回答結果が得られる点と、いずれのモデルも回答を捏造しているという点です。 - -予想通り、モデルごと(またはモデルのバージョンごと)に、確率的なふるまいやモデルの能力差によって、微妙に異なる回答が得られました。たとえば、一つのモデルは中学 2 年生を対象に回答しているのに対し、別のモデルは高校生を対象に回答しています。しかし、どのモデルも、情報を全く持たない利用者に対して、その出来事が実際にあったかのように誤解生じさせる回答を生成しました。 - -「_メタプロンプティング_ 」や「_温度調整_」といったプロンプトエンジニアリングの手法は、モデルによる捏造をある程度抑制できます。新しいプロンプト・エンジニアリングの「_アーキテクチャ_」は、これらの影響を緩和または削減させるために、新しいツールや手法をプロンプト・フローにシームレスに取り入れています。 - -## ケーススタディ:GitHub Copilot - -このセクションを終えるにあたり、[GitHub Copilot](https://github.com/features/copilot?WT.mc_id=academic-105485-yoterada) の事例を通じて、プロンプト・エンジニアリングが実際のソリューションでどのように活用されているかを具体的に見ていきましょう。 - -GitHub Copilot は「AI ペア・プログラマー」として機能し、開発環境(例:Visual Studio Code)に統合し、テキスト・プロンプトからコードに変換するなど開発者にシームレスな開発体験を提供します。下記のブログ・シリーズに記述されているように、初期バージョンは OpenAI Codex モデルをベースにしていました。しかしエンジニアはすぐにコード品質をより向上させるため、モデルをファイン・チューニングし、より良いプロンプト・エンジニアリング技術を開発する必要性を認識しました。7 月には、[Codex を越える改良版 AI モデルを発表し](https://github.blog/2023-07-28-smarter-more-efficient-coding-github-copilot-goes-beyond-codex-with-improved-ai-model/?WT.mc_id=academic-105485-yoterada)、これにより、さらに素早い提案が可能になりました。 - -投稿を順番に読んで、GitHub Copilot の学習の過程をたどってください。 - -- **2023 年 5 月** | [GitHub Copilot、コード理解能力を向上](https://github.blog/2023-05-17-how-github-copilot-is-getting-better-at-understanding-your-code/?WT.mc_id=academic-105485-yoterada) -- **2023 年 5 月** | [GitHub の内部:GitHub Copilot の背後にある LLM との連携](https://github.blog/2023-05-17-inside-github-working-with-the-llms-behind-github-copilot/?WT.mc_id=academic-105485-yoterada). -- **2023 年 6 月** | [GitHub Copilot 用のより効果的なプロンプトの作成方法](https://github.blog/2023-06-20-how-to-write-better-prompts-for-github-copilot/?WT.mc_id=academic-105485-yoterada). -- **2023 年 7 月** | [改良した AI モデルで Codex を超越した GitHub Copilot](https://github.blog/2023-07-28-smarter-more-efficient-coding-github-copilot-goes-beyond-codex-with-improved-ai-model/?WT.mc_id=academic-105485-yoterada) -- **2023 年 7 月** | [開発者向けプロンプト・エンジニアリングと LLM のガイド ](https://github.blog/2023-07-17-prompt-engineering-guide-generative-ai-llms/?WT.mc_id=academic-105485-yoterada) -- **2023 年 9 月** | [企業向け LLM アプリの構築方法:GitHub Copilot の事例から学ぶ](https://github.blog/2023-09-06-how-to-build-an-enterprise-llm-application-lessons-from-github-copilot/?WT.mc_id=academic-105485-yoterada) - -また、これらのモデルやテクニックを実際のアプリケーションに適用する方法をまとめた[こちらの記事](https://github.blog/2023-09-27-how-i-used-github-copilot-chat-to-build-a-reactjs-gallery-prototype/?WT.mc_id=academic-105485-yoterada)のように、 -より多くの知見を得たい場合は、[エンジニア・ブログ](https://github.blog/category/engineering/?WT.mc_id=academic-105485-yoterada)もどうぞご覧ください。 - ---- - - - -## プロンプトの組み立て - -ここまで、プロンプト・エンジニアリングがなぜ大切なのかを見てきました。次に、プロンプトをどのようにして「_作成する_」のかを把握し、より効果的なプロンプトを設計するための、様々な手法を見ていきましょう。 - -### 基本的なプロンプト - -基本的なプロンプトから始めましょう:モデルに送信するテキスト入力で、他のコンテキストを含めません。例を挙げると、OpenAI の[Completion API](https://platform.openai.com/docs/api-reference/completions?WT.mc_id=academic-105485-yoterada) にアメリカ国歌の最初の数語を送ると、すぐに次の数行で回答を _完成させる_、基本的な予測動作を行います。 - -| プロンプト (入力) | 回答 (出力) | -| :----------------- | :------------------------------------------------------------------------------------ | -| Oh say can you see | アメリカ合衆国の国歌「星条旗」の歌詞から始めているように聞こえますね。完全な歌詞は... | - -### 複雑なプロンプト - -次に、基本的なプロンプトにコンテキストと指示を加えてみましょう。[Chat Completion API](https://learn.microsoft.com/azure/ai-services/openai/how-to/chatgpt?WT.mc_id=academic-105485-yoterada) を利用する際、以下の要素をメッセージに含め、高度なプロンプトを作成できます: - -- 「_利用者_」の入力(質問)と「_アシスタント_」からの回答例を含む入出力ペア -- 「_システムメッセージ_」:アシスタントの振る舞いや、人格のコンテキストを設定 - -実際のリクエストは下記のようになります。トークン化によってシステム・コンテキストと会話履歴から関連情報を効果的に捉えられるようになります。システム・コンテキストの変更は、利用者の入力内容と同じくらい、回答品質に影響を与える可能性があります。 - -```python -response = openai.chat.completions.create( - model="gpt-3.5-turbo", - messages=[ - {"role": "system", "content": "あなたは頼りになる助手です。"}, - {"role": "user", "content": "2020年のワールドシリーズで優勝したのはどのチームですか?"}, - {"role": "assistant", "content": "2020年のワールドシリーズはロサンゼルス・ドジャースが優勝しました。"}, - {"role": "user", "content": "その試合はどこでプレイされましたか?"} - ] -) -``` - -### 指示 (Instruction) を含むプロンプト - -上記の例では、利用者のプロンプトは情報を求めるだけの単純なテキストの問い合わせでした。 _指示 (Instruction)_ を含むプロンプトを使用すると、テキストを通じてより詳細にタスクを指定し、AI に対する指示を改善できます。以下に例を示します: - -| プロンプト (入力) | 回答 (出力) | 指示 (Instruction) の型 | -| :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------- | -| 南北戦争について教えてください | _単純な説明文を返す_ | シンプル | -| 南北戦争について教えてください。戦争における重要な日付とその出来事、そしてその重要性を教えてください。 | _説明段落の後に、主要なイベントの日付リストとイベント名、それに関する説明が箇条書きで出力されます。_ | 複雑 | -| 南北戦争について 1 段落で説明を書いてください。戦争における重要な日付とその重要性を 3 つの箇条書きにしてください。さらに、主要な歴史上の人物とその貢献について 3 つの箇条書きで記述してください。出力は JSON フォーマットで返してください。 | _テキスト・ボックス内でより詳細な情報を返し、必要に応じてファイルにコピー&ペーストして検証できるように JSON 形式で整形されたデータを出力します_ | 複雑、出力フォーマット指定 | - -## 主要コンテンツ - -上記の例では、プロンプトは比較的自由度が高く、LLM が事前にトレーニングされたデータセットのどの部分が関連するかを決定する余地がありました。_主要コンテンツ_ のデザイン・パターンでは、入力テキストは二つのパートに分割されます: - -- 指示(行動) -- 関連する内容(行動に影響を及ぼす) - -以下は、「これを 2 つの短い文にまとめてください」という指示の例です。 - -| プロンプト (入力) | 回答 (出力) | -| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| 木星は太陽から五番目の惑星で、太陽系で最も大きな惑星です。質量は太陽の千分の一ですが、太陽系内の他のすべての惑星を合わせたものの 2.5 倍の巨大ガス惑星です。木星は夜空に肉眼で見える最も明るい天体の一つで、記録された歴史以前から古代文明に知られていました。ローマ神話の神ジュピターにちなんで名付けられました。[19] 地球から見ると、木星は反射光が目に見える影を投げるほど明るくなる場合があり[20]、平均して月と金星に次いで夜空で三番目に明るい天体です。
**これを 2 つの短い文にまとめてください** | 木星は太陽系で最も大きい惑星で、太陽系の他の全惑星の質量合計の 2.5 倍に相当します。夜空で 3 番目に明るく輝くこの巨大ガス惑星は、古代から知られ、ローマ神話の最高神ジュピターの名を冠しています。 | - -主要コンテンツの部分は、より効果的な指示を出すためにさまざまな方法で利用できます: - -- **実例** - モデルに明確な指示を出す代わりに、実行すべき実例を与えて、そのパターンを推測させます。 -- **キュー(手がかり)** - 完了を促す「キュー(合図)」の指示に従って、モデルをより関連性の高い回答に誘導します。 -- **テンプレート** - 繰り返し再利用できるプロンプトの「レシピ」で、特定の用途に合わせて入力データをカスタマイズできるプレースホルダー(変数)を持ちます。 - -これらを実際により詳しく見ていきましょう。 - -### 使用例 - -この手法では、特定の指示に対して期待する出力のサンプルをいくつか「モデルに提供し」、主要コンテンツを使用し、期待する出力パターンをモデルに推測させるアプローチです。提供する例の数に応じて、ゼロショット、ワンショット、フューショット・プロンプティングなどがあります。 - -プロンプトは、下記の3つの要素から構成されます: - -- タスクの説明 -- 期待する出力の例 -- 新しい問い合わせの開始部分(これが暗黙的にタスク説明となります) - -| 学習の型 | プロンプト (入力) | 回答 (出力) | -| :--------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------- | -| ゼロ・ショット | 「太陽は輝いている」をスペイン語に翻訳してください | "El Sol está brillando". | -| ワン・ショット | 「太陽は輝いている」 => "El Sol está brillando".
"寒くて風の強い日です" => | "Es un día frío y ventoso". | -| フュー・ショット | プレーヤーは塁を回った => 野球
プレーヤーはサービス・エースと取った => テニス
プレーヤーは 6 ランを打った => クリケット
プレーヤーはスラムダンクをした => | バスケットボール | -| | | | - -ゼロ・ショット・プロンプトでは明示的な指示(「スペイン語に翻訳してください」)を提供する必要がありましたが、ワン・ショット・プロンプトの例では、回答が推測されているのをご確認ください。フュー・ショットの例では、さらに複数の例を追加して、モデルが追加の指示なしで、より正確な推論を行えるようになっているのを示しています。 - -### プロンプト・キュー - -利用者が主要コンテンツにアクセスする際には、実例の代わりに「キュー(手がかり)」を提供する選択肢もあります。この場合、期待する回答フォーマットを反映した一部で「_始めて_」、モデルを正しい方向に誘導します。その後、モデルはそのキュー(手がかり)を受け取って、流れに従って続けます。 - -| キューの数 | プロンプト (入力) | 回答 (出力) | -| :--------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| 0 | 木星は太陽から五番目の惑星で、太陽系で最も大きな惑星です。質量は太陽の千分の一ですが、太陽系内の他のすべての惑星を合わせたものの 2.5 倍の巨大ガス惑星です。木星は夜空に肉眼で見える最も明るい天体の一つで、記録された歴史以前から古代文明に知られていました。
**これを要約してください** | 木星は太陽系で最も巨大な惑星であり、質量は太陽系の他のすべての惑星の合計の 2.5 倍に達します。夜空で非常に明るく輝き、古代から人類に認識されていた天体です。 | -| 1 | 木星は太陽から五番目の惑星で、太陽系で最も大きな惑星です。質量は太陽の千分の一ですが、太陽系内の他のすべての惑星を合わせたものの 2.5 倍の巨大ガス惑星です。木星は夜空に肉眼で見える最も明るい天体の一つで、記録された歴史以前から古代文明に知られていました。
**要約すると、私たちが学んだのは、木星が**
| 太陽系で最も大きい惑星で、太陽から五番目に位置し、質量は太陽系の他の惑星を合わせたものより 2.5 倍大きいです。また、夜空でよく見える明るい天体の一つで、古代文明の時代から知られています。 | -| 2 | 木星は太陽から五番目の惑星で、太陽系で最も大きな惑星です。質量は太陽の千分の一ですが、太陽系内の他のすべての惑星を合わせたものの 2.5 倍の巨大ガス惑星です。木星は夜空に肉眼で見える最も明るい天体の一つで、記録された歴史以前から古代文明に知られていました。
**事実から学んだ3つの要約は:**
| 1. 木星は太陽から五番目の位置にある太陽系で最も大きな惑星です。
2. 木星の質量は太陽系の他の惑星を合わせたものよりも 2.5 倍大きく、太陽の千分の一に相当します。
3. 木星は夜空で肉眼によく見える明るい天体であり、古代文明の時代から人類に知られていました。 | -| | | | - -### プロンプト・テンプレート - -プロンプト・テンプレートは、必要に応じて保存し再利用できる「_事前に定義したプロンプトのレシピ_」で、大規模向けに一貫したユーザー・エクスペリエンスを実現するために使用します。最も基本的な形式は、[OpenAI の例](https://platform.openai.com/examples?WT.mc_id=academic-105485-yoterada)のようなプロンプト例のコレクションで、インタラクティブなプロンプト要素(ユーザー・メッセージとシステム・メッセージ) と API 駆動型のリクエスト・フォーマットの両方を提供しており、再利用を促進しています - -[LangChain の例](https://python.langchain.com/docs/how_to/#prompt-templates?WT.mc_id=academic-105485-yoterada)に示されるような複雑な形式では、利用者の入力、システム・コンテキスト、外部データソースなど多岐にわたる情報源から得たデータを置き換える「_プレースホルダー_」も含まれ、プロンプトを動的に生成しています。これにより、大規模な「**プログラムによる**」一貫したユーザー・エクスペリエンスをもたらす再利用可能なプロンプトのライブラリを作成できます。 - -最後に、テンプレートの真の価値は、特定業界 (例、医療、金融、製造など) 用アプリケーションの「_プロンプト・ライブラリ_」を作成し、公開できる点です。プロンプト・テンプレートを、業界に特化したアプリケーション固有のコンテキストや例を反映するように最適化し、ターゲットの利用者にとって回答をより適切で正確なものにします。[Prompts For Edu](https://github.com/microsoft/prompts-for-edu?WT.mc_id=academic-105485-yoterada)は、教育分野に特化したプロンプト・ライブラリを集めたリポジトリで、レッスン計画やカリキュラムの設計、学生の個別指導など、教育関連の重要な項目に焦点を当てたプロンプト・ライブラリを提供する、とても良い例です。 - -## サポートコンテンツ - -プロンプトの作成を、指示(タスク)と目的(主要コンテンツ)を含むものと考えた場合、「_セカンダリ・コンテンツ_」は、「**何らかの形で出力に影響を与える**」追加情報のようなものです。モデルに対するチューニング・パラメータ、フォーマット指示、トピック分類などをセカンダリ・コンテンツに指定すると、利用者の目的や期待にあわせて回答を「調整」できるようになります。 - -例えば、カリキュラムで利用可能な、全コースのカタログがあるとします。そしてカタログには、コースに関する広範なメタデータ(名前、説明、レベル、メタデータタグ、講師など)も含まれています。この場合、次のような指示とコンテンツを与えることができます。 - -- 指示:2023 年秋のコースカタログを要約してください -- 主要コンテンツ:要約したいコースカタログの内容 -- セカンダリ・コンテンツ:興味のあるトップ 5 の「タグ」 - -これで、モデルはいくつかの例に示したフォーマットで要約を提供しますが、仮に結果に複数のタグが含まれている場合は、セカンダリ・コンテンツで指定した 5 つのタグも出力結果に含めます。 - ---- - - - -## プロンプト作成のベストプラクティス - -プロンプトがどのように「_組み立てられる_」かを理解したので、ベスト・プラクティスを反映するように「_プロンプトを設計_」する方法について考えます。これは、「_適切な考え方_」と、「_適切な技術の適用_」という 2 つの側面に分けて検討します。 - -### プロンプト・エンジニアリングの考え方 - -プロンプト・エンジニアリングは試行錯誤が必要なので、以下の 3 つの幅広い指針を念頭にご検討ください. - -1. **ドメインの理解が大切です。** 回答の精度や関連性は、アプリケーションや利用者が活動する「_ドメイン(業界・業種・業務)_」に依存します。直感とドメインの専門知識を用いて、**テクニックをさらにカスタマイズ**してください。たとえば、システム・プロンプトに「_ドメイン固有のパーソナリティ_」を定義したり、ユーザー・プロンプトに「_ドメイン固有のテンプレート_」を使用します。ドメイン固有の文脈を反映するセカンダリ・コンテンツを提供したり、「_ドメイン固有の手がかりや例_」を使用して、慣れ親しんだユースケースにモデルを誘導します。 - -2. **モデル理解が大切です。** モデルは本質的に確率的な性質を持っていますが、使用するトレーニング・データ(事前学習した知識)、提供する機能(例えば API や SDK を通じて)、最適化されたコンテンツの種類(例えばコード、画像、テキスト)によっても実装は異なります。使用するモデルの長所と制限を理解し、その知識を用いて「_タスクに優先順位を付けたり_」、モデルの能力に最適化した「_カスタマイズしたテンプレート_」を作成してください。 - -3. **反復と検証が重要です。** モデルは急速に進化しており、プロンプト・エンジニアリングの手法も急速に進化しています。ドメインの専門家として、広範囲のコミュニティの中には、 「_あなたが実装したプロンプト_」が適さない場合、つまり独自のコンテキストや基準を持つコミュニティもあるかもしれません。プロンプト・エンジニアリングのツールやテクニックを使用してプロンプトを「いち早く試し」、その後、自分の直感とドメインの専門知識を使用して、結果の検証を繰り返しながら行なってください。そして知見を記録し、他者が将来的により迅速に反復できるよう、そして新基準として再利用できる「**ナレッジベース**(例えばプロンプトライブラリ)」を作成してください。 - -## ベストプラクティス - -次に、[Open AI](https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-openai-api?WT.mc_id=academic-105485-yoterada) と [Azure OpenAI](https://learn.microsoft.com/azure/ai-services/openai/concepts/prompt-engineering#best-practices?WT.mc_id=academic-105485-yoterada) の実践者が推奨する一般的なベスト プラクティスを見てみましょう。 - -| 項目 | 理由 | -| :----------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| 最新モデルの評価 | 新世代のモデルは、機能や品質が向上している可能性があります。一方でコストが高くなる可能性もあります。影響を評価し移行の可否を検討します。 | -| 指示とコンテキストの分離 | 使用しているモデルやサービス提供者が、指示やプライマリコンテンツ、セカンダリコンテンツを明確に区別するために、「_区切り文字_」を定義しているか確認してください。これにより、モデルはトークンに対して重みをより正確に割り当てられます。 | -| 具体的かつ明確 | 目的のコンテキスト、結果、長さ、フォーマット、スタイルなどについて詳細を記入してください。これにより、回答の品質と一貫性の両方が向上します。再利用可能なテンプレートにレシピを取り込みます。 | -| 詳細に説明し、実例を示す | モデルは「示しながら教える」アプローチにより適切に回答する可能性があります。まずはゼロショット・アプローチからはじめます、最初は指示を出すだけで例を示さないでください。次にフューショット・アプローチで期待する出力例をいくつか提供し改善します。推論させてください。 | -| キュー(手がかり)を用いて出力を促進 | 回答の起点となる、いくつかの単語やフレーズを与え期待する結果を得てください。 | -| ダブル・ダウン | 場合によっては、モデルに対して自身で反復させる必要があります。メイン・コンテンツの前後で指示を出したり、指示やキュー(手がかり)を使ったりします。反復して検証し、何が機能するかを確認します。 | -| 順序の重要性 | モデルに対する情報提示の順番は出力に影響を及ぼす可能性があります。それが学習例の提示だとしても、最後の情報に過敏に影響を受ける認知バイアス (recency bias) によって影響します。どの順番が最良かを見極めるために、異なる順番で試すのもお勧めします。
(訳者追記:プロンプトの末尾にある情報が出力に大きな影響を与える場合があります) | -| モデルに「代替案」を用意する | 何らかの理由でタスクを完了できない場合に備えて、モデルが回答する「_代替案_」を用意してください。これにより、モデルが誤ったり、捏造した回答を生成する可能性を低減します。 | - -すべてのベストプラクティスに共通して、「_実際の効果はケース・バイ・ケースである_」というのをご認識ください。モデルの種類、タスクの内容、専門分野によっても結果は変わります。上記の指針を手始めに、ご自身にとって何が最も効果的かを見つけるために、試行錯誤を繰り返してください。新しいモデルやツールが登場するたびに、プロセスのスケーラビリティと回答の品質に注目し、プロンプト・エンジニアリングの手法をを継続的に再評価しましょう。 - - - -## 課題 - -おめでとうございます!レッスンの最後までたどり着きました!これから、実際の例を使って、いくつかの概念や技術を試す時が来ました! - -課題では、対話式で取り組める演習問題がセットされた Jupyter Notebook を使用します。また、ご自身でアイデアや技術を検証するために、独自の Markdown やコードセルを Notebook に追加できます。 - -### 作業を開始するには、リポジトリをフォークしてください - -- (推奨) GitHub Codespaces を起動 -- (代替案 1) リポジトリをローカル・デバイスにクローンして、ローカルの Docker Desktop で実行 -- (代替案 2) 好みのノートブック実行環境でノートブックを開く - -### 次に、環境変数を設定してください - -- リポジトリのルートにある `.env.copy` ファイルを `.env` にコピーし、`OPENAI_API_KEY` の値を入力してください。API キーは [OpenAI Dashboard](https://beta.openai.com/account/api-keys?WT.mc_id=academic-105485-yoterada) から取得できます。 - -### 次に、Jupyter Notebook を開いてください - -- 使用する実行環境のカーネルを選択してください。オプション 1 や 2 をご利用される場合は、.devcontainer で提供するコンテナ・イメージの、Python 3.10.x カーネルを選んでください。 - -これで、演習を行う準備が整いました。この演習には「_正解や不正解はありません_」。与えられたモデルとアプリケーション・ドメインに対して、何が効果的かを試行錯誤しながら感覚を養ってください。 - -_このため、このレッスンにはコードの解答例は含めていません。代わりに、ノートブックには 「My Solution」 と書いた Markdown セルがあり、参考の出力例を示しています。_ - - - -## 知識チェック - -以下のプロンプトの中で、適切なベストプラクティスに沿ったものはどれですか? - -1. 赤い車の写真を画像を表示してください -2. 夕日が沈む崖のそばに駐車した、赤いボルボの XC90 モデルの画像を表示してください -3. 赤いボルボの XC90 モデルの画像を表示してください - -A: 2 番が最良のプロンプトです。それは「何を」求めているのかの詳細を提供し、具体的な情報(任意の車ではなく、特定のメーカーとモデル)を含んでいる上、周囲の環境についても描写しています。次に良いのは 3 番で、これも詳細な記述が含まれています。 - -## 🚀 チャレンジ - -プロンプトで 「キュー(手がかり)」のテクニックを利用してください。 -例文:「赤いボルボの車の画像を見せて、そして...」という文を完成させてください。どのような回答が返ってきますか?また、それをどう改善できますか? - -## お疲れ様でした! 次のレッスンを続ける - -プロンプト・エンジニアリングに関して、さらに概念をもっと深く学びたい方は、この話題に関する他の素晴らしい情報を見つけるために[継続的学習のページ](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst)をご参照ください。 - -それでは、レッスン 5 に移り、[高度なプロンプト技術](../../../05-advanced-prompts/translations/ja-jp/README.md?WT.mc_id=academic-105485-yoterada)を見ていきましょう! diff --git a/04-prompt-engineering-fundamentals/translations/ko/README.md b/04-prompt-engineering-fundamentals/translations/ko/README.md deleted file mode 100644 index 0cab50dd92..0000000000 --- a/04-prompt-engineering-fundamentals/translations/ko/README.md +++ /dev/null @@ -1,390 +0,0 @@ -# 프롬프트 엔지니어링 기초 - -[![Prompt Engineering Fundamentals](../../images/04-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson4-gh?WT.mc_id=academic-105485-koreyst) - -LLM에게 어떻게 프롬프트를 작성하는지는 중요합니다. 신중하게 작성된 프롬프트는 그렇지 않은 프롬프트보다 더 좋은 결과를 얻을 수 있습니다. 그런데 이런 개념들, 프롬프트, 프롬프트 엔지니어링이 무엇인지, 그리고 LLM에게 보내는 것을 어떻게 개선할 수 있는지에 대한 질문들은 바로 이 장과 다가올 장에서 답변하려고 합니다. - -_생성형 AI_ 는 사용자의 요청에 응답하여 새로운 콘텐츠(예: 텍스트, 이미지, 오디오, 코드 등)를 생성할 수 있는 능력을 가지고 있습니다. 이는 OpenAI의 GPT("Generative Pre-trained Transformer") 시리즈와 같은 _대형 언어 모델_ (LLMs)을 사용하여 자연어와 코드를 통해 이를 달성합니다. - -사용자들은 이제 채팅과 같은 친숙한 패러다임을 사용하여 이러한 모델과 상호작용할 수 있으며, 기술적 전문지식이나 훈련 없이도 이를 사용할 수 있습니다. 이 모델들은 _프롬프트 기반_ 입니다 - 사용자들은 텍스트 입력(프롬프트, prompt)을 보내고 AI의 응답(완성, completion)을 받습니다. 그런 다음 사용자들은 다중 턴 대화에서 반복적으로 "AI와 대화"를 할 수 있으며, 응답이 그들의 기대에 부합할 때까지 프롬프트를 정제할 수 있습니다. - -"프롬프트"는 이제 생성형 AI 앱의 주요 _프로그래밍 인터페이스_ 가 되어, 모델에게 무엇을 해야 하는지 알려주고 반환된 응답의 품질에 영향을 미칩니다. "프롬프트 엔지니어링"은 프롬프트의 _디자인과 최적화_ 에 초점을 맞춘 빠르게 성장하는 연구 분야로, 대규모로 일관성 있고 품질 좋은 응답을 제공합니다. - -## 학습 목표 - -이번 강의에서는 프롬프트 엔지니어링이 무엇인지, 왜 중요한지, 그리고 주어진 모델과 애플리케이션 목표에 대해 더 효과적인 프롬프트를 어떻게 작성할 수 있는지에 대해 배웁니다. 프롬프트 엔지니어링에 대한 핵심 개념과 모범 사례를 이해하고, 이러한 개념들이 실제 예제에 적용되는 것을 볼 수 있는 인터랙티브한 Jupyter 노트북 "샌드박스" 환경에 대해 알아봅니다. - -이번 강의가 끝날 즈음에는 우리는 다음과 같은 내용들을 할 수 있게 될 것입니다: - -1. 프롬프트 엔지니어링이 무엇인지 그리고 왜 중요한지 설명할 수 있습니다. -2. 프롬프트의 구성 요소들을 설명하고 어떻게 사용하는지 알 수 있습니다. -3. 프롬프트 엔지니어링에 대한 모범 사례와 기법들을 배울 수 있습니다. -4. 배운 기법들을 OpenAI 엔드포인트를 이용해 실제 예제에 적용할 수 있습니다. - -## 샌드박스 학습하기 - -현재 프롬프트 엔지니어링은 과학보다는 예술에 가깝습니다. 이에 대한 직관을 향상시키는 가장 좋은 방법은 _더 많이 연습하는 것_ 이며, 응용 분야 전문 지식과 결합하여 추천 기법과 모델에 특화된 최적화를 시행착오(trial-and-error)하는 것입니다. - -이번 수업에 따른 Jupyter 노트북은 배운 내용을 시도해볼 수 있는 _샌드박스_ 환경을 제공합니다. 여기서는 각 단계에서 또는 마지막의 코드 도전 과제에서 배운 것을 시도해볼 수 있습니다. 연습문제를 실행하려면 다음이 필요합니다: - -1. Azure OpenAI API 키 - 배포된 LLM의 서비스 엔드포인트입니다. -2. 파이썬 런타임 - 노트북을 실행할 수 있는 환경입니다. - -이 저장소는 Python 3 런타임이 포함된 _dev 컨테이너_ 로 구성되어 있습니다. GitHub 코드스페이스에서 저장소를 열거나 로컬 Docker 데스크톱에서 열면 런타임이 자동으로 활성화됩니다. 그런 다음 노트북을 열고 Python 3.x 커널을 선택하여 노트북을 실행 준비합니다. - -기본 노트북은 Azure OpenAI 서비스 리소스와 함께 사용하도록 설정되어 있습니다. 폴더의 루트에 있는 `.env.copy` 파일을 `.env`로 복사하고 `AZURE_OPENAI_API_KEY=` 및 `AZURE_OPENAI_API_ENDPOINT=` 줄에 API 키와 엔드포인트를 업데이트하면 됩니다. -[Azure 포털](https://portal.azure.com?WT.mc_id=academic-105485-koreyst)에서 자신의 Azure OpenAI 리소스로 이동한 후 왼쪽 메뉴의 _Keys and Endpoints_ 탭을 열어 자신의 자격증명을 확인할 수 있습니다. -또한, 배포를 생성할 때 할당한 모델의 이름을 `AZURE_OPENAI_DEPLOYMENT` 변수에 추가해 주세요. 이 연습에 추천하는 모델은 'gpt-35-turbo'입니다. - -노트북에는 _starter_ 연습문제가 포함되어 있지만, 더 많은 예제나 아이디어를 시도해보고 프롬프트 디자인에 대한 직관력을 키우기 위해 자신만의 _마크다운_ (설명) 및 _코드_ (프롬프트 요청) 섹션을 추가하는 것이 좋습니다. - -## 우리 스타트업 - -이제, _본 주제_ 가 우리 스타트업의 [교육에 AI 혁신을 가져오기](https://educationblog.microsoft.com/2023/06/collaborating-to-bring-ai-innovation-to-education?WT.mc_id=academic-105485-koreyst)의 미션과 어떻게 관련되는지에 대해 이야기해보겠습니다. 우리는 _개인화된 학습_ (personalized learning)의 AI 기반 응용 프로그램을 구축하고자 합니다. 그러니 애플리케이션 목표와 모델에 대한 다양한 사용자들이 프롬프트를 "디자인" 할 수 있는 방법에 대해 생각해보겠습니다: - -- **관리자** 는 AI가 _커리큘럼 데이터를 분석하여 부족한 부분을 식별_ 하도록 요청할 수 있습니다. AI는 결과를 요약하거나 코드로 시각화할 수 있습니다. -- **교육자** 는 _대상 그룹과 주제에 대한 레슨 계획을 생성_ 하도록 AI에게 요청할 수 있습니다. AI는 지정된 형식으로 개인화된 계획을 작성할 수 있습니다. -- **학생** 들은 _어려운 주제를 가르쳐 달라고 AI에게 요청_ 할 수 있습니다. 이제 AI는 학생의 수준에 맞게 수업, 힌트 및 예제를 안내할 수 있습니다. - -이것은 빙산의 일각에 불과합니다. [Prompts For Education](https://github.com/microsoft/prompts-for-edu/tree/main?WT.mc_id=academic-105485-koreyst)를 확인해보세요 - 교육 전문가들이 선별한 오픈 소스 프롬프트 라이브러리로, 더 다양한 가능성을 알 수 있습니다! _샌드박스에서 이러한 프롬프트 중 일부를 실행하거나 OpenAI Playground를 사용하여 결과를 확인해보세요!_ - - - -## 프롬프트 엔지니어링이란 무엇인가요? - -이 레슨에서는 **프롬프트 엔지니어링**을 주어진 애플리케이션 목표와 모델에 대해 일관되고 품질 좋은 응답을 제공하기 위해 텍스트 입력(프롬프트)를 _디자인하고 최적화하는_ 과정으로 정의했습니다. 이는 2단계 프로세스로 생각할 수 있습니다: - -- 주어진 모델과 목표에 대한 초기 프롬프트를 _디자인_ 하는 것 -- 응답의 품질을 향상시키기 위해 프롬프트를 _반복적으로 개선_ 하는 것 - -이는 최적의 결과를 얻기 위해 사용자의 직관과 노력이 필요한 시행착오적인 과정입니다. 그렇다면 왜 중요한 것일까요? 이 질문에 답하기 위해서는 세 가지 개념을 먼저 이해해야 합니다: - -- _토큰화_ = 모델이 프롬프트를 "보는" 방식 -- _Base LLMs_ = 파운데이션 모델이 프롬프트를 "처리"하는 방식 -- _Instruction-Tuned LLMs_ = 모델이 "작업"을 인식하는 방식 - -### 토큰화 - -LLM은 프롬프트를 _토큰들의 시퀀스_ 로 인식하며, 다른 모델(또는 모델의 버전)은 동일한 프롬프트를 다른 방식으로 토큰화할 수 있습니다. LLM은 토큰에 대해 훈련되기 때문에(원시 텍스트가 아닌) 프롬프트의 토큰화 방식은 생성된 응답의 품질에 직접적인 영향을 미칩니다. - -토큰화가 어떻게 작동하는지 직관을 얻기 위해 아래와 같은 [OpenAI Tokenizer](https://platform.openai.com/tokenizer?WT.mc_id=academic-105485-koreyst)와 같은 도구를 사용해보세요. 프롬프트를 복사하여 붙여넣고, 공백 문자와 구두점이 어떻게 처리되는지 주의깊게 살펴보세요. 이 예시는 오래된 LLM(GPT-3)을 보여주므로, 새로운 모델로 시도하면 다른 결과가 나올 수 있습니다. - -![토큰화](../../images/04-tokenizer-example.png?WT.mc_id=academic-105485-koreyst) - -### 개념: Foundation 모델 - -프롬프트가 토큰화되면, ["Base LLM"](https://blog.gopenai.com/an-introduction-to-base-and-instruction-tuned-large-language-models-8de102c785a6?WT.mc_id=academic-105485-koreyst) (또는 Foundation 모델)의 주요 기능은 해당 시퀀스에서 토큰을 예측하는 것입니다. LLM은 대량의 텍스트 데이터셋으로 훈련되었기 때문에 토큰 간의 통계적 관계에 대한 좋은 감각을 가지고 있으며, 이 예측을 어느 정도의 확신으로 수행할 수 있습니다. 그러나 LLM은 프롬프트나 토큰의 "의미"를 이해하지 않습니다. 그들은 그들의 다음 예측으로 "완성"할 수 있는 패턴만을 볼 뿐입니다. 사용자의 개입이나 미리 설정된 조건에 의해 종료될 때까지 시퀀스를 계속 예측할 수 있습니다. - -프롬프트 기반 완성이 어떻게 작동하는지 보고 싶으신가요? 위의 프롬프트를 Azure OpenAI Studio의 [_Chat Playground_](https://oai.azure.com/playground?WT.mc_id=academic-105485-koreyst)에 입력하고 기본 설정으로 실행해보세요. 시스템은 프롬프트를 정보 요청으로 처리하도록 구성되어 있으므로 이와 관련된 완성을 볼 수 있을 것입니다. - -하지만 사용자가 특정한 기준이나 작업 목표를 충족하는 내용을 보고 싶어한다면 어떻게 해야 할까요? 이때 _instruction-tuned_ LLM이 등장합니다. - -![Base LLM Chat Completion](../../images/04-playground-chat-base.png?WT.mc_id=academic-105485-koreyst) - -### 개념: Instruction Tuned LLMs - -[Instruction Tuned LLM](https://blog.gopenai.com/an-introduction-to-base-and-instruction-tuned-large-language-models-8de102c785a6?WT.mc_id=academic-105485-koreyst)은 Foundation 모델로 시작하여 예제나 입력/출력 쌍(예: 다중 턴 "메시지")로 세밀하게 튜닝되며, 명확한 지시사항을 포함할 수 있으며, AI의 응답은 해당 지시를 따르도록 시도합니다. - -이는 Reinforcement Learning with Human Feedback (RLHF)와 같은 기법을 사용하여 모델이 _지시를 따르고_ _피드백을 통해 학습_ 하여 실제 응용 프로그램에 더 적합하고 사용자의 목표와 관련성이 더 높은 응답을 생성할 수 있도록 합니다. - -이제 이를 시도해보세요 - 위의 프롬프트를 다시 방문하되, _시스템 메시지_ 를 다음과 같은 지시사항으로 변경하여 실행해보세요: - -> _제공된 내용을 초등학교 2학년 학생을 위해 요약해주세요. 3-5개의 항목으로 이루어진 한 단락으로 결과를 유지하세요._ - -결과가 원하는 목표와 형식을 반영하도록 조정된 것을 보실 수 있나요? 교육자는 이제 이 응답을 해당 수업의 슬라이드에 직접 사용할 수 있습니다. - -![Instruction Tuned LLM Chat Completion](../../images/04-playground-chat-instructions.png?WT.mc_id=academic-105485-koreyst) - -## 왜 프롬프트 엔지니어링이 필요한가요? - -이제 LLM이 프롬프트를 처리하는 방식을 알았으니, _왜_ 프롬프트 엔지니어링이 필요한지 이야기해봅시다. 답은 현재의 LLM이 _신뢰할 수 있고 일관된 완성_ 을 얻기 위해서는 프롬프트 구성과 최적화에 노력을 기울여야 하는 여러 가지 도전 과제를 가지고 있다는 사실에 있습니다. 예를 들어: - -1. **모델 응답은 확률적입니다.** _동일한 프롬프트_ 는 다른 모델이나 모델 버전에서 다른 응답을 생성할 가능성이 높습니다. 또한 _동일한 모델_ 에서도 _다른 시간에_ 다른 결과를 생성할 수 있습니다. _프롬프트 엔지니어링 기법은 더 나은 가드레일을 제공하여 이러한 변동을 최소화하는 데 도움을 줄 수 있습니다._ - -2. **모델은 응답을 가짜로 만들 수 있습니다.** 모델은 _대규모이지만 유한한_ 데이터셋으로 사전 훈련되기 때문에 훈련 범위를 벗어난 개념에 대한 지식이 부족합니다. 결과적으로, 모델은 정확하지 않거나 상상력이 풍부하거나 알려진 사실과 직접적으로 모순되는 완성을 생성할 수 있습니다. _프롬프트 엔지니어링 기법은 AI에게 인용문이나 추론을 요청함으로써 이러한 가짜 응답을 식별하고 완화하는 데 도움을 줄 수 있습니다._ - -3. **모델의 능력은 다양할 수 있습니다.** 새로운 모델이나 모델 세대는 더 풍부한 기능을 가지지만, 비용과 복잡성에서 독특한 특징과 트레이드 오프를 가져올 수도 있습니다. _프롬프트 엔지니어링은 차이를 추상화하고 모델별 요구 사항에 맞게 조정하는 최상의 방법과 워크플로우를 개발하는 데 도움을 줄 수 있습니다._ - -OpenAI 또는 Azure OpenAI Playground에서 이를 실제로 확인해보세요: - -- 동일한 프롬프트를 다른 LLM 배포(예: OpenAI, Azure OpenAI, Hugging Face)와 함께 사용해보세요 - 변화를 보셨나요? -- 동일한 프롬프트를 _동일한_ LLM 배포(예: Azure OpenAI Playground)에서 반복해서 사용해보세요 - 이러한 변화는 어떻게 다른가요? - -### Fabrications 예시 - -이 강좌에서는 LLM이 훈련 제약이나 다른 제약으로 인해 사실적이지 않은 정보를 생성하는 현상을 가리키는 **"fabrication"** 이라는 용어를 사용합니다. 일반적인 기사나 연구 논문에서는 이를 _"환각(hallucination)"_ 이라고 부르기도 합니다. 그러나 우리는 기계적으로 생성된 결과에 인간과 유사한 특성을 부여하는 것을 방지하기 위해 _"fabrication"_ 이라는 용어를 사용하는 것을 강력히 권장합니다. 이는 또한 용어 관점에서 [책임 있는 AI 가이드라인](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-105485-koreyst)을 강화하며, 일부 상황에서 논란이 될 수 있는 모욕적이거나 포용되지 않는 용어를 제거합니다. - -fabrication이 어떻게 작동하는지 알아보고 싶으신가요? 훈련 데이터셋에서 찾을 수 없는 존재하지 않는 주제에 대한 내용을 AI에게 생성하도록 지시하는 프롬프트를 생각해보세요. 예를 들어 - 저는 다음과 같은 프롬프트를 시도해보았습니다: - -> **프롬프트:** 2076년의 화성 전쟁에 대한 수업 계획을 생성하세요. - -웹 검색을 통해 2076년의 화성 전쟁에 대한 허구의 설명(예: TV 시리즈나 책)이 있음을 알 수 있었습니다. 그러나 2076년은 _미래_ 이기 때문에 실제 사건과 관련될 수 없다는 상식도 우리에게 알려줍니다. - -그렇다면 이 프롬프트를 다른 LLM 제공업체에서 실행하면 어떻게 될까요? - -> **응답 1**: OpenAI Playground (GPT-35) - -![응답 1](../../images/04-fabrication-oai.png?WT.mc_id=academic-105485-koreyst) - -> **응답 2**: Azure OpenAI Playground (GPT-35) - -![응답 2](../../images/04-fabrication-aoai.png?WT.mc_id=academic-105485-koreyst) - -> **응답 3**: Hugging Face Chat Playground (LLama-2) - -![응답 3](../../images/04-fabrication-huggingchat.png?WT.mc_id=academic-105485-koreyst) - -예상대로, 각 모델(또는 모델 버전)은 확률적인 동작과 모델 능력의 차이로 인해 약간 다른 응답을 생성합니다. 예를 들어, 하나의 모델은 8학년 학생을 대상으로 하고 다른 모델은 고등학생을 가정합니다. 그러나 세 모델 모두 미지식 사용자를 설득할 수 있는 실제 사건인 것처럼 보이는 응답을 생성했습니다. - -_메타프롬프팅(meta-prompting)_ 과 _temperature 설정_ 과 같은 프롬프트 엔지니어링 기법은 일부 fabrication을 줄일 수 있습니다. 새로운 프롬프트 엔지니어링 _아키텍처_ 는 이러한 효과를 완화하거나 줄이기 위해 새로운 도구와 기법을 프롬프트 플로우에 매끄럽게 통합합니다. - -## 사례 연구: GitHub Copilot - -이 섹션을 마무리하기 전에, 실제 세계 솔루션에서 프롬프트 엔지니어링이 어떻게 사용되는지 알아보기 위해 한 가지 사례 연구인 [GitHub Copilot](https://github.com/features/copilot?WT.mc_id=academic-105485-koreyst)을 살펴봅시다. - -GitHub Copilot은 "AI 동료 프로그래머"로, 텍스트 프롬프트를 코드 완성으로 변환하며 개발 환경(예: Visual Studio Code)에 통합되어 원활한 사용자 경험을 제공합니다. 아래의 블로그 시리즈에서 문서화된 바와 같이, 초기 버전은 OpenAI Codex 모델을 기반으로 하였으며, 엔지니어들은 빠르게 모델을 세밀하게 튜닝하고 프롬프트 엔지니어링 기법을 개발하여 코드 품질을 개선해야 함을 깨달았습니다. 7월에는 [더 빠른 제안을 위해 Codex를 넘어선 개선된 AI 모델을 선보였습니다](https://github.blog/2023-07-28-smarter-more-efficient-coding-github-copilot-goes-beyond-codex-with-improved-ai-model/?WT.mc_id=academic-105485-koreyst). - -학습 과정을 따라가기 위해 게시물을 순서대로 읽어보세요. - -- **2023년 5월** | [GitHub Copilot이 코드 이해 능력을 향상시키는 방법](https://github.blog/2023-05-17-how-github-copilot-is-getting-better-at-understanding-your-code/?WT.mc_id=academic-105485-koreyst) -- **2023년 5월** | [GitHub Copilot 뒤의 LLMs와의 작업](https://github.blog/2023-05-17-inside-github-working-with-the-llms-behind-github-copilot/?WT.mc_id=academic-105485-koreyst). -- **2023년 6월** | [GitHub Copilot을 위한 더 나은 프롬프트 작성 방법](https://github.blog/2023-06-20-how-to-write-better-prompts-for-github-copilot/?WT.mc_id=academic-105485-koreyst). -- **2023년 7월** | [.. GitHub Copilot이 개선된 AI 모델로 Codex를 넘어섭니다](https://github.blog/2023-07-28-smarter-more-efficient-coding-github-copilot-goes-beyond-codex-with-improved-ai-model/?WT.mc_id=academic-105485-koreyst) -- **2023년 7월** | [프롬프트 엔지니어링과 LLM에 대한 개발자 가이드](https://github.blog/2023-07-17-prompt-engineering-guide-generative-ai-llms/?WT.mc_id=academic-105485-koreyst) -- **2023년 9월** | [GitHub Copilot에서 배운 기업용 LLM 앱 개발 방법](https://github.blog/2023-09-06-how-to-build-an-enterprise-llm-application-lessons-from-github-copilot/?WT.mc_id=academic-105485-koreyst) - -더 많은 예시와 기법이 실제 세계 응용 프로그램에 적용되는 방법을 보여주는 [이 게시물](https://github.blog/2023-09-27-how-i-used-github-copilot-chat-to-build-a-reactjs-gallery-prototype/?WT.mc_id=academic-105485-koreyst)과 같은 게시물을 찾아보기 위해 [Engineering 블로그](https://github.blog/category/engineering/?WT.mc_id=academic-105485-koreyst)를 참조할 수도 있습니다. - ---- - - - -## 프롬프트 구성 - -프롬프트 엔지니어링이 왜 중요한지 알아보았으니, 이제 프롬프트가 어떻게 _구성_ 되는지 이해하고 더 효과적인 프롬프트 디자인을 위한 다양한 기법을 평가해보겠습니다. - -### 기본 프롬프트 - -먼저 기본 프롬프트부터 시작해보겠습니다. 이는 다른 맥락 없이 모델에게 보내지는 텍스트 입력입니다. 예를 들어, OpenAI [Completion API](https://platform.openai.com/docs/api-reference/completions?WT.mc_id=academic-105485-koreyst)에 미국 국가 애국가의 처음 몇 단어를 보내면 모델은 즉시 다음 몇 줄을 포함한 응답을 _완성_ 합니다. 이는 기본적인 예측 동작을 보여줍니다. - -| 프롬프트 (입력) | 완성 (출력) | -| :----------------- | :-------------------------------------------------------------------------------------------------- | -| Oh say can you see | "The Star-Spangled Banner"라는 미국의 국가 애국가 가사를 시작하고 있는 것 같습니다. 전체 가사는 ... | - -### 복잡한 프롬프트 - -이제 그 기본 프롬프트에 맥락과 지침을 추가해보겠습니다. [Chat Completion API](https://learn.microsoft.com/azure/ai-services/openai/how-to/chatgpt?WT.mc_id=academic-105485-koreyst)를 사용하면 _사용자_ 입력과 _어시스턴트_ 응답을 반영하는 입력/출력 쌍과 어시스턴트의 동작이나 성격을 설정하는 시스템 메시지로 구성된 복잡한 프롬프트를 만들 수 있습니다. - -아래의 요청은 _토큰화_ 를 통해 맥락과 대화에서 관련 정보를 효과적으로 포착합니다. 이제 시스템 맥락을 변경하는 것은 사용자 입력과 마찬가지로 완성 품질에 큰 영향을 미칠 수 있습니다. - -```python -response = openai.chat.completions.create( - model="gpt-3.5-turbo", - messages=[ - {"role": "system", "content": "You are a helpful assistant."}, - {"role": "user", "content": "Who won the world series in 2020?"}, - {"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."}, - {"role": "user", "content": "Where was it played?"} - ] -) -``` - -### 지시 프롬프트 (Instruction Prompt) - -위의 예시에서 사용자 프롬프트는 정보 요청으로 해석될 수 있는 간단한 텍스트 쿼리였습니다. _지시_ 프롬프트를 사용하면 해당 텍스트를 사용하여 AI에게 더 자세한 작업을 지정하여 더 나은 안내를 제공할 수 있습니다. 다음은 예시입니다: - -| 프롬프트 (입력) | 완성 (출력) | 지시 유형 | -| :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------- | :---------------- | -| 시민 전쟁에 대한 설명을 작성하세요. | _간단한 단락을 반환합니다._ | 간단한 | -| 시민 전쟁에 대한 설명을 작성하세요. 주요 날짜와 사건을 제공하고 그들의 의미를 설명하세요. | _단락 다음에 주요 사건 날짜와 설명이 포함된 목록을 반환합니다._ | 복잡한 | -| 시민 전쟁에 대한 설명을 1단락으로 작성하세요. 주요 날짜와 그들의 의미를 가진 3개의 불릿 포인트를 제공하세요. 또한 주요 역사 인물과 그들의 기여를 가진 3개의 불릿 포인트를 제공하세요. 결과를 JSON 파일로 반환하세요 | _텍스트 상자에 더 많은 세부 정보를 JSON 형식으로 반환합니다. 파일로 복사하여 필요에 따라 유효성을 검사할 수 있습니다._ | 복잡한. 형식화됨. | - -## 주요 콘텐츠 (Primary Content) - -위의 예시에서 프롬프트는 여전히 상당히 개방적이어서 LLM이 사전 훈련된 데이터셋 중 어떤 부분이 관련 있는지를 결정할 수 있었습니다. _주요 콘텐츠(primary)_ 디자인 패턴을 사용하면 입력 텍스트를 두 부분으로 나눌 수 있습니다: - -- 지시사항 (동작) -- 관련 콘텐츠 (동작에 영향을 주는) - -다음은 "이를 2문장으로 요약하세요"라는 지시사항이 있는 예시입니다. - -| 프롬프트 (입력) | 완성 (출력) | -| :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| 주피터는 태양으로부터 다섯 번째 행성이며 태양계에서 가장 큰 행성입니다. 이는 태양의 천분의 일 질량을 가진 가스 행성으로, 태양계의 다른 행성들의 질량의 2.5배입니다. 주피터는 밤하늘에서 맨 눈으로 볼 수 있는 가장 밝은 물체 중 하나이며, 기록된 역사 이전부터 고대 문명에 알려져 있습니다. 이는 로마 신 주피터에게 이름을 따왔습니다. 지구에서 볼 때, 주피터는 반사된 빛이 가시적인 그림자를 만들 정도로 충분히 밝으며, 달과 금성 이후 밤하늘에서 평균적으로 세 번째로 밝은 천체입니다.
**이를 2문장으로 요약하세요** | 주피터는 태양계에서 가장 큰 행성으로 밤하늘에서 가장 밝은 물체 중 하나입니다. 로마 신 주피터에게 이름을 따온 이 가스 행성은 태양계의 다른 행성들의 질량의 2.5배입니다. | - -주요 콘텐츠 세그먼트는 더 효과적인 지시사항을 만들기 위해 다양한 방법으로 사용될 수 있습니다: - -- **예시** - 명시적인 지시사항으로 모델에게 무엇을 해야 하는지 알려주는 대신, 원하는 출력의 예시를 제공하고 패턴을 추론하게 합니다. -- **단서** - 지시사항 뒤에 "단서"를 추가하여 완성을 사전에 준비하고 모델을 더 관련성 높은 응답으로 이끌 수 있습니다. -- **템플릿** - 이는 플레이스홀더(변수)가 있는 프롬프트를 위한 반복 가능한 '레시피'로, 특정 사용 사례에 맞게 데이터로 사용자 정의할 수 있습니다. - -이를 실제로 살펴보겠습니다. - -### 예시 사용 - -이는 주요 콘텐츠를 사용하여 지시사항에 대한 원하는 출력의 몇 가지 예시를 모델에게 "전달"하는 접근 방식입니다. 제공된 예시의 수에 따라 제로-샷 (zero-shot)프롬프팅, 원-샷(one-shot) 프롬프팅, 퓨-샷(few-shot) 프롬프팅 등이 가능합니다. - -프롬프트는 이제 세 가지 구성 요소로 이루어집니다: - -- 작업 설명 -- 원하는 출력의 몇 가지 예시 -- 새로운 예시의 시작 (암묵적인 작업 설명이 됨) - -| 학습 유형 | 프롬프트 (입력) | 완성 (출력) | -| :-------- | :----------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------- | -| 제로-샷 | "The Sun is Shining". 스페인어로 번역 | "El Sol está brillando". | -| 원-샷 | "The Sun is Shining" => ""El Sol está brillando".
"It's a Cold and Windy Day" => | "Es un día frío y ventoso". | -| 퓨-샷 | The player ran the bases => 야구
The player hit an ace => 테니스
The player hit a six => 크리켓
The player made a slam-dunk => | 농구 | -| | | | - -제로샷 프롬프팅에서는 명시적인 지시사항("스페인어로 번역")을 제공해야 했지만, 원샷 프롬프팅 예시에서는 추론됩니다. 퓨샷 예시는 더 많은 예시를 추가함으로써 추가 지시사항 없이 모델이 더 정확한 추론을 할 수 있는 방법을 보여줍니다. - -### 프롬프트 힌트 - -기본 콘텐츠를 사용하는 또 다른 기법은 예시 대신 _힌트_ 를 제공하는 것입니다. 이 경우, 우리는 원하는 응답 형식을 반영하는 스니펫으로 모델을 _시작시킴_ 으로써 모델을 올바른 방향으로 이끄는 역할을 합니다. 그럼 모델은 그 힌트를 받아들여 해당 방향으로 계속 진행합니다. - -| 힌트 수 | 프롬프트 (입력) | 완성 (출력) | -| :------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| 0 | 주피터는 태양으로부터 다섯 번째 행성이며 태양계에서 가장 큰 행성입니다. 이는 태양의 천분의 일 질량을 가진 가스 행성으로, 태양계의 다른 행성들의 질량의 2.5배입니다. 주피터는 밤하늘에서 맨 눈으로 볼 수 있는 가장 밝은 물체 중 하나이며, 기록된 역사 이전부터 고대 문명에 알려져 있습니다.
**이를 요약하세요** | 주피터는 태양계에서 가장 큰 행성으로 밤하늘에서 가장 밝은 물체 중 하나입니다. 로마 신 주피터에게 이름을 따온 이 가스 행성은 태양계의 다른 행성들의 질량의 2.5배입니다. | -| 1 | 주피터는 태양으로부터 다섯 번째 행성이며 태양계에서 가장 큰 행성입니다. 이는 태양의 천분의 일 질량을 가진 가스 행성으로, 태양계의 다른 행성들의 질량의 2.5배입니다. 주피터는 밤하늘에서 맨 눈으로 볼 수 있는 가장 밝은 물체 중 하나이며, 기록된 역사 이전부터 고대 문명에 알려져 있습니다.
**이를 요약하세요**
우리가 배운 것은 주피터 | 는 태양으로부터 다섯 번째 행성이며 태양계에서 가장 큰 행성입니다. 이는 태양의 천분의 일 질량을 가진 가스 행성으로, 태양계의 다른 행성들의 질량의 2.5배입니다. 맨 눈으로 볼 수 있으며 고대 문명부터 알려져 왔습니다. | -| 2 | 주피터는 태양으로부터 다섯 번째 행성이며 태양계에서 가장 큰 행성입니다. 이는 태양의 천분의 일 질량을 가진 가스 행성으로, 태양계의 다른 행성들의 질량의 2.5배입니다. 주피터는 밤하늘에서 맨 눈으로 볼 수 있는 가장 밝은 물체 중 하나이며, 기록된 역사 이전부터 고대 문명에 알려져 있습니다.
**이를 요약하세요**
우리가 배운 상위 3가지 사실: | 1. 주피터는 태양으로부터 다섯 번째 행성이며 태양계에서 가장 큰 행성입니다.
2. 이는 태양의 천분의 일 질량을 가진 가스 행성입니다...
3. 주피터는 고대부터 맨 눈으로 볼 수 있었습니다 ... | -| | | | - -### 프롬프트 템플릿 - -프롬프트 템플릿은 필요에 따라 저장하고 재사용할 수 있는 *프롬프트를 위한 미리 정의된 레시피*입니다. 가장 간단한 형태에서는 [OpenAI의 예시](https://platform.openai.com/examples?WT.mc_id=academic-105485-koreyst)와 같이 상호작용 프롬프트 구성 요소(사용자 및 시스템 메시지)와 API 기반 요청 형식을 모두 제공하여 재사용을 지원합니다. - -[LangChain의 예시](https://python.langchain.com/docs/concepts/prompt_templates/?WT.mc_id=academic-105485-koreyst)와 같이 더 복잡한 형태에서는 _플레이스홀더_ 를 포함하여 다양한 소스(사용자 입력, 시스템 컨텍스트, 외부 데이터 소스 등)의 데이터로 교체하여 동적으로 프롬프트를 생성할 수 있습니다. 이를 통해 규모에 맞게 일관된 사용자 경험을 **프로그래밍 방식**으로 구현할 수 있는 재사용 가능한 프롬프트 라이브러리를 만들 수 있습니다. - -마지막으로, 템플릿의 실제 가치는 이제 프롬프트 템플릿이 응용 프로그램별 컨텍스트나 응용 프로그램 특정 예시를 반영하여 응답을 더 관련성 있고 정확하게 만드는 _프롬프트 라이브러리_ 를 생성하고 게시할 수 있는 능력에 있습니다. [Prompts For Edu](https://github.com/microsoft/prompts-for-edu?WT.mc_id=academic-105485-koreyst) 저장소는 이 접근 방식의 훌륭한 예로, 교육 분야에 대한 프롬프트 라이브러리를 선별하여 수업 계획, 커리큘럼 설계, 학생 지도 등과 같은 주요 목표에 중점을 둡니다. - -## 보조 콘텐츠 - -프롬프트 구성을 지시사항(작업)과 대상(주요 콘텐츠)으로 생각한다면, _보조 콘텐츠_ 는 출력을 **어떤 방식으로 영향을 주기 위해** 추가적인 컨텍스트를 제공하는 것입니다. 이는 모델이 원하는 사용자 목표나 기대에 맞게 응답을 조정하는 데 도움이 되는 튜닝 매개변수, 형식 지침, 주제 분류 등일 수 있습니다. - -예를 들어: 커리큘럼의 모든 사용 가능한 과목에 대한 상세한 메타데이터(이름, 설명, 수준, 메타데이터 태그, 강사 등)가 있는 과목 카탈로그가 있다고 가정해 봅시다. - -- "2023년 가을 학기 과목 카탈로그를 요약하세요"라는 지시사항을 정의할 수 있습니다. -- 원하는 출력의 몇 가지 예시를 제공하기 위해 주요 콘텐츠를 사용할 수 있습니다. -- 보조 콘텐츠를 사용하여 관심 있는 상위 5개 "태그"를 식별할 수 있습니다. - -이제 모델은 몇 가지 예시에 표시된 형식으로 요약을 제공할 수 있지만, 결과에 여러 태그가 있는 경우 보조 콘텐츠에서 식별된 5개의 태그를 우선시할 수 있습니다. - ---- - - - -## 프롬프트 엔지니어링의 모범 사례 - -프롬프트가 어떻게 _구성_ 될 수 있는지 알았으니, 이제 모범 사례를 반영하기 위해 어떻게 _디자인_ 할지 생각해볼 수 있습니다. 이를 두 가지로 나누어 생각해볼 수 있습니다 - 올바른 _마인드셋_ 을 가지고 적용하는 올바른 _기법_ 입니다. - -### 프롬프트 엔지니어링 마인드셋 - -프롬프트 엔지니어링은 시행착오 과정이므로 다음과 같은 세 가지 넓은 지침 요소를 염두에 두세요: - -1. **도메인 이해가 중요합니다.** 응답의 정확성과 관련성은 응용 프로그램이나 사용자가 작동하는 _도메인_ 의 함수입니다. 직관과 도메인 전문 지식을 적용하여 기법을 더욱 **맞춤화**하세요. 예를 들어, 시스템 프롬프트에서 _도메인별 특성_ 을 정의하거나 사용자 프롬프트에서 _도메인별 템플릿_ 을 사용하세요. 도메인별 컨텍스트를 반영하는 보조 콘텐츠를 제공하거나 _도메인별 단서와 예시_ 를 사용하여 모델을 익숙한 사용 패턴으로 이끌어보세요. - -2. **모델 이해가 중요합니다.** 모델은 본질적으로 확률적입니다. 그러나 모델 구현은 사용하는 훈련 데이터셋(미리 훈련된 지식), 제공하는 기능(API 또는 SDK를 통해) 및 최적화된 콘텐츠 유형(코드 vs. 이미지 vs. 텍스트 등)에 따라 다를 수 있습니다. 사용하는 모델의 강점과 한계를 이해하고, 그 지식을 활용하여 작업을 _우선순위_ 를 정하거나 모델의 기능에 최적화된 _맞춤형 템플릿_ 을 구축하세요. - -3. **반복과 검증이 중요합니다.** 모델은 빠르게 진화하고, 프롬프트 엔지니어링 기법도 마찬가지입니다. 도메인 전문가로서, 다른 컨텍스트나 기준이 _특정 응용 프로그램_ 에 적용되지 않을 수 있습니다. 프롬프트 엔지니어링 도구와 기법을 사용하여 프롬프트 구성을 "우선 시작"하고, 직관과 도메인 전문 지식을 활용하여 결과를 반복적으로 검증하세요. 통찰력을 기록하고, 미래의 빠른 반복을 위해 다른 사람들이 사용할 수 있는 **지식 기반**(프롬프트 라이브러리 등)을 만들어보세요. - -## 모범 사례 - -이제 [Open AI](https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-openai-api?WT.mc_id=academic-105485-koreyst)와 [Azure OpenAI](https://learn.microsoft.com/azure/ai-services/openai/concepts/prompt-engineering#best-practices?WT.mc_id=academic-105485-koreyst) 전문가들이 권장하는 일반적인 모범 사례를 살펴보겠습니다. - -| 항목 | 이유 | -| :---------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| 최신 모델 평가하기 | 새로운 모델 세대는 향상된 기능과 품질을 가질 가능성이 높지만, 더 높은 비용이 발생할 수도 있습니다. 영향을 평가한 후 이동 결정을 내립니다. | -| 지시사항과 컨텍스트 분리하기 | 모델/공급자가 지시사항, 주요 콘텐츠 및 보조 콘텐츠를 명확하게 구분하기 위한 _구분자_ 를 정의하는지 확인하세요. 이는 모델이 토큰에 더 정확한 가중치를 할당할 수 있도록 도와줍니다. | -| 구체적이고 명확하게 작성하기 | 원하는 컨텍스트, 결과, 길이, 형식, 스타일 등에 대해 더 많은 세부 정보를 제공하세요. 이는 응답의 품질과 일관성을 높일 것입니다. 재사용 가능한 템플릿으로 레시피를 작성하세요. | -| 상세 설명과 예시 사용하기 | 모델은 "보여주고 설명하기" 접근법에 더 잘 반응할 수 있습니다. 지시사항만 제공하는 `zero-shot` 접근법으로 시작한 다음, 원하는 출력의 몇 가지 예시를 제공하는 `few-shot`으로 세부 조정해보세요. 유추법을 사용하세요. | -| 시작 단어나 구문을 사용하여 완성 시작하기 | 응답의 시작점으로 사용할 수 있는 몇 가지 선행 단어나 구문을 제공하여 원하는 결과로 모델을 유도하세요. | -| 반복하기 | 때로는 모델에게 반복해서 지시해야 할 수도 있습니다. 주요 콘텐츠 앞뒤로 지시사항을 제공하거나, 지시사항과 시작 단어를 함께 사용하는 등의 방법을 사용하세요. 작동하는지 확인하기 위해 반복적으로 검증하세요. | -| 순서가 중요합니다 | 모델에 정보를 제공하는 순서는 출력에 영향을 줄 수 있습니다. 최근성 편향을 통해 학습 예제에서도 다른 옵션을 시도해보세요. | -| 모델에 "탈출구"를 제공하기 | 모델이 작업을 완료할 수 없는 경우 제공할 수 있는 _대체_ 완성 응답을 제공하세요. 이렇게 하면 모델이 잘못된 또는 가짜 응답을 생성할 가능성이 줄어듭니다. | -| | | - -모든 모범 사례와 마찬가지로, 모델, 작업 및 도메인에 따라 _결과가 달라질 수 있습니다._ 이를 시작점으로 사용하고, 가장 잘 작동하는 방법을 찾기 위해 반복적으로 개선하세요. 새로운 모델과 도구가 사용 가능해질 때마다 프롬프트 엔지니어링 프로세스를 지속적으로 재평가하고, 프로세스의 확장성과 응답 품질에 초점을 맞추세요. - - - -## 과제 - -축하합니다! 레슨의 끝까지 도달했습니다! 이제 실제 예제를 사용하여 몇 가지 개념과 기법을 테스트해 보는 시간입니다! - -과제를 위해 상호작용적으로 완료할 수 있는 Jupyter Notebook을 사용할 것입니다. 또한 아이디어와 기법을 탐색하기 위해 자체적으로 Markdown 및 Code 셀을 추가하여 Notebook을 확장할 수도 있습니다. - -### 시작하기 전에, 레포지토리를 포크한 다음 - -- (권장) GitHub Codespaces를 시작하세요. -- (대안) 레포지토리를 로컬 장치에 복제하고 Docker Desktop을 사용하세요. -- (대안) 선호하는 Notebook 실행 환경에서 Notebook을 열어보세요. - -### 다음으로, 환경 변수를 구성하세요 - -- 레포지토리 루트에 있는 `.env.copy` 파일을 `.env`로 복사하고 `AZURE_OPENAI_API_KEY`, `AZURE_OPENAI_ENDPOINT`, `AZURE_OPENAI_DEPLOYMENT` 값을 채워넣으세요. [Learning Sandbox section](./04-prompt-engineering-fundamentals#learning-sandbox)에서 자세한 내용을 확인하세요. - -### 다음으로, Jupyter Notebook을 열어보세요 - -- 런타임 커널을 선택하세요. 옵션 1 또는 2를 사용하는 경우, 개발 컨테이너에서 제공하는 기본 Python 3.10.x 커널을 선택하면 됩니다. - -이제 연습문제를 실행할 준비가 되었습니다. 여기서는 *정답과 오답*이 없습니다. 대신, 시행착오를 통해 옵션을 탐색하고, 주어진 모델과 응용 프로그램 도메인에 대한 직관을 구축하는 것입니다. - -_이러한 이유로 이 레슨에는 코드 솔루션 세그먼트가 없습니다. 대신, 노트북에는 "My Solution:"이라는 제목의 Markdown 셀이 있어 참고용으로 한 가지 예시 출력을 보여줍니다._ - - - -## 지식 확인 - -다음 중 합리적인 모범 사례를 따르는 좋은 프롬프트는 무엇입니까? - -1. 빨간색 차의 이미지를 보여주세요. -2. 일몰이 진 절벽 옆에 주차된 볼보 제조사와 모델이 XC90인 빨간색 차의 이미지를 보여주세요. -3. 볼보 제조사와 모델이 XC90인 빨간색 차의 이미지를 보여주세요. - -A: 2번입니다. 이 프롬프트는 "무엇"에 대한 세부 정보를 제공하며 (어떤 차가 아니라 특정 제조사와 모델의 차), 전반적인 설정에 대한 설명도 포함하고 있습니다. 3번은 두 번째로 좋은 프롬프트입니다. 많은 설명이 포함되어 있습니다. - -## 🚀 도전과제 - -프롬프트 "볼보 제조사와 빨간색 차의 이미지를 보여주세요"를 "단서" 기법과 함께 활용해보세요. 어떤 응답이 나오고, 어떻게 개선할 수 있을까요? - -## 훌륭합니다! 계속해서 학습하세요 - -5번 레슨으로 이동하여 [고급 프롬프트 생성](../../../05-advanced-prompts/translations/ko/README.md?WT.mc_id=academic-105485-koreyst)을 살펴보세요! diff --git a/04-prompt-engineering-fundamentals/translations/pl/README.md b/04-prompt-engineering-fundamentals/translations/pl/README.md deleted file mode 100644 index 2258b4dfc2..0000000000 --- a/04-prompt-engineering-fundamentals/translations/pl/README.md +++ /dev/null @@ -1,355 +0,0 @@ -# Podstawy Inżynierii Promptów - -[![Podstawy Inżynierii Promptów](../../images/04-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson4-gh?WT.mc_id=academic-105485-koreyst) - -## Wprowadzenie - -Ten moduł obejmuje podstawowe koncepcje i techniki tworzenia skutecznych promptów dla modeli generatywnej sztucznej inteligencji. Sposób, w jaki piszesz prompt do modelu LLM, ma duże znaczenie. Starannie opracowany prompt może zapewnić lepszą jakość odpowiedzi. Ale co dokładnie oznaczają terminy takie jak _prompt_ i _inżynieria promptów_? I jak mogę ulepszyć _dane wejściowe_ prompta, które wysyłam do LLM? To pytania, na które postaramy się odpowiedzieć w tym rozdziale i następnym. - -_Generatywna sztuczna inteligencja_ jest zdolna do tworzenia nowych treści (np. tekstu, obrazów, dźwięku, kodu itp.) w odpowiedzi na prośby użytkownika. Osiąga to za pomocą _Dużych Modeli Językowych_, takich jak seria GPT firmy OpenAI ("Generative Pre-trained Transformer"), które są trenowane do używania języka naturalnego i kodu. - -Użytkownicy mogą teraz wchodzić w interakcje z tymi modelami, korzystając z dobrze znanych paradygmatów, takich jak czat, bez konieczności posiadania wiedzy technicznej czy specjalistycznego szkolenia. Modele te są _oparte na promptach_ - użytkownicy wysyłają wejście tekstowe (prompt) i otrzymują odpowiedź AI (uzupełnienie). Następnie mogą "rozmawiać z AI" iteracyjnie, w wieloturowych konwersacjach, dopracowując swój prompt, aż odpowiedź będzie zgodna z ich oczekiwaniami. - -"Prompty" stają się teraz głównym _interfejsem programistycznym_ dla aplikacji generatywnej AI, mówiąc modelom, co mają robić i wpływając na jakość zwracanych odpowiedzi. "Inżynieria Promptów" to szybko rozwijająca się dziedzina badań, która koncentruje się na _projektowaniu i optymalizacji_ promptów w celu dostarczania spójnych i jakościowych odpowiedzi na dużą skalę. - -## Cele Nauki - -W tej lekcji dowiemy się, czym jest inżynieria promptów, dlaczego jest ważna i jak możemy tworzyć bardziej efektywne prompty dla danego modelu i celu aplikacji. Zrozumiemy podstawowe koncepcje i najlepsze praktyki w inżynierii promptów - oraz poznamy interaktywne środowisko Jupyter Notebooks "sandbox", w którym zobaczymy zastosowanie tych koncepcji na prawdziwych przykładach. - -Do końca tej lekcji będziemy potrafili: - -1. Wyjaśnić, czym jest inżynieria promptów i dlaczego jest ważna. -2. Opisać komponenty promptu i sposób ich wykorzystania. -3. Poznać najlepsze praktyki i techniki inżynierii promptów. -4. Zastosować poznane techniki na rzeczywistych przykładach, korzystając z punktu końcowego OpenAI. - -## Kluczowe Pojęcia - -Inżynieria Promptów: Praktyka projektowania i udoskonalania danych wejściowych w celu naprowadzania modeli AI na generowanie pożądanych wyników. -Tokenizacja: Proces konwersji tekstu na mniejsze jednostki, zwane tokenami, które model może zrozumieć i przetwarzać. -LLM dostrojone instrukcyjnie: Duże Modele Językowe (LLM), które zostały dostrojone za pomocą określonych instrukcji w celu poprawy dokładności i trafności ich odpowiedzi. - -## Sandbox do Nauki - -Inżynieria promptów jest obecnie bardziej sztuką niż nauką. Najlepszym sposobem na poprawę naszej intuicji w tej dziedzinie jest _więcej praktyki_ i przyjęcie podejścia prób i błędów, które łączy wiedzę ekspercką z zakresu dziedziny zastosowania z zalecanymi technikami i optymalizacjami specyficznymi dla modelu. - -Notebook Jupyter towarzyszący tej lekcji zapewnia środowisko _sandbox_, w którym możesz wypróbować to, czego się uczysz - w trakcie nauki lub jako część wyzwania kodowego na końcu. Aby wykonać ćwiczenia, będziesz potrzebować: - -1. **Klucza API Azure OpenAI** - punktu końcowego usługi dla wdrożonego LLM. -2. **Środowiska Wykonawczego Python** - w którym można uruchomić Notebook. -3. **Lokalnych Zmiennych Środowiskowych** - _wykonaj teraz kroki [SETUP](../../../00-course-setup/translations/pl/SETUP.md?WT.mc_id=academic-105485-koreyst), aby być gotowym_. - -Notebook zawiera ćwiczenia _startowe_ - ale zachęcamy do dodawania własnych sekcji _Markdown_ (opis) i _Code_ (żądania promptów), aby wypróbować więcej przykładów lub pomysłów - i zbudować swoją intuicję dotyczącą projektowania promptów. - -## Ilustrowany Przewodnik - -Chcesz poznać ogólny obraz tego, co obejmuje ta lekcja, zanim się w nią zagłębisz? Sprawdź ten ilustrowany przewodnik, który daje ci pojęcie o głównych tematach i kluczowych wnioskach do przemyślenia w każdym z nich. Mapa lekcji prowadzi cię od zrozumienia podstawowych koncepcji i wyzwań do rozwiązywania ich za pomocą odpowiednich technik inżynierii promptów i najlepszych praktyk. Zauważ, że sekcja "Zaawansowane Techniki" w tym przewodniku odnosi się do treści zawartych w _następnym_ rozdziale tego programu nauczania. - -![Ilustrowany Przewodnik do Inżynierii Promptów](../../images/04-prompt-engineering-sketchnote.png?WT.mc_id=academic-105485-koreyst) - -## Nasz Startup - -Teraz porozmawiajmy o tym, jak _ten temat_ odnosi się do misji naszego startupu [wprowadzania innowacji AI do edukacji](https://educationblog.microsoft.com/2023/06/collaborating-to-bring-ai-innovation-to-education?WT.mc_id=academic-105485-koreyst). Chcemy budować aplikacje AI wspomagające _spersonalizowane uczenie się_ - zastanówmy się więc, jak różni użytkownicy naszej aplikacji mogliby "projektować" prompty: - -- **Administratorzy** mogliby poprosić AI o _analizę danych programowych w celu identyfikacji luk w zakresie materiału_. AI może podsumować wyniki lub wizualizować je za pomocą kodu. -- **Edukatorzy** mogliby poprosić AI o _wygenerowanie planu lekcji dla określonej grupy docelowej i tematu_. AI może stworzyć spersonalizowany plan w określonym formacie. -- **Studenci** mogliby poprosić AI o _pomoc w trudnym przedmiocie_. AI może teraz prowadzić studentów poprzez lekcje, wskazówki i przykłady dostosowane do ich poziomu. - -To tylko wierzchołek góry lodowej. Sprawdź [Prompts For Education](https://github.com/microsoft/prompts-for-edu/tree/main?WT.mc_id=academic-105485-koreyst) - bibliotekę promptów open-source, stworzoną przez ekspertów edukacyjnych - aby uzyskać szersze pojęcie o możliwościach! _Spróbuj uruchomić niektóre z tych promptów w sandboxie lub korzystając z OpenAI Playground, aby zobaczyć, co się stanie!_ - -## Czym jest Inżynieria Promptów? - -Rozpoczęliśmy tę lekcję od zdefiniowania **Inżynierii Promptów** jako procesu _projektowania i optymalizacji_ wejść tekstowych (promptów) w celu dostarczania spójnych i jakościowych odpowiedzi (uzupełnień) dla danego celu aplikacji i modelu. Możemy myśleć o tym jako o procesie 2-etapowym: - -- _projektowanie_ początkowego promptu dla danego modelu i celu -- _doskonalenie_ promptu iteracyjnie w celu poprawy jakości odpowiedzi - -Jest to z konieczności proces prób i błędów, który wymaga intuicji i wysiłku użytkownika, aby uzyskać optymalne wyniki. Dlaczego więc jest to ważne? Aby odpowiedzieć na to pytanie, musimy najpierw zrozumieć trzy koncepcje: - -- _Tokenizacja_ = jak model "widzi" prompt -- _Bazowe LLM_ = jak model podstawowy "przetwarza" prompt -- _LLM Dostrojone Instrukcyjnie_ = jak model może teraz widzieć "zadania" - -### Tokenizacja - -LLM widzi prompty jako _sekwencję tokenów_, gdzie różne modele (lub wersje modelu) mogą tokenizować ten sam prompt na różne sposoby. Ponieważ LLM są trenowane na tokenach (a nie na surowym tekście), sposób tokenizacji promptów ma bezpośredni wpływ na jakość generowanej odpowiedzi. - -Aby zrozumieć intuicyjnie, jak działa tokenizacja, wypróbuj narzędzia takie jak [OpenAI Tokenizer](https://platform.openai.com/tokenizer?WT.mc_id=academic-105485-koreyst) pokazany poniżej. Skopiuj swój prompt - i zobacz, jak zostaje on przekształcony w tokeny, zwracając uwagę na to, jak są obsługiwane znaki białych spacji i znaki interpunkcyjne. Zauważ, że ten przykład pokazuje starszy LLM (GPT-3) - więc wypróbowanie tego z nowszym modelem może dać inny wynik. - -![Tokenizacja](../../images/04-tokenizer-example.png?WT.mc_id=academic-105485-koreyst) - -### Koncepcja: Modele Podstawowe - -Po tokenizacji promptu, główną funkcją ["Bazowego LLM"](https://blog.gopenai.com/an-introduction-to-base-and-instruction-tuned-large-language-models-8de102c785a6?WT.mc_id=academic-105485-koreyst) (lub modelu podstawowego) jest przewidywanie tokenu w tej sekwencji. Ponieważ LLM są trenowane na ogromnych zbiorach danych tekstowych, mają dobre zrozumienie statystycznych relacji między tokenami i mogą dokonywać tych przewidywań z pewnym stopniem pewności. Zauważ, że nie rozumieją one _znaczenia_ słów w promptcie lub tokenie; widzą jedynie wzorzec, który mogą "uzupełnić" swoją następną prognozą. Mogą kontynuować przewidywanie sekwencji, aż do zakończenia przez interwencję użytkownika lub jakiś wcześniej ustalony warunek. - -Chcesz zobaczyć, jak działa uzupełnianie oparte na promptach? Wprowadź powyższy prompt do [_Chat Playground_](https://oai.azure.com/playground?WT.mc_id=academic-105485-koreyst) w Azure OpenAI Studio z domyślnymi ustawieniami. System jest skonfigurowany do traktowania promptów jako próśb o informacje - więc powinieneś zobaczyć uzupełnienie, które spełnia ten kontekst. - -Ale co jeśli użytkownik chciałby zobaczyć coś konkretnego, co spełnia pewne kryteria lub cel zadania? Tutaj do gry wchodzą _LLM dostrojone instrukcyjnie_. - -![Uzupełnianie Chatu Bazowego LLM](../../images/04-playground-chat-base.png?WT.mc_id=academic-105485-koreyst) - -### Koncepcja: LLM Dostrojone Instrukcyjnie - -[LLM Dostrojone Instrukcyjnie](https://blog.gopenai.com/an-introduction-to-base-and-instruction-tuned-large-language-models-8de102c785a6?WT.mc_id=academic-105485-koreyst) zaczyna od modelu podstawowego i dostosowuje go za pomocą przykładów lub par wejście/wyjście (np. wieloturowych "wiadomości"), które mogą zawierać jasne instrukcje - a odpowiedź AI stara się podążać za tą instrukcją. - -Wykorzystuje to techniki takie jak Uczenie się przez Wzmacnianie z Ludzkim Feedbackiem (RLHF), które mogą trenować model do _podążania za instrukcjami_ i _uczenia się z feedbacku_, dzięki czemu generuje odpowiedzi, które są lepiej dostosowane do praktycznych zastosowań i bardziej odpowiednie dla celów użytkownika. - -Wypróbujmy to - wróć do powyższego promptu, ale teraz zmień _wiadomość systemową_, aby zapewnić następującą instrukcję jako kontekst: - -> _Podsumuj dostarczony Ci materiał dla ucznia drugiej klasy. Ogranicz wynik do jednego akapitu z 3-5 punktami._ - -Zobacz, jak wynik jest teraz dostosowany do pożądanego celu i formatu? Nauczyciel może teraz bezpośrednio użyć tej odpowiedzi w swoich slajdach dla tej klasy. - -![Uzupełnianie Chatu LLM Dostrojonego Instrukcyjnie](../../images/04-playground-chat-instructions.png?WT.mc_id=academic-105485-koreyst) - -## Dlaczego potrzebujemy Inżynierii Promptów? - -Teraz, gdy wiemy, jak prompty są przetwarzane przez LLM, porozmawiajmy o tym, _dlaczego_ potrzebujemy inżynierii promptów. Odpowiedź leży w fakcie, że obecne LLM stawiają przed nami szereg wyzwań, które czynią _uzyskiwanie wiarygodnych i spójnych uzupełnień_ trudniejsze bez wysiłku włożonego w konstrukcję i optymalizację promptów. Na przykład: - -1. **Odpowiedzi modeli są stochastyczne.** _Ten sam prompt_ prawdopodobnie wygeneruje różne odpowiedzi z różnymi modelami lub wersjami modelu. A może nawet generować różne wyniki z _tym samym modelem_ w różnym czasie. _Techniki inżynierii promptów mogą pomóc nam zminimalizować te wariacje, zapewniając lepsze zabezpieczenia_. - -1. **Modele mogą wymyślać odpowiedzi.** Modele są wstępnie trenowane na _dużych, ale skończonych_ zbiorach danych, co oznacza, że brakuje im wiedzy o koncepcjach spoza zakresu tego treningu. W rezultacie mogą generować uzupełnienia, które są niedokładne, zmyślone lub bezpośrednio sprzeczne ze znanymi faktami. _Techniki inżynierii promptów pomagają użytkownikom zidentyfikować i złagodzić takie zmyślenia, np. prosząc AI o cytaty lub uzasadnienie_. - -1. **Możliwości modeli będą się różnić.** Nowsze modele lub generacje modeli będą miały bogatsze możliwości, ale również przyniosą unikalne dziwactwa i kompromisy w zakresie kosztów i złożoności. _Inżynieria promptów może pomóc nam opracować najlepsze praktyki i przepływy pracy, które abstrahują od różnic i dostosowują się do wymagań specyficznych dla modelu w skalowalny, bezproblemowy sposób_. - -Zobaczmy to w akcji w OpenAI lub Azure OpenAI Playground: - -- Użyj tego samego promptu z różnymi wdrożeniami LLM (np. OpenAI, Azure OpenAI, Hugging Face) - czy zauważyłeś różnice? -- Użyj wielokrotnie tego samego promptu z _tym samym_ wdrożeniem LLM (np. Azure OpenAI playground) - jak różniły się te wariacje? - -### Przykład Konfabulacji - -W tym kursie używamy terminu **"konfabulacja"** do określenia zjawiska, gdzie LLM czasami generują informacje faktycznie niepoprawne z powodu ograniczeń w ich treningu lub innych ograniczeń. Być może słyszałeś o tym zjawisku jako o _"halucynacjach"_ w popularnych artykułach lub pracach badawczych. Jednak zdecydowanie zalecamy używanie terminu _"konfabulacja"_, abyśmy przypadkowo nie przypisywali maszynie cech ludzkich. Wzmacnia to również [wytyczne Odpowiedzialnej AI](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-105485-koreyst) z perspektywy terminologicznej, usuwając terminy, które mogą być również uznane za obraźliwe lub niewłączające w niektórych kontekstach. - -Chcesz zrozumieć, jak działają konfabulacje? Wymyśl prompt, który instruuje AI do generowania treści na nieistniejący temat (aby upewnić się, że nie znajduje się on w zestawie treningowym). Na przykład - wypróbowałem ten prompt: - -> **Prompt:** wygeneruj plan lekcji o Wojnie Marsjańskiej z 2076 roku. - -Wyszukiwanie w sieci pokazało mi, że istniały fikcyjne opowieści (np. seriale telewizyjne lub książki) o wojnach marsjańskich - ale żadne w 2076 roku. Zdrowy rozsądek również mówi nam, że rok 2076 jest _w przyszłości_, a więc nie może być związany z rzeczywistym wydarzeniem. - -Co więc się dzieje, gdy uruchamiamy ten prompt z różnymi dostawcami LLM? - -> **Odpowiedź 1**: OpenAI Playground (GPT-35) - -![Odpowiedź 1](../../images/04-fabrication-oai.png?WT.mc_id=academic-105485-koreyst) - -> **Odpowiedź 2**: Azure OpenAI Playground (GPT-35) - -![Odpowiedź 2](../../images/04-fabrication-aoai.png?WT.mc_id=academic-105485-koreyst) - -> **Odpowiedź 3**: : Hugging Face Chat Playground (LLama-2) - -![Odpowiedź 3](../../images/04-fabrication-huggingchat.png?WT.mc_id=academic-105485-koreyst) - -Zgodnie z oczekiwaniami, każdy model (lub wersja modelu) generuje nieco inne odpowiedzi dzięki zachowaniom stochastycznym i różnicom w możliwościach modelu. Na przykład jeden model celuje w audytorium 8 klasy, podczas gdy inny zakłada ucznia liceum. Ale wszystkie trzy modele wygenerowały odpowiedzi, które mogłyby przekonać niepoinformowanego użytkownika, że wydarzenie było prawdziwe. - -Techniki inżynierii promptów, takie jak _metaprompting_ i _konfiguracja temperatury_, mogą w pewnym stopniu zmniejszyć konfabulacje modelu. Nowe _architektury_ inżynierii promptów również bezproblemowo włączają nowe narzędzia i techniki do przepływu promptów, aby złagodzić lub zmniejszyć niektóre z tych efektów. - -## Studium Przypadku: GitHub Copilot - -Podsumujmy tę sekcję, zyskując poczucie, jak inżynieria promptów jest wykorzystywana w rozwiązaniach ze świata rzeczywistego, patrząc na jedno studium przypadku: [GitHub Copilot](https://github.com/features/copilot?WT.mc_id=academic-105485-koreyst). - -GitHub Copilot to twój "Programista Partnerski AI" - przekształca tekstowe prompty w uzupełnienia kodu i jest zintegrowany z twoim środowiskiem programistycznym (np. Visual Studio Code) dla płynnego doświadczenia użytkownika. Jak udokumentowano w serii blogów poniżej, najwcześniejsza wersja była oparta na modelu OpenAI Codex - a inżynierowie szybko zdali sobie sprawę z potrzeby dostrojenia modelu i opracowania lepszych technik inżynierii promptów, aby poprawić jakość kodu. W lipcu [zadebiutowali z ulepszonym modelem AI, który wykracza poza Codex](https://github.blog/2023-07-28-smarter-more-efficient-coding-github-copilot-goes-beyond-codex-with-improved-ai-model/?WT.mc_id=academic-105485-koreyst) dla jeszcze szybszych sugestii. - -Przeczytaj posty w kolejności, aby śledzić ich podróż edukacyjną. - -- **Maj 2023** | [GitHub Copilot staje się lepszy w rozumieniu twojego kodu](https://github.blog/2023-05-17-how-github-copilot-is-getting-better-at-understanding-your-code/?WT.mc_id=academic-105485-koreyst) -- **Maj 2023** | [Wewnątrz GitHub: Praca z LLM stojącymi za GitHub Copilot](https://github.blog/2023-05-17-inside-github-working-with-the-llms-behind-github-copilot/?WT.mc_id=academic-105485-koreyst). -- **Czerwiec 2023** | [Jak pisać lepsze prompty dla GitHub Copilot](https://github.blog/2023-06-20-how-to-write-better-prompts-for-github-copilot/?WT.mc_id=academic-105485-koreyst). -- **Lipiec 2023** | [.. GitHub Copilot wykracza poza Codex z ulepszonym modelem AI](https://github.blog/2023-07-28-smarter-more-efficient-coding-github-copilot-goes-beyond-codex-with-improved-ai-model/?WT.mc_id=academic-105485-koreyst) -- **Lipiec 2023** | [Przewodnik Developera po Inżynierii Promptów i LLM](https://github.blog/2023-07-17-prompt-engineering-guide-generative-ai-llms/?WT.mc_id=academic-105485-koreyst) -- **Wrzesień 2023** | [Jak zbudować aplikację LLM dla przedsiębiorstw: Lekcje z GitHub Copilot](https://github.blog/2023-09-06-how-to-build-an-enterprise-llm-application-lessons-from-github-copilot/?WT.mc_id=academic-105485-koreyst) - -Możesz również przeglądać ich [blog inżynieryjny](https://github.blog/category/engineering/?WT.mc_id=academic-105485-koreyst) w poszukiwaniu postów takich jak [ten](https://github.blog/2023-09-27-how-i-used-github-copilot-chat-to-build-a-reactjs-gallery-prototype/?WT.mc_id=academic-105485-koreyst), który pokazuje, jak te modele i techniki są _stosowane_ do napędzania aplikacji ze świata rzeczywistego. - ---- - -## Konstrukcja Promptu - -Zobaczyliśmy, dlaczego inżynieria promptów jest ważna - teraz zrozummy, jak prompty są _konstruowane_, abyśmy mogli ocenić różne techniki dla bardziej efektywnego projektowania promptów. - -### Podstawowy Prompt - -Zacznijmy od podstawowego promptu: wejścia tekstowego wysłanego do modelu bez żadnego innego kontekstu. Oto przykład - gdy wysyłamy pierwsze kilka słów amerykańskiego hymnu narodowego do [API Completion](https://platform.openai.com/docs/api-reference/completions?WT.mc_id=academic-105485-koreyst) OpenAI, natychmiast _uzupełnia_ ono odpowiedź kolejnymi kilkoma wersami, ilustrując podstawowe zachowanie predykcyjne. - -| Prompt (Wejście) | Uzupełnienie (Wyjście) | -| :----------------- | :---------------------------------------------------------------------------------------------------------------------- | -| Oh say can you see | Wygląda na to, że zaczynasz tekst "The Star-Spangled Banner", hymnu narodowego Stanów Zjednoczonych. Pełny tekst to ... | - -### Złożony Prompt - -Teraz dodajmy kontekst i instrukcje do tego podstawowego promptu. [API Chat Completion](https://learn.microsoft.com/azure/ai-services/openai/how-to/chatgpt?WT.mc_id=academic-105485-koreyst) pozwala nam konstruować złożony prompt jako zbiór _wiadomości_ z: - -- Pary wejście/wyjście odzwierciedlające dane wejściowe _użytkownika_ i odpowiedź _asystenta_. -- Wiadomość systemowa ustalająca kontekst dla zachowania lub osobowości asystenta. - -Zapytanie jest teraz w formie poniżej, gdzie _tokenizacja_ skutecznie przechwytuje istotne informacje z kontekstu i konwersacji. Teraz zmiana kontekstu systemowego może mieć równie istotny wpływ na jakość uzupełnień, jak dane wejściowe użytkownika. - -```python -response = openai.chat.completions.create( - model="gpt-3.5-turbo", - messages=[ - {"role": "system", "content": "Jesteś pomocnym asystentem."}, - {"role": "user", "content": "Kto wygrał mistrzostwa świata w 2020?"}, - {"role": "assistant", "content": "Los Angeles Dodgers wygrali World Series w 2020 roku."}, - {"role": "user", "content": "Gdzie były rozgrywane?"} - ] -) -``` - -### Prompt Instrukcyjny - -W powyższych przykładach, prompt użytkownika był prostym zapytaniem tekstowym, które może być interpretowane jako prośba o informacje. Z promptami _instrukcyjnymi_, możemy użyć tego tekstu do bardziej szczegółowego określenia zadania, dostarczając lepsze wskazówki dla AI. Oto przykład: - -| Prompt (Wejście) | Uzupełnienie (Wyjście) | Typ Instrukcji | -| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------ | :--------------------- | -| Napisz opis wojny secesyjnej | _zwrócił prosty akapit_ | Proste | -| Napisz opis wojny secesyjnej. Podaj kluczowe daty i wydarzenia oraz opisz ich znaczenie | _zwrócił akapit, a następnie listę kluczowych dat wydarzeń z opisami_ | Złożone | -| Napisz opis wojny secesyjnej w 1 akapicie. Podaj 3 punkty z kluczowymi datami i ich znaczeniem. Podaj 3 kolejne punkty z kluczowymi postaciami historycznymi i ich wkładem. Zwróć wynik jako plik JSON | _zwraca bardziej obszerne szczegóły w polu tekstowym, sformatowane jako JSON, które możesz skopiować i wkleić do pliku i zweryfikować w razie potrzeby_ | Złożone. Sformatowane. | - -## Główna Treść - -W powyższych przykładach prompt był nadal dość otwarty, pozwalając LLM zdecydować, która część jego wstępnie wytrenowanego zbioru danych była istotna. Przy wzorcu projektowym _głównej treści_, tekst wejściowy jest podzielony na dwie części: - -- instrukcja (działanie) -- istotna treść (która wpływa na działanie) - -Oto przykład, gdzie instrukcją jest "podsumuj to w 2 zdaniach". - -| Prompt (Wejście) | Uzupełnienie (Wyjście) | -| :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Jowisz jest piątą planetą od Słońca i największą w Układzie Słonecznym. Jest to gazowy olbrzym o masie jednej tysięcznej masy Słońca, ale dwa i pół razy większej niż wszystkie inne planety w Układzie Słonecznym razem wzięte. Jowisz jest jednym z najjaśniejszych obiektów widocznych gołym okiem na nocnym niebie i był znany starożytnym cywilizacjom od czasów sprzed zapisanej historii. Został nazwany na cześć rzymskiego boga Jowisza.[19] Widziany z Ziemi, Jowisz może być na tyle jasny, że jego odbite światło rzuca widoczne cienie,[20] i średnio jest trzecim najjaśniejszym naturalnym obiektem na nocnym niebie po Księżycu i Wenus.
**Podsumuj to w 2 krótkich zdaniach** | Jowisz, piąta planeta od Słońca, jest największą w Układzie Słonecznym i jest znany z bycia jednym z najjaśniejszych obiektów na nocnym niebie. Nazwany na cześć rzymskiego boga Jowisza, jest gazowym olbrzymem, którego masa jest dwa i pół razy większa niż wszystkich innych planet w Układzie Słonecznym razem wziętych. | - -Segment głównej treści może być używany na różne sposoby, aby napędzać bardziej efektywne instrukcje: - -- **Przykłady** - zamiast mówić modelowi, co ma robić za pomocą jawnej instrukcji, daj mu przykłady tego, co ma robić i pozwól mu wywnioskować wzorzec dla pożądanego wyjścia. -- **Wskazówki** - podążaj za instrukcją z "wskazówką", która nakierowuje uzupełnienie, prowadząc model w kierunku bardziej odpowiednich odpowiedzi. -- **Szablony** - są to powtarzalne 'przepisy' na prompty z elementami zastępczymi (zmiennymi), które mogą być dostosowane za pomocą danych dla konkretnych przypadków użycia. - -Przyjrzyjmy się im w działaniu. - -### Używanie Przykładów - -Jest to podejście, w którym używasz głównej treści, aby "podać modelowi" kilka przykładów pożądanego wyjścia dla danej instrukcji i pozwolić mu wywnioskować wzorzec dla pożądanego wyjścia. W zależności od liczby podanych przykładów możemy mieć prompt zero-shot, one-shot, few-shot itp. - -Prompt składa się teraz z trzech składników: - -- Opis zadania -- Kilka przykładów pożądanego wyjścia -- Początek nowego przykładu (który staje się niejawnym opisem zadania) - -| Typ Uczenia | Prompt (Wejście) | Uzupełnienie (Wyjście) | -| :---------- | :------------------------------------------------------------------------------------------------------------------------------------------------------ | :-------------------------- | -| Zero-shot | "The Sun is Shining". Przetłumacz na hiszpański | "El Sol está brillando". | -| One-shot | "The Sun is Shining" => ""El Sol está brillando".
"It's a Cold and Windy Day" => | "Es un día frío y ventoso". | -| Few-shot | Zawodnik przebiegł bazy => Baseball
Zawodnik zaserwował asa => Tenis
Zawodnik zdobył szóstkę => Krykiet
Zawodnik wykonał slam-dunk => | Koszykówka | -| | | | - -Zauważ, jak musieliśmy podać jawną instrukcję ("Przetłumacz na hiszpański") w promptowaniu zero-shot, ale jest ona wywnioskowana w przykładzie promptowania one-shot. Przykład few-shot pokazuje, jak dodanie większej liczby przykładów pozwala modelom na bardziej dokładne wnioskowanie bez dodatkowych instrukcji. - -### Wskazówki w Promptach - -Inną techniką wykorzystania głównej treści jest podawanie _wskazówek_ zamiast przykładów. W tym przypadku dajemy modelowi wskazówkę we właściwym kierunku, _rozpoczynając_ od fragmentu, który odzwierciedla pożądany format odpowiedzi. Model następnie "bierze wskazówkę", aby kontynuować w tym duchu. - -| Liczba wskazówek | Prompt (Wejście) | Uzupełnienie (Wyjście) | -| :--------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| 0 | Jowisz jest piątą planetą od Słońca i największą w Układzie Słonecznym. Jest to gazowy olbrzym o masie jednej tysięcznej masy Słońca, ale dwa i pół razy większej niż wszystkie inne planety w Układzie Słonecznym razem wzięte. Jowisz jest jednym z najjaśniejszych obiektów widocznych gołym okiem na nocnym niebie i był znany starożytnym cywilizacjom od czasów sprzed zapisanej historii.
**Podsumuj To** | Jowisz to największa planeta w naszym Układzie Słonecznym i piąta od Słońca. Jest gazowym olbrzymem o masie 1/1000 masy Słońca, ale jest cięższy niż wszystkie inne planety razem wzięte. Starożytne cywilizacje znały Jowisza od dawna i jest on łatwo widoczny na nocnym niebie. | -| 1 | Jowisz jest piątą planetą od Słońca i największą w Układzie Słonecznym. Jest to gazowy olbrzym o masie jednej tysięcznej masy Słońca, ale dwa i pół razy większej niż wszystkie inne planety w Układzie Słonecznym razem wzięte. Jowisz jest jednym z najjaśniejszych obiektów widocznych gołym okiem na nocnym niebie i był znany starożytnym cywilizacjom od czasów sprzed zapisanej historii.
**Podsumuj To**
Czego się dowiedzieliśmy, to że Jowisz | jest piątą planetą od Słońca i największą w Układzie Słonecznym. Jest gazowym olbrzymem o masie jednej tysięcznej masy Słońca, ale dwa i pół razy większej niż wszystkie inne planety razem wzięte. Jest łatwo widoczny gołym okiem i był znany od czasów starożytnych. | -| 2 | Jowisz jest piątą planetą od Słońca i największą w Układzie Słonecznym. Jest to gazowy olbrzym o masie jednej tysięcznej masy Słońca, ale dwa i pół razy większej niż wszystkie inne planety w Układzie Słonecznym razem wzięte. Jowisz jest jednym z najjaśniejszych obiektów widocznych gołym okiem na nocnym niebie i był znany starożytnym cywilizacjom od czasów sprzed zapisanej historii.
**Podsumuj To**
3 Najważniejsze Fakty, Których Się Dowiedzieliśmy: | 1. Jowisz jest piątą planetą od Słońca i największą w Układzie Słonecznym.
2. Jest gazowym olbrzymem o masie jednej tysięcznej masy Słońca...
3. Jowisz jest widoczny gołym okiem od czasów starożytnych ... | -| | | | - -### Szablony Promptów - -Szablon promptu to _predefiniowany przepis na prompt_, który może być przechowywany i ponownie używany w razie potrzeby, aby napędzać bardziej spójne doświadczenia użytkownika na dużą skalę. W najprostszej formie jest to po prostu kolekcja przykładów promptów, takich jak [ten od OpenAI](https://platform.openai.com/examples?WT.mc_id=academic-105485-koreyst), który zapewnia zarówno interaktywne komponenty promptu (wiadomości użytkownika i systemu), jak i format żądania oparty na API - aby wspierać ponowne użycie. - -W bardziej złożonej formie, takiej jak [ten przykład z LangChain](https://python.langchain.com/docs/concepts/prompt_templates/?WT.mc_id=academic-105485-koreyst), zawiera _elementy zastępcze_, które mogą być zastąpione danymi z różnych źródeł (dane wejściowe użytkownika, kontekst systemu, zewnętrzne źródła danych itp.), aby dynamicznie generować prompt. Pozwala to nam stworzyć bibliotekę wielokrotnego użytku promptów, które mogą być używane do napędzania spójnych doświadczeń użytkownika **programistycznie** na dużą skalę. - -Ostatecznie, prawdziwa wartość szablonów leży w możliwości tworzenia i publikowania _bibliotek promptów_ dla pionowych domen aplikacji - gdzie szablon promptu jest teraz _zoptymalizowany_, aby odzwierciedlać kontekst specyficzny dla aplikacji lub przykłady, które czynią odpowiedzi bardziej odpowiednimi i dokładnymi dla docelowej grupy użytkowników. Repozytorium [Prompts For Edu](https://github.com/microsoft/prompts-for-edu?WT.mc_id=academic-105485-koreyst) jest świetnym przykładem tego podejścia, kuratorując bibliotekę promptów dla dziedziny edukacji z naciskiem na kluczowe cele, takie jak planowanie lekcji, projektowanie programu nauczania, korepetycje dla studentów itp. - -## Treść Wspierająca - -Jeśli myślimy o konstrukcji promptu jako mającej instrukcję (zadanie) i cel (główna treść), to _treść drugorzędna_ jest jak dodatkowy kontekst, który zapewniamy, aby **wpłynąć na wynik w jakiś sposób**. Mogą to być parametry dostrajające, instrukcje formatowania, taksonomie tematów itp., które mogą pomóc modelowi _dostosować_ jego odpowiedź, aby odpowiadała pożądanym celom lub oczekiwaniom użytkownika. - -Na przykład: Mając katalog kursów z obszernymi metadanymi (nazwa, opis, poziom, tagi metadanych, instruktor itp.) na temat wszystkich dostępnych kursów w programie: - -- możemy zdefiniować instrukcję, aby "podsumować katalog kursów na jesień 2023" -- możemy użyć głównej treści, aby podać kilka przykładów pożądanego wyjścia -- możemy użyć treści drugorzędnej, aby zidentyfikować 5 najważniejszych "tagów" zainteresowania. - -Teraz model może dostarczyć podsumowanie w formacie pokazanym przez kilka przykładów - ale jeśli wynik ma wiele tagów, może priorytetowo traktować 5 tagów zidentyfikowanych w treści drugorzędnej. - -## Najlepsze Praktyki Promptowania - -Teraz, gdy wiemy, jak prompty mogą być _konstruowane_, możemy zacząć myśleć o tym, jak je _projektować_, aby odzwierciedlały najlepsze praktyki. Możemy myśleć o tym w dwóch częściach - mając właściwe _podejście_ i stosując właściwe _techniki_. - -### Podejście do Inżynierii Promptów - -Inżynieria Promptów to proces prób i błędów, więc miej na uwadze trzy ogólne czynniki przewodnie: - -1. **Zrozumienie Domeny Ma Znaczenie.** Dokładność i trafność odpowiedzi jest funkcją _domeny_, w której działa dana aplikacja lub użytkownik. Zastosuj swoją intuicję i wiedzę dziedzinową, aby **dostosować techniki** dalej. Na przykład zdefiniuj _osobowości specyficzne dla domeny_ w twoich promptach systemowych lub użyj _szablonów specyficznych dla domeny_ w twoich promptach użytkownika. Dostarcz treści drugorzędne, które odzwierciedlają konteksty specyficzne dla domeny, lub użyj _wskazówek i przykładów specyficznych dla domeny_, aby prowadzić model w kierunku znanych wzorców użycia. - -2. **Zrozumienie Modelu Ma Znaczenie.** Wiemy, że modele są z natury stochastyczne. Ale implementacje modeli mogą również różnić się pod względem zestawu danych treningowych, których używają (wstępnie wytrenowana wiedza), możliwości, które zapewniają (np. za pośrednictwem API lub SDK) oraz rodzaju treści, do których są zoptymalizowane (np. kod vs obrazy vs tekst). Zrozum mocne i słabe strony używanego modelu i wykorzystaj tę wiedzę do _priorytetyzacji zadań_ lub budowania _dostosowanych szablonów_, które są zoptymalizowane pod kątem możliwości modelu. - -3. **Iteracja i Walidacja Mają Znaczenie.** Modele ewoluują szybko, podobnie jak techniki inżynierii promptów. Jako ekspert w danej dziedzinie, możesz mieć inny kontekst lub kryteria dla _swojej_ konkretnej aplikacji, które mogą nie dotyczyć szerszej społeczności. Wykorzystaj narzędzia i techniki inżynierii promptów, aby "przyspieszyć" konstrukcję promptów, a następnie iteruj i waliduj wyniki, używając własnej intuicji i wiedzy dziedzinowej. Zapisuj swoje spostrzeżenia i twórz **bazę wiedzy** (np. biblioteki promptów), która może być używana jako nowy punkt wyjścia przez innych, dla szybszych iteracji w przyszłości. - -## Najlepsze Praktyki - -Przyjrzyjmy się teraz wspólnym najlepszym praktykom, które są zalecane przez praktyków [OpenAI](https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-openai-api?WT.mc_id=academic-105485-koreyst) i [Azure OpenAI](https://learn.microsoft.com/azure/ai-services/openai/concepts/prompt-engineering#best-practices?WT.mc_id=academic-105485-koreyst). - -| Co | Dlaczego | -| :----------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| Oceniaj najnowsze modele. | Nowe generacje modeli prawdopodobnie będą miały ulepszone funkcje i jakość - ale mogą również wiązać się z wyższymi kosztami. Oceń je pod kątem wpływu, a następnie podejmij decyzje o migracji. | -| Oddzielaj instrukcje i kontekst | Sprawdź, czy twój model/dostawca definiuje _ograniczniki_, aby wyraźniej odróżnić instrukcje, treść główną i treść drugorzędną. Może to pomóc modelom dokładniej przypisywać wagi do tokenów. | -| Bądź konkretny i jasny | Podaj więcej szczegółów dotyczących pożądanego kontekstu, wyniku, długości, formatu, stylu itp. Poprawi to zarówno jakość, jak i spójność odpowiedzi. Zapisuj przepisy w szablonach wielokrotnego użytku. | -| Bądź opisowy, używaj przykładów | Modele mogą lepiej reagować na podejście "pokaż i powiedz". Zacznij od podejścia `zero-shot`, gdzie dajesz mu instrukcję (ale bez przykładów), a następnie spróbuj `few-shot` jako udoskonalenie, dostarczając kilka przykładów pożądanego wyniku. Używaj analogii. | -| Używaj wskazówek do rozpoczęcia uzupełnień | Nakieruj go na pożądany wynik, dając mu kilka wiodących słów lub fraz, które może wykorzystać jako punkt wyjścia dla odpowiedzi. | -| Podwójnie wzmacniaj | Czasami może być potrzebne powtórzenie się modelowi. Dawaj instrukcje przed i po głównej treści, używaj instrukcji i wskazówki itp. Iteruj i waliduj, aby zobaczyć, co działa. | -| Kolejność Ma Znaczenie | Kolejność, w jakiej prezentujesz informacje modelowi, może wpływać na wynik, nawet w przykładach uczenia się, dzięki tendencyjności do faworyzowania ostatnich informacji. Wypróbuj różne opcje, aby zobaczyć, co działa najlepiej. | -| Daj modelowi "wyjście" | Daj modelowi _awaryjną_ odpowiedź uzupełniającą, którą może dostarczyć, jeśli z jakiegokolwiek powodu nie może wykonać zadania. Może to zmniejszyć szanse, że modele generują fałszywe lub zmyślone odpowiedzi. | -| | | - -Jak w przypadku każdej najlepszej praktyki, pamiętaj, że _twoje wyniki mogą się różnić_ w zależności od modelu, zadania i domeny. Wykorzystaj je jako punkt wyjścia i iteruj, aby znaleźć to, co działa najlepiej dla ciebie. Stale ponownie oceniaj swój proces inżynierii promptów w miarę, jak nowe modele i narzędzia stają się dostępne, skupiając się na skalowalności procesu i jakości odpowiedzi. - -## Zadanie - -Gratulacje! Dotarłeś do końca lekcji! Czas przetestować niektóre z tych koncepcji i technik na prawdziwych przykładach! - -W ramach naszego zadania będziemy używać Notebooka Jupyter z ćwiczeniami, które możesz wykonać interaktywnie. Możesz również rozszerzyć Notebook o własne komórki Markdown i Code, aby eksplorować pomysły i techniki na własną rękę. - -### Aby rozpocząć, sforkuj repozytorium, a następnie - -- (Zalecane) Uruchom GitHub Codespaces -- (Alternatywnie) Sklonuj repozytorium na swoje lokalne urządzenie i użyj go z Docker Desktop -- (Alternatywnie) Otwórz Notebook za pomocą preferowanego środowiska wykonawczego Notebook. - -### Następnie skonfiguruj swoje zmienne środowiskowe - -- Skopiuj plik `.env.copy` w głównym katalogu repozytorium do `.env` i wypełnij wartości `AZURE_OPENAI_API_KEY`, `AZURE_OPENAI_ENDPOINT` i `AZURE_OPENAI_DEPLOYMENT`. Wróć do sekcji [Learning Sandbox](./04-prompt-engineering-fundamentals#learning-sandbox), aby dowiedzieć się jak. - -### Następnie otwórz Notebook Jupyter - -- Wybierz kernel środowiska wykonawczego. Jeśli używasz opcji 1 lub 2, po prostu wybierz domyślny kernel Python 3.10.x dostarczony przez kontener dev. - -Jesteś gotowy do uruchomienia ćwiczeń. Zauważ, że nie ma tu _właściwych i niewłaściwych_ odpowiedzi - chodzi o eksplorowanie opcji metodą prób i błędów oraz budowanie intuicji, co działa dla danego modelu i domeny aplikacji. - -_Z tego powodu w tej lekcji nie ma segmentów Code Solution. Zamiast tego, Notebook będzie miał komórki Markdown zatytułowane "Moje Rozwiązanie:", które pokazują jeden przykładowy wynik jako odniesienie._ - -## Test wiedzy - -Który z poniższych jest dobrym promptem, zgodnym z rozsądnymi najlepszymi praktykami? - -1. Pokaż mi obraz czerwonego samochodu -2. Pokaż mi obraz czerwonego samochodu marki Volvo model XC90 zaparkowanego przy klifie z zachodzącym słońcem -3. Pokaż mi obraz czerwonego samochodu marki Volvo model XC90 - -Odp: 2, to najlepszy prompt, ponieważ zawiera szczegóły dotyczące "czego" i wchodzi w szczegóły (nie tylko dowolny samochód, ale konkretna marka i model) oraz opisuje ogólne otoczenie. 3 jest następny najlepszy, ponieważ również zawiera dużo opisu. - -## 🚀 Wyzwanie - -Spróbuj wykorzystać technikę "wskazówki" z promptem: Dokończ zdanie "Pokaż mi obraz czerwonego samochodu marki Volvo i ". Co odpowiada i jak byś to ulepszył? - -## Świetna Praca! Kontynuuj Naukę - -Chcesz dowiedzieć się więcej o różnych koncepcjach Inżynierii Promptów? Przejdź do [strony kontynuacji nauki](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst), aby znaleźć inne świetne zasoby na ten temat. - -Przejdź do Lekcji 5, gdzie przyjrzymy się [zaawansowanym technikom promptowania](../../../05-advanced-prompts/translations/pl/README.md?WT.mc_id=academic-105485-koreyst)! diff --git a/04-prompt-engineering-fundamentals/translations/pt-br/README.md b/04-prompt-engineering-fundamentals/translations/pt-br/README.md deleted file mode 100644 index a4ad43bdff..0000000000 --- a/04-prompt-engineering-fundamentals/translations/pt-br/README.md +++ /dev/null @@ -1,398 +0,0 @@ -# Fundamentos de Engenharia de Prompt - -[![Prompt Engineering Fundamentals](../../images/04-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson4-gh?WT.mc_id=academic-105485-koreyst) - -A forma como você escreve seu prompt para o LLM importa. Um prompt cuidadosamente elaborado pode alcançar um resultado melhor do que um que não é. Mas o que são esses conceitos, prompt, Engenharia de Prompt e como posso melhorar o que envio para o LLM? Perguntas como essas são o que este capítulo e o próximo estão procurando responder. - -_A IA Generativa_ é capaz de criar novo conteúdo (por exemplo, texto, imagens, áudio, código etc.) em resposta a solicitações do usuário. Isso é alcançado usando _Modelos de Linguagem Grandes_ (LLMs) como a série GPT ("Generative Pre-trained Transformer") da OpenAI, que são treinados para usar linguagem natural e código. - -Os usuários agora podem interagir com esses modelos usando paradigmas familiares como chat, sem precisar de nenhuma experiência técnica ou treinamento. Os modelos são _baseados em prompt_ - os usuários enviam uma entrada de texto (prompt) e recebem a resposta da IA (completação). Eles podem então "conversar com a IA" de forma iterativa, em conversas de várias rodadas, refinando seu prompt até que a resposta atenda às suas expectativas. - -"Prompts" agora se tornam a principal _interface de programação_ para aplicativos de IA generativa, indicando aos modelos o que fazer e influenciando a qualidade das respostas retornadas. "Engenharia de Prompt" é um campo de estudo em rápido crescimento que se concentra no _design e otimização_ de prompts para fornecer respostas consistentes e de qualidade em escala. - -## Metas de Aprendizado - -Nesta lição, aprenderemos o que é Engenharia de Prompt, por que isso é importante e como podemos criar prompts mais eficazes para um modelo e objetivo de aplicativo específicos. Compreenderemos os conceitos centrais e as melhores práticas para a Engenharia de Prompt - e conheceremos um ambiente interativo de Jupyter Notebooks "sandbox" onde podemos ver esses conceitos aplicados a exemplos reais. - -Ao final desta lição, seremos capazes de: - -1. Explicar o que é Engenharia de Prompt e por que isso importa. -2. Descrever os componentes de um prompt e como eles são usados. -3. Aprender melhores práticas e técnicas para a Engenharia de Prompt. -4. Aplicar técnicas aprendidas a exemplos reais, usando um endpoint da OpenAI. - -## Sandbox de Aprendizado - -A Engenharia de Prompt é atualmente mais uma arte do que uma ciência. A melhor maneira de aprimorar nossa intuição é _praticar mais_ e adotar uma abordagem de tentativa e erro que combine experiência no domínio de aplicação com técnicas recomendadas e otimizações específicas do modelo. - -O Jupyter Notebook que acompanha esta lição, fornece um ambiente _sandbox_ onde você pode experimentar o que aprende - à medida que avança ou como parte do desafio de código no final. Para executar os exercícios, você precisará de: - -1. Uma chave de API da OpenAI - o endpoint de serviço para um LLM implantado. - -2. Um tempo de execução Python - no qual o Notebook pode ser executado. - -Nós instrumentamos este repositório com um _contêiner de desenvolvimento_ (_dev container_) que vem com um tempo de execução Python 3. Abra simplesmente o repositório no GitHub Codespaces ou no seu Docker Desktop localmente para ativar o tempo de execução automaticamente. Em seguida, abra o notebook e selecione o kernel Python 3.x para preparar o Notebook para execução. - -O notebook padrão está configurado para uso com uma chave de API da OpenAI. Basta copiar o arquivo `.env.copy` na raiz da pasta para `.env` e atualizar a linha `OPENAI_API_KEY=` com sua chave de API - e você estará pronto. - -O notebook vem com exercícios _iniciais_, mas você é incentivado a adicionar suas próprias seções de _Markdown_ (descrição) e _Código_ (solicitações de prompt) para experimentar mais exemplos ou ideias - e construir sua intuição para o design de prompt. - -## Nossa Startup - -Agora, vamos falar sobre como _esse tópico_ se relaciona com a missão de nossa startup de [trazer inovação de IA para a educação](https://educationblog.microsoft.com/2023/06/collaborating-to-bring-ai-innovation-to-education?WT.mc_id=academic-105485-koreyst). Queremos criar aplicações de aprendizado personalizado impulsionados por IA. Então, vamos pensar em como diferentes usuários da nossa aplicação podem "projetar" prompts: - -- **Administradores** podem pedir à IA para _analisar dados do currículo para identificar lacunas na cobertura_. A IA pode resumir os resultados ou visualizá-los com código. -- **Educadores** podem pedir à IA para _gerar um plano de aula para um público-alvo e tópico_. A IA pode criar o plano personalizado em um formato especificado. -- **Alunos** podem pedir à IA para _ajudá-los em uma disciplina difícil_. A IA pode orientar os alunos com lições, dicas e exemplos adaptados ao seu nível. - -Isso é apenas a ponta do iceberg. Confira [Prompts For Education](https://github.com/microsoft/prompts-for-edu/tree/main?WT.mc_id=academic-105485-koreyst) - uma biblioteca de prompts de código aberto curada por especialistas em educação - para ter uma visão mais ampla das possibilidades! _Experimente executar alguns desses prompts na sandbox ou usando o OpenAI Playground para ver o que acontece!_ - - - -## O que é Engenharia de Prompt? - -Começamos esta lição definindo **Engenharia de Prompt** como o processo de _projetar e otimizar_ entradas de texto (prompts) para fornecer respostas consistentes e de qualidade (completions) para um objetivo de aplicativo e modelo específicos. Podemos pensar nisso como um processo de 2 etapas: - -- _projetar_ o prompt inicial para um modelo e objetivo específicos -- _refinar_ iterativamente o prompt para melhorar a qualidade da resposta - -Isso é necessariamente um processo de tentativa e erro que requer intuição do usuário e esforço para obter resultados ótimos. Então, por que é importante? Para responder a essa pergunta, primeiro precisamos entender três conceitos: - -- _Tokenização_ = como o modelo "enxerga" o prompt -- _Base LLMs_ = como o modelo fundamental "processa" um prompt -- _Instruction-Tuned LLMs_ = como o modelo agora pode ver "tarefas" - -### Tokenização - -Um LLM vê prompts como uma _sequência de tokens_ onde diferentes modelos (ou versões de um modelo) podem tokenizar o mesmo prompt de maneiras diferentes. Como os LLMs são treinados em tokens (não em texto bruto), a forma como os prompts são tokenizados tem um impacto direto na qualidade da resposta gerada. - -Para ter uma intuição de como a tokenização funciona, experimente ferramentas como o [OpenAI Tokenizer](https://platform.openai.com/tokenizer?WT.mc_id=academic-105485-koreyst) mostrado abaixo. Copie seu prompt e veja como ele é convertido em tokens, prestando atenção em como caracteres de espaço em branco e pontuações são tratados. Note que este exemplo mostra um LLM mais antigo (GPT-3) - então, tentar isso com um modelo mais recente pode produzir um resultado diferente. - -![Tokenization](../../images/04-tokenizer-example.png?WT.mc_id=academic-105485-koreyst) - -### Conceito: Modelos Fundamentais - -Uma vez que um prompt é tokenizado, a função principal do ["Base LLM"](https://blog.gopenai.com/an-introduction-to-base-and-instruction-tuned-large-language-models-8de102c785a6?WT.mc_id=academic-105485-koreyst) (ou modelo fundamental) é prever o token nessa sequência. Como os LLMs são treinados em conjuntos massivos de dados de texto, eles têm uma boa compreensão das relações estatísticas entre tokens e podem fazer essa previsão com alguma confiança. - -> Observação: eles não compreendem o _significado_ das palavras no prompt ou token; eles apenas veem um padrão que podem "completar" com sua próxima previsão. Eles podem continuar prevendo a sequência até serem interrompidos pela intervenção do usuário ou alguma condição preestabelecida. - -Desejam ver como a conclusão baseada em prompts funciona? Insira o prompt acima no [_Chat Playground_](https://oai.azure.com/playground?WT.mc_id=academic-105485-koreyst) do Azure OpenAI Studio com as configurações padrão. O sistema está configurado para tratar prompts como solicitações de informação - então, você deve ver uma conclusão que atende a esse contexto. - -Mas e se o usuário quiser ver algo específico que atenda a alguns critérios ou objetivos de tarefa? É aqui que os LLMs _instruídos_ entram em cena. - -![Base LLM Chat Completion](../../images/04-playground-chat-base.png?WT.mc_id=academic-105485-koreyst) - -### Conceito: LLMs Instruídos - -Um [LLM Instruído](https://blog.gopenai.com/an-introduction-to-base-and-instruction-tuned-large-language-models-8de102c785a6?WT.mc_id=academic-105485-koreyst) começa com o modelo fundamental e o ajusta com exemplos ou pares de entrada/saída (por exemplo, "mensagens" de várias rodadas) que podem conter instruções claras - e a resposta da IA tenta seguir essa instrução. - -Isso usa técnicas como Aprendizado por Reforço com Feedback Humano (ARFH) que podem treinar o modelo a _seguir instruções_ e _aprender com feedback_ para que produza respostas mais adequadas a aplicações práticas e mais relevantes para objetivos do usuário. - -Vamos experimentar - revisite o prompt acima, mas agora altere a _mensagem do sistema_ para fornecer a seguinte instrução como contexto: - -> _Summarize content you are provided with for a second-grade student. Keep the result to one paragraph with 3-5 bullet points._ - -Veja como o resultado agora está ajustado para refletir o objetivo desejado e o formato? Um educador pode agora usar diretamente essa resposta em seus slides para aquela aula. - -![Instruction Tuned LLM Chat Completion](../../images/04-playground-chat-instructions.png?WT.mc_id=academic-105485-koreyst) - -## Por que precisamos de Engenharia de Prompt? - -Agora que sabemos como os prompts são processados pelos LLMs, vamos falar sobre _por que_ precisamos de Engenharia de Prompt. A resposta está no fato de que os LLMs atuais apresentam uma série de desafios que tornam as _completions confiáveis e consistentes_ mais difíceis de alcançar sem esforço na criação e otimização do prompt. Por exemplo: - -1. **As respostas do modelo são estocásticas.** O _mesmo prompt_ provavelmente produzirá respostas diferentes com modelos ou versões diferentes do modelo. E pode até mesmo produzir resultados diferentes com o _mesmo modelo_ em momentos diferentes. _Técnicas de Wngenharia de Prompt podem nos ajudar a minimizar essas variações fornecendo melhores diretrizes_. - -1. **Os modelos podem criar respostas imaginárias.** Os modelos são pré-treinados com conjuntos de dados _grandes, mas finitos_, o que significa que eles não têm conhecimento sobre conceitos fora desse escopo de treinamento. Como resultado, podem produzir completions imprecisas, imaginárias ou diretamente contraditórias aos fatos conhecidos. _Técnicas de Engenharia de Prompt ajudam os usuários a identificar e mitigar alucinações, por exemplo, pedindo à IA por citações ou raciocínio_. - -1. **As capacidades dos modelos variarão.** Modelos ou gerações de modelos mais recentes terão capacidades mais ricas, mas também trarão peculiaridades e compensações únicas em termos de custo e complexidade. _A Engenharia de Prompt pode nos ajudar a desenvolver melhores práticas e fluxos de trabalho que abstraem diferenças e se adaptam aos requisitos específicos do modelo de maneira escalável e contínua_. - -Vamos ver isso em ação no OpenAI ou Azure OpenAI Playground: - -- Use o mesmo prompt com diferentes implantações de LLM (por exemplo, OpenAI, Azure OpenAI, Hugging Face) - você viu as variações? -- Use o mesmo prompt repetidamente com a _mesma_ implantação de LLM (por exemplo, Azure OpenAI Playground) - como essas variações diferiram? - -### Exemplo de Alucinações - -Quer ter uma ideia de como as alucinações funcionam? Pense em um prompt que instrua a IA a gerar conteúdo para um tópico inexistente (para garantir que não seja encontrado no conjunto de dados de treinamento). Por exemplo - eu tentei este prompt: - -> **Prompt:** generate a lesson plan on the Martian War of 2076. - -Uma busca na web mostrou que havia relatos fictícios (por exemplo, séries de televisão ou livros) sobre guerras marcianas - mas nenhuma em 2076. O bom senso também nos diz que 2076 está _no futuro_ e, portanto, não pode ser associado a um evento real. - -Então, o que acontece quando executamos este prompt com diferentes provedores de LLM? - -> **Resposta 1**: OpenAI Playground (GPT-35) - -![Resposta 1](../../images/04-fabrication-aoai.png?WT.mc_id=academic-105485-koreyst) - -> **Resposta 2**: Azure OpenAI Playground (GPT-35) - -![Response 2](../../images/04-fabrication-aoai.png?WT.mc_id=academic-105485-koreyst) - -> **Resposta 3**: : Hugging Face Chat Playground (LLama-2) - -![Response 3](../../images/04-fabrication-huggingchat.png?WT.mc_id=academic-105485-koreyst) - -Como esperado, cada modelo (ou versão do modelo) produz respostas ligeiramente diferentes devido ao comportamento estocástico e variações nas capacidades do modelo. Por exemplo, um modelo tem como alvo uma audiência do 8º ano, enquanto o outro assume um estudante do ensino médio. Mas os três modelos geraram respostas que poderiam convencer um usuário desinformado de que o evento era real. - -Técnicas de engenharia de prompt como _metaprompting_ e _configuração de temperatura_ podem reduzir as alucinações do modelo em certa medida. Novas _arquiteturas_ de engenharia de prompt também incorporam novas ferramentas e técnicas de maneira contínua no fluxo do prompt, para mitigar ou reduzir alguns desses efeitos. - -## Estudo de Caso: GitHub Copilot - -Vamos concluir esta seção entendendo como a engenharia de prompt é utilizada em soluções do mundo real ao analisar um Estudo de Caso: [GitHub Copilot](https://github.com/features/copilot?WT.mc_id=academic-105485-koreyst). - -O GitHub Copilot é seu "Programador de Par IA" - ele converte prompts de texto em conclusões de código e está integrado ao seu ambiente de desenvolvimento (por exemplo, Visual Studio Code) para uma experiência do usuário sem interrupções. Como documentado na série de blogs abaixo, a versão mais antiga era baseada no modelo OpenAI Codex - com os engenheiros percebendo rapidamente a necessidade de ajustar o modelo e desenvolver técnicas melhores de engenharia de prompt para melhorar a qualidade do código. Em julho, eles [apresentaram um modelo de IA aprimorado que vai além do Codex](https://github.blog/2023-07-28-smarter-more-efficient-coding-github-copilot-goes-beyond-codex-with-improved-ai-model/?WT.mc_id=academic-105485-koreyst) para sugestões ainda mais rápidas. - -Leia as postagens na ordem para seguir a jornada de aprendizado deles. - -- **Maio de 2023** | [GitHub Copilot está Melhorando na Compreensão do Seu Código](https://github.blog/2023-05-17-how-github-copilot-is-getting-better-at-understanding-your-code/?WT.mc_id=academic-105485-koreyst) -- **Maio de 2023** | [Dentro do GitHub: Trabalhando com os LLMs por trás do GitHub Copilot](https://github.blog/2023-05-17-inside-github-working-with-the-llms-behind-github-copilot/?WT.mc_id=academic-105485-koreyst). -- **Junho de 2023** | [Como Escrever Melhores Prompts para o GitHub Copilot](https://github.blog/2023-06-20-how-to-write-better-prompts-for-github-copilot/?WT.mc_id=academic-105485-koreyst). -- **Julho de 2023** | [.. GitHub Copilot vai além do Codex com modelo de IA aprimorado](https://github.blog/2023-07-28-smarter-more-efficient-coding-github-copilot-goes-beyond-codex-with-improved-ai-model/?WT.mc_id=academic-105485-koreyst) -- **Julho de 2023** | [Guia do Desenvolvedor para Engenharia de Prompt e LLMs](https://github.blog/2023-07-17-prompt-engineering-guide-generative-ai-llms/?WT.mc_id=academic-105485-koreyst) -- **Setembro de 2023** | [Como construir um aplicativo empresarial LLM: Lições do GitHub Copilot](https://github.blog/2023-09-06-how-to-build-an-enterprise-llm-application-lessons-from-github-copilot/?WT.mc_id=academic-105485-koreyst) - -Você também pode navegar pelo [blog de Engenharia deles](https://github.blog/category/engineering/?WT.mc_id=academic-105485-koreyst) para mais postagens como [esta](https://github.blog/2023-09-27-how-i-used-github-copilot-chat-to-build-a-reactjs-gallery-prototype/?WT.mc_id=academic-105485-koreyst) que mostra como esses modelos e técnicas são _aplicados_ para impulsionar aplicações do mundo real. - ---- - - - -## Construção de Prompt - -Vimos por que a Engenharia de Prompt é importante - agora vamos entender como os prompts são _construídos_ para que possamos avaliar diferentes técnicas para um design de prompt mais eficaz. - -### Prompt Básico - -Vamos começar com o prompt básico: uma entrada de texto enviada ao modelo sem nenhum outro contexto. Aqui está um exemplo - quando enviamos as primeiras palavras do hino nacional dos EUA para a [API de Completions da OpenAI](https://platform.openai.com/docs/api-reference/completions?WT.mc_id=academic-105485-koreyst), ela instantaneamente _completa_ a resposta com as próximas linhas, ilustrando o comportamento básico de previsão. - -| Prompt (Input) | Completion (Output) | -| :----------------- | :----------------------------------------------------------------------------------------------------------------------------------------- | -| Oh say can you see | It sounds like you're starting the lyrics to "The Star-Spangled Banner," the national anthem of the United States. The full lyrics are ... | - -### Prompt Complexo - -Agora, vamos adicionar contexto e instruções a esse prompt básico. A [API de Completions de Chat](https://learn.microsoft.com/azure/ai-services/openai/how-to/chatgpt?WT.mc_id=academic-105485-koreyst) nos permite construir um prompt complexo como uma coleção de _mensagens_ com: - -- Pares de entrada/saída refletindo a entrada do _usuário_ e a resposta do _assistente_. -- Mensagem do sistema definindo o contexto para o comportamento ou personalidade do assistente. - -A solicitação agora está na forma abaixo, onde a _tokenização_ captura efetivamente informações relevantes do contexto e da conversa. Agora, alterar o contexto do sistema pode ter um impacto significativo na qualidade dos completamentos, assim como as entradas do usuário fornecidas. - -```python -response = openai.chat.completions.create( - model="gpt-3.5-turbo", - messages=[ - {"role": "system", "content": "Você é um assistente prestativo."}, - {"role": "user", "content": "Quem ganhou a série mundial em 2020?"}, - {"role": "assistant", "content": "O Los Angeles Dodgers venceu a Série Mundial em 2020."}, - {"role": "user", "content": "Onde foi jogado?"} - ] -) -``` - -### Prompt de Instrução - -Nos exemplos acima, o prompt do usuário era uma simples consulta de texto que pode ser interpretada como uma solicitação de informações. Com prompts de _instrução_, podemos usar esse texto para especificar uma tarefa de maneira mais detalhada, fornecendo orientações melhores para a IA. Aqui está um exemplo: - -| Prompt (Input) | Completion (Output) | Instruction Type | -| :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------- | :------------------ | -| Write a description of the Civil War | _returned a simple paragraph_ | Simple | -| Write a description of the Civil War. Provide key dates and events and describe their significance | _returned a paragraph followed by a list of key event dates with descriptions_ | Complex | -| Write a description of the Civil War in 1 paragraph. Provide 3 bullet points with key dates and their significance. Provide 3 more bullet points with key historical figures and their contributions. Return the output as a JSON file | _returns more extensive details in a text box, formatted as JSON that you can copy-paste to a file and validate as needed_ | Complex. Formatted. | - -## Conteúdo Primário - -Nos exemplos acima, o prompt ainda era bastante aberto, permitindo que o LLM decidisse qual parte de seu conjunto de dados pré-treinado era relevante. Com o padrão de design de _conteúdo primário_, o texto de entrada é dividido em duas partes: - -- uma instrução (ação) -- conteúdo relevante (que influencia a ação) - -Aqui está um exemplo em que a instrução é: "resuma isso em 2 frases". - -| Prompt (Input) | Completion (Output) | -| :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Jupiter is the fifth planet from the Sun and the largest in the Solar System. It is a gas giant with a mass one-thousandth that of the Sun, but two-and-a-half times that of all the other planets in the Solar System combined. Jupiter is one of the brightest objects visible to the naked eye in the night sky, and has been known to ancient civilizations since before recorded history. It is named after the Roman god Jupiter.[19] When viewed from Earth, Jupiter can be bright enough for its reflected light to cast visible shadows,[20] and is on average the third-brightest natural object in the night sky after the Moon and Venus.
**Summarize this in 2 short sentences** | Jupiter, the fifth planet from the Sun, is the largest in the Solar System and is known for being one of the brightest objects in the night sky. Named after the Roman god Jupiter, it's a gas giant whose mass is two-and-a-half times that of all other planets in the Solar System combined. | - -O segmento de conteúdo primário pode ser usado de várias maneiras para impulsionar instruções mais eficazes: - -- **Exemplos** - em vez de dizer explicitamente ao modelo o que fazer com uma instrução explícita, dê a ele exemplos do que fazer e deixe-o inferir o padrão. -- **Dicas** - siga a instrução com uma "dica" que prepara o completamento, orientando o modelo para respostas mais relevantes. -- **Modelos** - são 'receitas' repetíveis de prompts com espaços reservados (variáveis) que podem ser personalizados com dados para casos de uso específicos. - -Vamos explorar esses conceitos na prática. - -### Usando Exemplos - -Esta é uma abordagem em que você usa o conteúdo primário para "alimentar o modelo" com alguns exemplos da saída desejada para uma determinada instrução e permite que ele infera o padrão para a saída desejada. Com base no número de exemplos fornecidos, podemos ter prompting de `zero-shot`, `one-shot`, `few-shot`, etc. - -O prompt agora consiste em três componentes: - -- Uma descrição da tarefa -- Alguns exemplos da saída desejada -- O início de um novo exemplo (que se torna uma descrição implícita da tarefa) - - | Learning Type | Prompt (Input) | Completion (Output) | - | :------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------- | - | Zero-shot | "The Sun is Shining". Translate to Spanish | "El Sol está brillando". | - | One-shot | "The Sun is Shining" => ""El Sol está brillando".
"It's a Cold and Windy Day" => | "Es un día frío y ventoso". | - | Few-shot | The player ran the bases => Baseball
The player hit an ace => Tennis
The player hit a six => Cricket
The player made a slam-dunk => | Basketball | - | | | | - -Observe como tivemos que fornecer instruções explícitas ("Traduza para o espanhol") no prompting de `zero-shot`, mas isso é inferido no exemplo de `one-shot`. O exemplo `few-shot` mostra como adicionar mais exemplos permite que os modelos façam inferências mais precisas sem instruções adicionais. - -### Dicas de Prompt - -Outra técnica para usar conteúdo primário é fornecer _dicas_ em vez de exemplos. Neste caso, estamos dando ao modelo um empurrão na direção certa ao _iniciá-lo_ com um trecho que reflete o formato da resposta desejada. O modelo então "pega a dica" para continuar nessa linha. - -| Number of Cues | Prompt (Input) | Completion (Output) | -| :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| 0 | Jupiter is the fifth planet from the Sun and the largest in the Solar System. It is a gas giant with a mass one-thousandth that of the Sun, but two-and-a-half times that of all the other planets in the Solar System combined. Jupiter is one of the brightest objects visible to the naked eye in the night sky, and has been known to ancient civilizations since before recorded history.
**Summarize This** | Jupiter is the largest planet in our Solar System and the fifth one from the Sun. It is a gas giant with a mass 1/1000th of the Sun's, but it is heavier than all the other planets combined. Ancient civilizations have known about Jupiter for a long time, and it is easily visible in the night sky.. | -| 1 | Jupiter is the fifth planet from the Sun and the largest in the Solar System. It is a gas giant with a mass one-thousandth that of the Sun, but two-and-a-half times that of all the other planets in the Solar System combined. Jupiter is one of the brightest objects visible to the naked eye in the night sky, and has been known to ancient civilizations since before recorded history.
**Summarize This**
What we learned is that Jupiter | is the fifth planet from the Sun and the largest in the Solar System. It is a gas giant with a mass one-thousandth that of the Sun, but two-and-a-half times that of all the other planets combined. It is easily visible to the naked eye and has been known since ancient times. | -| 2 | Jupiter is the fifth planet from the Sun and the largest in the Solar System. It is a gas giant with a mass one-thousandth that of the Sun, but two-and-a-half times that of all the other planets in the Solar System combined. Jupiter is one of the brightest objects visible to the naked eye in the night sky, and has been known to ancient civilizations since before recorded history.
**Summarize This**
Top 3 Facts We Learned: | 1. Jupiter is the fifth planet from the Sun and the largest in the Solar System.
2. It is a gas giant with a mass one-thousandth that of the Sun...
3. Jupiter has been visible to the naked eye since ancient times ... | -| | | | - -Observe como tivemos que fornecer uma instrução explícita ("Resuma Isso") no exemplo de zero dicas, mas isso é inferido no exemplo de uma dica. O exemplo de duas dicas mostra como adicionar mais dicas permite que os modelos façam inferências mais precisas sem instruções adicionais. - -### Modelos de Prompt - -Um modelo de prompt é uma _receita pré-definida para um prompt_ que pode ser armazenada e reutilizada conforme necessário, para proporcionar experiências do usuário mais consistentes em escala. Em sua forma mais simples, é apenas uma coleção de exemplos de prompt como [este da OpenAI](https://platform.openai.com/examples?WT.mc_id=academic-105485-koreyst) que fornece tanto os componentes interativos do prompt (mensagens do usuário e do sistema) quanto o formato de solicitação impulsionado por API - para suportar a reutilização. - -Em sua forma mais complexa, como [este exemplo em LangChain](https://python.langchain.com/docs/concepts/prompt_templates/?WT.mc_id=academic-105485-koreyst), contém _placeholders_ que podem ser substituídos por dados de diversas fontes (entrada do usuário, contexto do sistema, fontes de dados externas etc.) para gerar um prompt dinamicamente. Isso nos permite criar uma biblioteca de prompts reutilizáveis que podem ser usados para impulsionar experiências do usuário consistentes **programaticamente** em escala. - -Finalmente, o real valor dos modelos está na capacidade de criar e publicar _bibliotecas de prompts_ para domínios de aplicação verticais - onde o modelo de prompt é agora _otimizado_ para refletir o contexto ou exemplos específicos do domínio da aplicação que tornam as respostas mais relevantes e precisas para o público-alvo. - -A [Prompts For Edu](https://github.com/microsoft/prompts-for-edu?WT.mc_id=academic-105485-koreyst) é um ótimo exemplo dessa abordagem, criando uma biblioteca de prompts para o domínio da educação com ênfase em objetivos-chave como planejamento de aulas, design de currículo, tutoria de estudantes etc. - -## Conteúdo de Suporte - -Se pensarmos na criação do prompt como tendo uma instrução (tarefa) e um alvo (conteúdo principal), então o _conteúdo secundário_ é como um contexto adicional que fornecemos para **influenciar a saída de alguma forma**. Pode ser parâmetros de ajuste, instruções de formatação, taxonomias de tópicos etc. que podem ajudar o modelo a _adequar_ sua resposta para atender aos objetivos ou expectativas desejados do usuário. - -Por exemplo: Dado um catálogo de cursos com metadados extensivos (nome, descrição, nível, tags de metadados, instrutor etc.) de todos os cursos disponíveis no currículo: - -- podemos definir uma instrução para "resumir o catálogo de cursos para o outono de 2023" -- podemos usar o conteúdo principal para fornecer alguns exemplos da saída desejada -- podemos usar o conteúdo secundário para identificar as 5 principais "tags" de interesse. - -Agora, o modelo pode fornecer um resumo no formato mostrado pelos poucos exemplos - mas se um resultado tiver várias tags, pode priorizar as 5 tags identificadas no conteúdo secundário. - ---- - - - -## Melhores Práticas para Prompts - -Agora que sabemos como os prompts podem ser _construídos_, podemos começar a pensar em como _projetá-los_ para refletir as melhores práticas. Podemos pensar nisso em duas partes - ter a _mentalidade_ certa e aplicar as _técnicas_ certas. - -### Mentalidade de Engenharia de Prompt - -A Engenharia de Prompt é um processo de tentativa e erro, então tenha em mente três fatores amplos: - -1. **Entender o Domínio é Importante.** A precisão e relevância da resposta é uma função do _domínio_ no qual a aplicação ou usuário opera. Aplique sua intuição e experiência de domínio para **personalizar técnicas** ainda mais. Por exemplo, defina _personalidades específicas do domínio_ em seus prompts de sistema, ou use _modelos específicos do domínio_ em seus prompts de usuário. Forneça conteúdo secundário que reflita contextos específicos do domínio, ou use _cues e exemplos específicos do domínio_ para orientar o modelo em direção a padrões de uso familiares. - -2. **Entender o Modelo é Importante.** Sabemos que os modelos são estocásticos por natureza. Mas as implementações do modelo também podem variar em termos do conjunto de dados de treinamento que eles usam (conhecimento pré-treinado), as capacidades que eles fornecem (por exemplo, via API ou SDK) e o tipo de conteúdo para o qual são otimizados (por exemplo, código vs. imagens vs. texto). Compreenda as forças e limitações do modelo que você está usando e use esse conhecimento para _priorizar tarefas_ ou construir _modelos personalizados_ otimizados para as capacidades do modelo. - -3. **Iteração e Validação São Importantes.** Os modelos estão evoluindo rapidamente, e as técnicas de engenharia de prompt também. Como especialista no domínio, você pode ter outros contextos ou critérios _específicos de sua_ aplicação, que podem não se aplicar à comunidade em geral. Use ferramentas e técnicas de engenharia de prompt para "iniciar" a construção do prompt, depois itere e valide os resultados usando sua própria intuição e experiência de domínio. Registre suas percepções e crie uma **base de conhecimento** (por exemplo, bibliotecas de prompts) que pode ser usada como uma nova linha de base por outras pessoas, para iterações mais rápidas no futuro. - -## Melhores Práticas - -Agora, vamos dar uma olhada nas práticas recomendadas comuns pela [Open AI](https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-openai-api?WT.mc_id=academic-105485-koreyst) e pelos praticantes da [Azure OpenAI](https://learn.microsoft.com/azure/ai-services/openai/concepts/prompt-engineering#best-practices?WT.mc_id=academic-105485-koreyst). - -| What | Why | -| :-------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| Evaluate the latest models. | New model generations are likely to have improved features and quality - but may also incur higher costs. Evaluate them for impact, then make migration decisions. | -| Separate instructions & context | Check if your model/provider defines _delimiters_ to distinguish instructions, primary and secondary content more clearly. This can help models assign weights more accurately to tokens. | -| Be specific and clear | Give more details about the desired context, outcome, length, format, style etc. This will improve both the quality and consistency of responses. Capture recipes in reusable templates. | -| Be descriptive, use examples | Models may respond better to a "show and tell" approach. Start with a `zero-shot` approach where you give it an instruction (but no examples) then try `few-shot` as a refinement, providing a few examples of the desired output. Use analogies. | -| Use cues to jumpstart completions | Nudge it towards a desired outcome by giving it some leading words or phrases that it can use as a starting point for the response. | -| Double Down | Sometimes you may need to repeat yourself to the model. Give instructions before and after your primary content, use an instruction and a cue, etc. Iterate & validate to see what works. | -| Order Matters | The order in which you present information to the model may impact the output, even in the learning examples, thanks to recency bias. Try different options to see what works best. | -| Give the model an “out” | Give the model a _fallback_ completion response it can provide if it cannot complete the task for any reason. This can reduce chances of models generating false or hallucinatory responses. | -| | | - -Como em qualquer prática recomendada, lembre-se de que _seus resultados podem variar_ com base no modelo, na tarefa e no domínio. Use essas práticas como ponto de partida e itere para encontrar o que funciona melhor para você. Reavalie constantemente seu processo de engenharia de prompt à medida que novos modelos e ferramentas se tornam disponíveis, com foco na escalabilidade do processo e na qualidade das respostas. - - - -## Tarefa - -Parabéns! Você chegou ao final da lição! É hora de colocar alguns desses conceitos e técnicas à prova com exemplos reais! - -Para a nossa tarefa, usaremos um Jupyter Notebook com exercícios que você pode completar interativamente. Você também pode estender o Notebook com suas próprias células de Markdown e código para explorar ideias e técnicas por conta própria. - -### Para começar, faça um fork do repositório, depois - -- (Recomendado) Inicie o GitHub Codespaces -- (Opcional) Clone o repositório em seu dispositivo local e use-o com o Docker Desktop -- (Opcional) Abra o Notebook com seu ambiente de execução de notebook preferido. - -### Em seguida, configure suas variáveis de ambiente - -- Copie o arquivo `.env.copy` na raiz do repositório para `.env` e preencha o valor `OPENAI_API_KEY`. Você pode encontrar sua chave de API em seu [OpenAI Dashboard](https://beta.openai.com/account/api-keys?WT.mc_id=academic-105485-koreyst). - -### Em seguida, abra o Jupyter Notebook - -- Selecione o kernel de execução. Se estiver usando as opções 1 ou 2, basta selecionar o kernel Python 3.10.x padrão fornecido pelo contêiner de desenvolvimento. - -Você está pronto para executar os exercícios. Lembre-se de que não há respostas _certas ou erradas_ aqui - apenas explorando opções por tentativa e erro e construindo intuição sobre o que funciona para um determinado modelo e domínio de aplicação. - -_Por esse motivo, não há segmentos de Solução de Código nesta lição. Em vez disso, o Notebook terá células de Markdown intituladas "Minha Solução:" que mostram um exemplo de saída para referência._ - - - -## Verificação de Conhecimento - -Qual das seguintes opções seria uma boa instrução seguindo as melhores práticas razoáveis? - -1. Mostre-me uma imagem de um carro vermelho. -2. Mostre-me uma imagem de um carro vermelho da marca Volvo e modelo XC90 estacionado à beira de um penhasco com o sol se pondo. -3. Mostre-me uma imagem de um carro vermelho da marca Volvo e modelo XC90. - -**Resposta:** 2, é a melhor instrução, pois fornece detalhes sobre "o que" e vai para especificidades (não apenas qualquer carro, mas uma marca e modelo específicos) e também descreve o ambiente geral. A opção 3 é a próxima melhor, pois também contém muita descrição. - -## 🚀 Desafio - -Veja se você consegue aproveitar a técnica de "dica" com a instrução: Complete a frase "Mostre-me uma imagem de um carro vermelho da marca Volvo e ". O que ela responde e como você melhoraria? - -## Ótimo Trabalho! Continue Sua Aprendizagem - -Quer aprender mais sobre diferentes conceitos de Engenharia de Instruções? Vá para a [página de aprendizado contínuo](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) para encontrar outros ótimos recursos sobre este tema. - -Agora, vamos para a Lição 5, onde exploraremos [técnicas avançadas de instrução](../../../05-advanced-prompts/translations/pt-br/README.md?WT.mc_id=academic-105485-koreyst)! diff --git a/04-prompt-engineering-fundamentals/translations/tr/README.md b/04-prompt-engineering-fundamentals/translations/tr/README.md deleted file mode 100644 index e31e7edf5f..0000000000 --- a/04-prompt-engineering-fundamentals/translations/tr/README.md +++ /dev/null @@ -1,403 +0,0 @@ -# Prompt Engineering Fundamentals - -[![Prompt Engineering Fundamentals](../../images/04-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson4-gh?WT.mc_id=academic-105485-koreyst) - -## Introduction -This module covers essential concepts and techniques for creating effective prompts in generative AI models. The way your write your prompt to an LLM also matters. A carefully-crafted prompt can achieve a better quality of response. But what exactly do terms like _prompt_ and _prompt engineering_ mean? And how do I improve the prompt _input_ that I send to the LLM? These are the questions we'll try to answer with in this chapter and the next. - -_Generative AI_ is capable of creating new content (e.g., text, images, audio, code etc.) in response to user requests. It achieves this using _Large Language Models_ like OpenAI's GPT ("Generative Pre-trained Transformer") series that are trained for using natural language and code. - -Users can now interact with these models using familiar paradigms like chat, without needing any technical expertise or training. The models are _prompt-based_ - users send a text input (prompt) and get back the AI response (completion). They can then "chat with the AI" iteratively, in multi-turn conversations, refining their prompt until the response matches their expectations. - -"Prompts" now become the primary _programming interface_ for generative AI apps, telling the models what to do and influencing the quality of returned responses. "Prompt Engineering" is a fast-growing field of study that focuses on the _design and optimization_ of prompts to deliver consistent and quality responses at scale. - -## Learning Goals - -In this lesson, we learn what Prompt Engineering is, why it matters, and how we can craft more effective prompts for a given model and application objective. We'll understand core concepts and best practices for prompt engineering - and learn about an interactive Jupyter Notebooks "sandbox" environment where we can see these concepts applied to real examples. - -By the end of this lesson we will be able to: - -1. Explain what prompt engineering is and why it matters. -2. Describe the components of a prompt and how they are used. -3. Learn best practices and techniques for prompt engineering. -4. Apply learned techniques to real examples, using an OpenAI endpoint. - -## Key Terms - -Prompt Engineering: The practice of designing and refining inputs to guide AI models toward producing desired outputs. -Tokenization: The process of converting text into smaller units, called tokens, that a model can understand and process. -Instruction-Tuned LLMs: Large Language Models (LLMs) that have been fine-tuned with specific instructions to improve their response accuracy and relevance. - -## Learning Sandbox - -Prompt engineering is currently more art than science. The best way to improve our intuition for it is to _practice more_ and adopt a trial-and-error approach that combines application domain expertise with recommended techniques and model-specific optimizations. - -The Jupyter Notebook accompanying this lesson provides a _sandbox_ environment where you can try out what you learn - as you go or as part of the code challenge at the end. To execute the exercises, you will need: - -1. **An Azure OpenAI API key** - the service endpoint for a deployed LLM. -2. **A Python Runtime** - in which the Notebook can be executed. -3. **Local Env Variables** - _complete the [SETUP](../../../00-course-setup/SETUP.md?WT.mc_id=academic-105485-koreyst) steps now to get ready_. - -The notebook comes with _starter_ exercises - but you are encouraged to add your own _Markdown_ (description) and _Code_ (prompt requests) sections to try out more examples or ideas - and build your intuition for prompt design. - -## Illustrated Guide - -Want to get the big picture of what this lesson covers before you dive in? Check out this illustrated guide, which gives you a sense of the main topics covered and the key takeaways for you to think about in each one. The lesson roadmap takes you from understanding the core concepts and challenges to addressing them with relevant prompt engineering techniques and best practices. Note that the "Advanced Techniques" section in this guide refers to content covered in the _next_ chapter of this curriculum. - -![Illustrated Guide to Prompt Engineering](../../images/04-prompt-engineering-sketchnote.png?WT.mc_id=academic-105485-koreyst) - -## Our Startup - -Now, let's talk about how _this topic_ relates to our startup mission to [bring AI innovation to education](https://educationblog.microsoft.com/2023/06/collaborating-to-bring-ai-innovation-to-education?WT.mc_id=academic-105485-koreyst). We want to build AI-powered applications of _personalized learning_ - so let's think about how different users of our application might "design" prompts: - -- **Administrators** might ask the AI to _analyze curriculum data to identify gaps in coverage_. The AI can summarize results or visualize them with code. -- **Educators** might ask the AI to _generate a lesson plan for a target audience and topic_. The AI can build the personalized plan in a specified format. -- **Students** might ask the AI to _tutor them in a difficult subject_. The AI can now guide students with lessons, hints & examples tailored to their level. - -That's just the tip of the iceberg. Check out [Prompts For Education](https://github.com/microsoft/prompts-for-edu/tree/main?WT.mc_id=academic-105485-koreyst) - an open-source prompts library curated by education experts - to get a broader sense of the possibilities! _Try running some of those prompts in the sandbox or using the OpenAI Playground to see what happens!_ - - - -## What is Prompt Engineering? - -We started this lesson by defining **Prompt Engineering** as the process of _designing and optimizing_ text inputs (prompts) to deliver consistent and quality responses (completions) for a given application objective and model. We can think of this as a 2-step process: - -- _designing_ the initial prompt for a given model and objective -- _refining_ the prompt iteratively to improve the quality of the response - -This is necessarily a trial-and-error process that requires user intuition and effort to get optimal results. So why is it important? To answer that question, we first need to understand three concepts: - -- _Tokenization_ = how the model "sees" the prompt -- _Base LLMs_ = how the foundation model "processes" a prompt -- _Instruction-Tuned LLMs_ = how the model can now see "tasks" - -### Tokenization - -An LLM sees prompts as a _sequence of tokens_ where different models (or versions of a model) can tokenize the same prompt in different ways. Since LLMs are trained on tokens (and not on raw text), the way prompts get tokenized has a direct impact on the quality of the generated response. - -To get an intuition for how tokenization works, try tools like the [OpenAI Tokenizer](https://platform.openai.com/tokenizer?WT.mc_id=academic-105485-koreyst) shown below. Copy in your prompt - and see how that gets converted into tokens, paying attention to how whitespace characters and punctuation marks are handled. Note that this example shows an older LLM (GPT-3) - so trying this with a newer model may produce a different result. - -![Tokenization](../../images/04-tokenizer-example.png?WT.mc_id=academic-105485-koreyst) - -### Concept: Foundation Models - -Once a prompt is tokenized, the primary function of the ["Base LLM"](https://blog.gopenai.com/an-introduction-to-base-and-instruction-tuned-large-language-models-8de102c785a6?WT.mc_id=academic-105485-koreyst) (or Foundation model) is to predict the token in that sequence. Since LLMs are trained on massive text datasets, they have a good sense of the statistical relationships between tokens and can make that prediction with some confidence. Note that they don't understand the _meaning_ of the words in the prompt or token; they just see a pattern they can "complete" with their next prediction. They can continue predicting the sequence till terminated by user intervention or some pre-established condition. - -Want to see how prompt-based completion works? Enter the above prompt into the Azure OpenAI Studio [_Chat Playground_](https://oai.azure.com/playground?WT.mc_id=academic-105485-koreyst) with the default settings. The system is configured to treat prompts as requests for information - so you should see a completion that satisfies this context. - -But what if the user wanted to see something specific that met some criteria or task objective? This is where _instruction-tuned_ LLMs come into the picture. - -![Base LLM Chat Completion](../../images/04-playground-chat-base.png?WT.mc_id=academic-105485-koreyst) - -### Concept: Instruction Tuned LLMs - -An [Instruction Tuned LLM](https://blog.gopenai.com/an-introduction-to-base-and-instruction-tuned-large-language-models-8de102c785a6?WT.mc_id=academic-105485-koreyst) starts with the foundation model and fine-tunes it with examples or input/output pairs (e.g., multi-turn "messages") that can contain clear instructions - and the response from the AI attempt to follow that instruction. - -This uses techniques like Reinforcement Learning with Human Feedback (RLHF) that can train the model to _follow instructions_ and _learn from feedback_ so that it produces responses that are better-suited to practical applications and more relevant to user objectives. - -Let's try it out - revisit the prompt above, but now change the _system message_ to provide the following instruction as context: - -> _Summarize content you are provided with for a second-grade student. Keep the result to one paragraph with 3-5 bullet points._ - -See how the result is now tuned to reflect the desired goal and format? An educator can now directly use this response in their slides for that class. - -![Instruction Tuned LLM Chat Completion](../../images/04-playground-chat-instructions.png?WT.mc_id=academic-105485-koreyst) - -## Why do we need Prompt Engineering? - -Now that we know how prompts are processed by LLMs, let's talk about _why_ we need prompt engineering. The answer lies in the fact that current LLMs pose a number of challenges that make _reliable and consistent completions_ more challenging to achieve without putting effort into prompt construction and optimization. For instance: - -1. **Model responses are stochastic.** The _same prompt_ will likely produce different responses with different models or model versions. And it may even produce different results with the _same model_ at different times. _Prompt engineering techniques can help us minimize these variations by providing better guardrails_. - -1. **Models can fabricate responses.** Models are pre-trained with _large but finite_ datasets, meaning they lack knowledge about concepts outside that training scope. As a result, they can produce completions that are inaccurate, imaginary, or directly contradictory to known facts. _Prompt engineering techniques help users identify and mitigate such fabrications e.g., by asking AI for citations or reasoning_. - -1. **Models capabilities will vary.** Newer models or model generations will have richer capabilities but also bring unique quirks and tradeoffs in cost & complexity. _Prompt engineering can help us develop best practices and workflows that abstract away differences and adapt to model-specific requirements in scalable, seamless ways_. - -Let's see this in action in the OpenAI or Azure OpenAI Playground: - -- Use the same prompt with different LLM deployments (e.g, OpenAI, Azure OpenAI, Hugging Face) - did you see the variations? -- Use the same prompt repeatedly with the _same_ LLM deployment (e.g., Azure OpenAI playground) - how did these variations differ? - -### Fabrications Example - -In this course, we use the term **"fabrication"** to reference the phenomenon where LLMs sometimes generate factually incorrect information due to limitations in their training or other constraints. You may also have heard this referred to as _"hallucinations"_ in popular articles or research papers. However, we strongly recommend using _"fabrication"_ as the term so we don't accidentally anthropomorphize the behavior by attributing a human-like trait to a machine-driven outcome. This also reinforces [Responsible AI guidelines](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-105485-koreyst) from a terminology perspective, removing terms that may also be considered offensive or non-inclusive in some contexts. - -Want to get a sense of how fabrications work? Think of a prompt that instructs the AI to generate content for a non-existent topic (to ensure it is not found in the training dataset). For example - I tried this prompt: - -> **Prompt:** generate a lesson plan on the Martian War of 2076. - -A web search showed me that there were fictional accounts (e.g., television series or books) on Martian wars - but none in 2076. Commonsense also tells us that 2076 is _in the future_ and thus, cannot be associated with a real event. - -So what happens when we run this prompt with different LLM providers? - -> **Response 1**: OpenAI Playground (GPT-35) - -![Response 1](../../images/04-fabrication-oai.png?WT.mc_id=academic-105485-koreyst) - -> **Response 2**: Azure OpenAI Playground (GPT-35) - -![Response 2](../../images/04-fabrication-aoai.png?WT.mc_id=academic-105485-koreyst) - -> **Response 3**: : Hugging Face Chat Playground (LLama-2) - -![Response 3](../../images/04-fabrication-huggingchat.png?WT.mc_id=academic-105485-koreyst) - -As expected, each model (or model version) produces slightly different responses thanks to stochastic behavior and model capability variations. For instance, one model targets an 8th grade audience while the other assumes a high-school student. But all three models did generate responses that could convince an uninformed user that the event was real - -Prompt engineering techniques like _metaprompting_ and _temperature configuration_ may reduce model fabrications to some extent. New prompt engineering _architectures_ also incorporate new tools and techniques seamlessly into the prompt flow, to mitigate or reduce some of these effects. - -## Case Study: GitHub Copilot - -Let's wrap this section by getting a sense of how prompt engineering is used in real-world solutions by looking at one Case Study: [GitHub Copilot](https://github.com/features/copilot?WT.mc_id=academic-105485-koreyst). - -GitHub Copilot is your "AI Pair Programmer" - it converts text prompts into code completions and is integrated into your development environment (e.g., Visual Studio Code) for a seamless user experience. As documented in the series of blogs below, the earliest version was based on the OpenAI Codex model - with engineers quickly realizing the need to fine-tune the model and develop better prompt engineering techniques, to improve code quality. In July, they [debuted an improved AI model that goes beyond Codex](https://github.blog/2023-07-28-smarter-more-efficient-coding-github-copilot-goes-beyond-codex-with-improved-ai-model/?WT.mc_id=academic-105485-koreyst) for even faster suggestions. - -Read the posts in order, to follow their learning journey. - -- **May 2023** | [GitHub Copilot is Getting Better at Understanding Your Code](https://github.blog/2023-05-17-how-github-copilot-is-getting-better-at-understanding-your-code/?WT.mc_id=academic-105485-koreyst) -- **May 2023** | [Inside GitHub: Working with the LLMs behind GitHub Copilot](https://github.blog/2023-05-17-inside-github-working-with-the-llms-behind-github-copilot/?WT.mc_id=academic-105485-koreyst). -- **Jun 2023** | [How to write better prompts for GitHub Copilot](https://github.blog/2023-06-20-how-to-write-better-prompts-for-github-copilot/?WT.mc_id=academic-105485-koreyst). -- **Jul 2023** | [.. GitHub Copilot goes beyond Codex with improved AI model](https://github.blog/2023-07-28-smarter-more-efficient-coding-github-copilot-goes-beyond-codex-with-improved-ai-model/?WT.mc_id=academic-105485-koreyst) -- **Jul 2023** | [A Developer's Guide to Prompt Engineering and LLMs](https://github.blog/2023-07-17-prompt-engineering-guide-generative-ai-llms/?WT.mc_id=academic-105485-koreyst) -- **Sep 2023** | [How to build an enterprise LLM app: Lessons from GitHub Copilot](https://github.blog/2023-09-06-how-to-build-an-enterprise-llm-application-lessons-from-github-copilot/?WT.mc_id=academic-105485-koreyst) - -You can also browse their [Engineering blog](https://github.blog/category/engineering/?WT.mc_id=academic-105485-koreyst) for more posts like [this one](https://github.blog/2023-09-27-how-i-used-github-copilot-chat-to-build-a-reactjs-gallery-prototype/?WT.mc_id=academic-105485-koreyst) that shows how these models and techniques are _applied_ for driving real-world applications. - ---- - - - -## Prompt Construction - -We've seen why prompt engineering is important - now let's understand how prompts are _constructed_ so we can evaluate different techniques for more effective prompt design. - -### Basic Prompt - -Let's start with the basic prompt: a text input sent to the model with no other context. Here's an example - when we send the first few words of the US national anthem to the OpenAI [Completion API](https://platform.openai.com/docs/api-reference/completions?WT.mc_id=academic-105485-koreyst) it instantly _completes_ the response with the next few lines, illustrating the basic prediction behavior. - -| Prompt (Input) | Completion (Output) | -| :----------------- | :----------------------------------------------------------------------------------------------------------------------------------------- | -| Oh say can you see | It sounds like you're starting the lyrics to "The Star-Spangled Banner," the national anthem of the United States. The full lyrics are ... | - -### Complex Prompt - -Now let's add context and instructions to that basic prompt. The [Chat Completion API](https://learn.microsoft.com/azure/ai-services/openai/how-to/chatgpt?WT.mc_id=academic-105485-koreyst) lets us construct a complex prompt as a collection of _messages_ with: - -- Input/output pairs reflecting _user_ input and _assistant_ response. -- System message setting the context for assistant behavior or personality. - -The request is now in the form below, where the _tokenization_ effectively captures relevant information from context and conversation. Now, changing the system context can be as impactful on the quality of completions, as the user inputs provided. - -```python -response = openai.chat.completions.create( - model="gpt-3.5-turbo", - messages=[ - {"role": "system", "content": "You are a helpful assistant."}, - {"role": "user", "content": "Who won the world series in 2020?"}, - {"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."}, - {"role": "user", "content": "Where was it played?"} - ] -) -``` - -### Instruction Prompt - -In the above examples, the user prompt was a simple text query that can be interpreted as a request for information. With _instruction_ prompts, we can use that text to specify a task in more detail, providing better guidance to the AI. Here's an example: - -| Prompt (Input) | Completion (Output) | Instruction Type | -| :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------- | :------------------ | -| Write a description of the Civil War | _returned a simple paragraph_ | Simple | -| Write a description of the Civil War. Provide key dates and events and describe their significance | _returned a paragraph followed by a list of key event dates with descriptions_ | Complex | -| Write a description of the Civil War in 1 paragraph. Provide 3 bullet points with key dates and their significance. Provide 3 more bullet points with key historical figures and their contributions. Return the output as a JSON file | _returns more extensive details in a text box, formatted as JSON that you can copy-paste to a file and validate as needed_ | Complex. Formatted. | - -## Primary Content - -In the above examples, the prompt was still fairly open-ended, allowing the LLM to decide what part of its pre-trained dataset was relevant. With the _primary content_ design pattern, the input text is divided into two parts: - -- an instruction (action) -- relevant content (that influences action) - -Here's an example where the instruction is to "summarize this in 2 sentences". - -| Prompt (Input) | Completion (Output) | -| :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Jupiter is the fifth planet from the Sun and the largest in the Solar System. It is a gas giant with a mass one-thousandth that of the Sun, but two-and-a-half times that of all the other planets in the Solar System combined. Jupiter is one of the brightest objects visible to the naked eye in the night sky, and has been known to ancient civilizations since before recorded history. It is named after the Roman god Jupiter.[19] When viewed from Earth, Jupiter can be bright enough for its reflected light to cast visible shadows,[20] and is on average the third-brightest natural object in the night sky after the Moon and Venus.
**Summarize this in 2 short sentences** | Jupiter, the fifth planet from the Sun, is the largest in the Solar System and is known for being one of the brightest objects in the night sky. Named after the Roman god Jupiter, it's a gas giant whose mass is two-and-a-half times that of all other planets in the Solar System combined. | - -The primary content segment can be used in various ways to drive more effective instructions: - -- **Examples** - instead of telling the model what to do with an explicit instruction, give it examples of what to do and let it infer the pattern. -- **Cues** - follow the instruction with a "cue" that primes the completion, guiding the model towards more relevant responses. -- **Templates** - these are repeatable 'recipes' for prompts with placeholders (variables) that can be customized with data for specific use cases. - -Let's explore these in action. - -### Using Examples - -This is an approach where you use the primary content to "feed the model" some examples of the desired output for a given instruction, and let it infer the pattern for the desired output. Based on the number of examples provided, we can have zero-shot prompting, one-shot prompting, few-shot prompting etc. - -The prompt now consists of three components: - -- A task description -- A few examples of the desired output -- The start of a new example (which becomes an implicit task description) - -| Learning Type | Prompt (Input) | Completion (Output) | -| :------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------- | -| Zero-shot | "The Sun is Shining". Translate to Spanish | "El Sol está brillando". | -| One-shot | "The Sun is Shining" => ""El Sol está brillando".
"It's a Cold and Windy Day" => | "Es un día frío y ventoso". | -| Few-shot | The player ran the bases => Baseball
The player hit an ace => Tennis
The player hit a six => Cricket
The player made a slam-dunk => | Basketball | -| | | | - -Note how we had to provide explicit instruction ("Translate to Spanish") in zero-shot prompting, but it gets inferred in the one-shot prompting example. The few-shot example shows how adding more examples allows models to make more accurate inferences with no added instructions. - -### Prompt Cues - -Another technique for using primary content is to provide _cues_ rather than examples. In this case, we are giving the model a nudge in the right direction by _starting it off_ with a snippet that reflects the desired response format. The model then "takes the cue" to continue in that vein. - -| Number of Cues | Prompt (Input) | Completion (Output) | -| :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| 0 | Jupiter is the fifth planet from the Sun and the largest in the Solar System. It is a gas giant with a mass one-thousandth that of the Sun, but two-and-a-half times that of all the other planets in the Solar System combined. Jupiter is one of the brightest objects visible to the naked eye in the night sky, and has been known to ancient civilizations since before recorded history.
**Summarize This** | Jupiter is the largest planet in our Solar System and the fifth one from the Sun. It is a gas giant with a mass 1/1000th of the Sun's, but it is heavier than all the other planets combined. Ancient civilizations have known about Jupiter for a long time, and it is easily visible in the night sky.. | -| 1 | Jupiter is the fifth planet from the Sun and the largest in the Solar System. It is a gas giant with a mass one-thousandth that of the Sun, but two-and-a-half times that of all the other planets in the Solar System combined. Jupiter is one of the brightest objects visible to the naked eye in the night sky, and has been known to ancient civilizations since before recorded history.
**Summarize This**
What we learned is that Jupiter | is the fifth planet from the Sun and the largest in the Solar System. It is a gas giant with a mass one-thousandth that of the Sun, but two-and-a-half times that of all the other planets combined. It is easily visible to the naked eye and has been known since ancient times. | -| 2 | Jupiter is the fifth planet from the Sun and the largest in the Solar System. It is a gas giant with a mass one-thousandth that of the Sun, but two-and-a-half times that of all the other planets in the Solar System combined. Jupiter is one of the brightest objects visible to the naked eye in the night sky, and has been known to ancient civilizations since before recorded history.
**Summarize This**
Top 3 Facts We Learned: | 1. Jupiter is the fifth planet from the Sun and the largest in the Solar System.
2. It is a gas giant with a mass one-thousandth that of the Sun...
3. Jupiter has been visible to the naked eye since ancient times ... | -| | | | - -### Prompt Templates - -A prompt template is a _pre-defined recipe for a prompt_ that can be stored and reused as needed, to drive more consistent user experiences at scale. In its simplest form, it is simply a collection of prompt examples like [this one from OpenAI](https://platform.openai.com/examples?WT.mc_id=academic-105485-koreyst) that provides both the interactive prompt components (user and system messages) and the API-driven request format - to support reuse. - -In it's more complex form like [this example from LangChain](https://python.langchain.com/docs/concepts/prompt_templates/?WT.mc_id=academic-105485-koreyst) it contains _placeholders_ that can be replaced with data from a variety of sources (user input, system context, external data sources etc.) to generate a prompt dynamically. This allows us to create a library of reusable prompts that can be used to drive consistent user experiences **programmatically** at scale. - -Finally, the real value of templates lies in the ability to create and publish _prompt libraries_ for vertical application domains - where the prompt template is now _optimized_ to reflect application-specific context or examples that make the responses more relevant and accurate for the targeted user audience. The [Prompts For Edu](https://github.com/microsoft/prompts-for-edu?WT.mc_id=academic-105485-koreyst) repository is a great example of this approach, curating a library of prompts for the education domain with emphasis on key objectives like lesson planning, curriculum design, student tutoring etc. - -## Supporting Content - -If we think about prompt construction as having a instruction (task) and a target (primary content), then _secondary content_ is like additional context we provide to **influence the output in some way**. It could be tuning parameters, formatting instructions, topic taxonomies etc. that can help the model _tailor_ its response to be suit the desired user objectives or expectations. - -For example: Given a course catalog with extensive metadata (name, description, level, metadata tags, instructor etc.) on all the available courses in the curriculum: - -- we can define an instruction to "summarize the course catalog for Fall 2023" -- we can use the primary content to provide a few examples of the desired output -- we can use the secondary content to identify the top 5 "tags" of interest. - -Now, the model can provide a summary in the format shown by the few examples - but if a result has multiple tags, it can prioritize the 5 tags identified in secondary content. - ---- - - - -## Prompting Best Practices - -Now that we know how prompts can be _constructed_, we can start thinking about how to _design_ them to reflect best practices. We can think about this in two parts - having the right _mindset_ and applying the right _techniques_. - -### Prompt Engineering Mindset - -Prompt Engineering is a trial-and-error process so keep three broad guiding factors in mind: - -1. **Domain Understanding Matters.** Response accuracy and relevance is a function of the _domain_ in which that application or user operates. Apply your intuition and domain expertise to **customize techniques** further. For instance, define _domain-specific personalities_ in your system prompts, or use _domain-specific templates_ in your user prompts. Provide secondary content that reflects domain-specific contexts, or use _domain-specific cues and examples_ to guide the model towards familiar usage patterns. - -2. **Model Understanding Matters.** We know models are stochastic by nature. But model implementations can also vary in terms of the training dataset they use (pre-trained knowledge), the capabilities they provide (e.g., via API or SDK) and the type of content they are optimized for (e.g, code vs. images vs. text). Understand the strengths and limitations of the model you are using, and use that knowledge to _prioritize tasks_ or build _customized templates_ that are optimized for the model's capabilities. - -3. **Iteration & Validation Matters.** Models are evolving rapidly, and so are the techniques for prompt engineering. As a domain expert, you may have other context or criteria _your_ specific application, that may not apply to the broader community. Use prompt engineering tools & techniques to "jump start" prompt construction, then iterate and validate the results using your own intuition and domain expertise. Record your insights and create a **knowledge base** (e.g, prompt libraries) that can be used as a new baseline by others, for faster iterations in the future. - -## Best Practices - -Now let's look at common best practices that are recommended by [OpenAI](https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-openai-api?WT.mc_id=academic-105485-koreyst) and [Azure OpenAI](https://learn.microsoft.com/azure/ai-services/openai/concepts/prompt-engineering#best-practices?WT.mc_id=academic-105485-koreyst) practitioners. - -| What | Why | -| :-------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| Evaluate the latest models. | New model generations are likely to have improved features and quality - but may also incur higher costs. Evaluate them for impact, then make migration decisions. | -| Separate instructions & context | Check if your model/provider defines _delimiters_ to distinguish instructions, primary and secondary content more clearly. This can help models assign weights more accurately to tokens. | -| Be specific and clear | Give more details about the desired context, outcome, length, format, style etc. This will improve both the quality and consistency of responses. Capture recipes in reusable templates. | -| Be descriptive, use examples | Models may respond better to a "show and tell" approach. Start with a `zero-shot` approach where you give it an instruction (but no examples) then try `few-shot` as a refinement, providing a few examples of the desired output. Use analogies. | -| Use cues to jumpstart completions | Nudge it towards a desired outcome by giving it some leading words or phrases that it can use as a starting point for the response. | -| Double Down | Sometimes you may need to repeat yourself to the model. Give instructions before and after your primary content, use an instruction and a cue, etc. Iterate & validate to see what works. | -| Order Matters | The order in which you present information to the model may impact the output, even in the learning examples, thanks to recency bias. Try different options to see what works best. | -| Give the model an “out” | Give the model a _fallback_ completion response it can provide if it cannot complete the task for any reason. This can reduce chances of models generating false or fabricated responses. | -| | | - -As with any best practice, remember that _your mileage may vary_ based on the model, the task and the domain. Use these as a starting point, and iterate to find what works best for you. Constantly re-evaluate your prompt engineering process as new models and tools become available, with a focus on process scalability and response quality. - - - -## Assignment - -Congratulations! You made it to the end of the lesson! It's time to put some of those concepts and techniques to the test with real examples! - -For our assignment, we'll be using a Jupyter Notebook with exercises you can complete interactively. You can also extend the Notebook with your own Markdown and Code cells to explore ideas and techniques on your own. - -### To get started, fork the repo, then - -- (Recommended) Launch GitHub Codespaces -- (Alternatively) Clone the repo to your local device and use it with Docker Desktop -- (Alternatively) Open the Notebook with your preferred Notebook runtime environment. - -### Next, configure your environment variables - -- Copy the `.env.copy` file in repo root to `.env` and fill in the `AZURE_OPENAI_API_KEY`, `AZURE_OPENAI_ENDPOINT` and `AZURE_OPENAI_DEPLOYMENT` values. Come back to [Learning Sandbox section](../../../04-prompt-engineering-fundamentals#learning-sandbox) to learn how. - -### Next, open the Jupyter Notebook - -- Select the runtime kernel. If using options 1 or 2, simply select the default Python 3.10.x kernel provided by the dev container. - -You're all set to run the exercises. Note that there are no _right and wrong_ answers here - just exploring options by trial-and-error and building intuition for what works for a given model and application domain. - -_For this reason there are no Code Solution segments in this lesson. Instead, the Notebook will have Markdown cells titled "My Solution:" that shows one example output for reference._ - - - -## Knowledge check - -Which of the following is a good prompt following some reasonable best practices? - -1. Show me an image of red car -2. Show me an image of red car of make Volvo and model XC90 parked by a cliff with the sun setting -3. Show me an image of red car of make Volvo and model XC90 - -A: 2, it's the best prompt as it provides details on "what" and goes into specifics (not just any car but a specific make and model) and it also describes the overall setting. 3 is next best as it also contains a lot of description. - -## 🚀 Challenge - -See if you can leverage the "cue" technique with the prompt: Complete the sentence "Show me an image of red car of make Volvo and ". What does it respond with, and how would you improve it? - -## Great Work! Continue Your Learning - -Want to learn more about different Prompt Engineering concepts? Go to the [continued learning page](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) to find other great resources on this topic. - -Head over to Lesson 5 where we will look at [advanced prompting techniques](../../../05-advanced-prompts/README.md?WT.mc_id=academic-105485-koreyst)! diff --git a/04-prompt-engineering-fundamentals/translations/tw/README.md b/04-prompt-engineering-fundamentals/translations/tw/README.md deleted file mode 100644 index ec5328ac7d..0000000000 --- a/04-prompt-engineering-fundamentals/translations/tw/README.md +++ /dev/null @@ -1,399 +0,0 @@ -# 提示工程基礎 - -[![提示工程基礎](../../images/04-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson4-gh?WT.mc_id=academic-105485-koreyst) - -撰寫提示給LLM的方式也很重要。一個精心設計的提示可以獲得更高品質的回應。但像_prompt_和_prompt engineering_這樣的術語究竟意味著什麼?我該如何改進發送給LLM的提示_input_?這些是我們在本章和下一章中將嘗試回答的問題。 - -_Generative AI_ 能夠根據使用者請求創建新內容(例如,文字、圖像、音訊、程式碼等)。它使用像 OpenAI 的 GPT("Generative Pre-trained Transformer")系列這樣的_大型語言模型_來實現,這些模型是為使用自然語言和程式碼而訓練的。 - -用戶現在可以使用熟悉的範式(如聊天)與這些模型互動,無需任何技術專業知識或訓練。這些模型是基於提示的——用戶發送文字輸入(提示)並獲得 AI 回應(完成)。然後他們可以在多輪對話中反覆與 AI 聊天,精煉他們的提示,直到回應符合他們的期望。 - -"Prompts" 現在成為生成式 AI 應用程式的主要_程式設計介面_,告訴模型該做什麼並影響返回回應的品質。"Prompt Engineering" 是一個快速增長的研究領域,專注於提示的_設計和最佳化_,以大規模提供一致且高品質的回應。 - -## 學習目標 - -在本課程中,我們將學習什麼是提示工程、它為什麼重要,以及如何為給定的模型和應用物件設計更有效的提示。我們將了解提示工程的核心概念和最佳實踐,並學習一個互動式 Jupyter Notebooks "sandbox" 環境,在那裡我們可以看到這些概念應用於真實範例。 - -在本課結束時,我們將能夠: - -1. 解釋什麼是提示工程以及為什麼它很重要。 -2. 描述提示的組成部分及其使用方式。 -3. 學習提示工程的最佳實踐和技術。 -4. 使用 OpenAI 端點將所學技術應用於真實範例。 - -## 學習沙盒 - -目前,提示工程更像是一門藝術而非科學。提高我們直覺的最佳方式是_多加練習_,並採用試錯法,將應用領域專業知識與推薦技術和模型特定的最佳化相結合。 - -Jupyter Notebook 隨附本課程提供了一個 _sandbox_ 環境,您可以在學習過程中或作為程式碼挑戰的一部分來嘗試所學內容。要執行這些練習,您將需要: - -1. **一個 Azure OpenAI API 金鑰** - 已部署 LLM 的服務端點。 -2. **一個 Python 執行環境** - Notebook 可以在其中執行。 -3. **本地環境變數** - _完成[設定](../../../00-course-setup/translations/tw/SETUP.md?WT.mc_id=academic-105485-koreyst)步驟以準備好_。 - -筆記本附帶_入門_練習 - 但我們鼓勵你添加自己的_Markdown_(描述)和_程式碼_(提示請求)部分,以嘗試更多範例或想法 - 並建立你對提示設計的直覺。 - -## 圖解指南 - -想在深入學習之前了解本課程涵蓋的主要內容嗎?查看這本插圖指南,它會讓你了解涵蓋的主要主題,以及每個主題中你需要思考的關鍵要點。課程路線圖將帶你從理解核心概念和挑戰開始,然後通過相關的提示工程技術和最佳實踐來解決這些問題。請注意,本指南中的「高級技術」部分指的是本課程下一章節涵蓋的內容。 - -![提示工程圖解指南](../../images/04-prompt-engineering-sketchnote.png?WT.mc_id=academic-105485-koreyst) - -## 我們的初創公司 - -現在,讓我們談談_這個主題_如何與我們的創業使命相關,即[將 AI 創新帶入教育](https://educationblog.microsoft.com/2023/06/collaborating-to-bring-ai-innovation-to-education?WT.mc_id=academic-105485-koreyst)。我們希望建構 AI 驅動的_個性化學習_應用程式 - 所以讓我們思考一下我們應用程式的不同使用者如何「設計」提示: - -- **管理員**可能會要求 AI _分析課程數據以識別覆蓋範圍中的缺口_。AI 可以總結結果或使用程式碼將其可視化。 -- **教育者**可能會要求 AI _為目標受眾和主題生成課程計劃_。AI 可以以指定的格式建構個性化計劃。 -- **學生**可能會要求 AI _在困難的科目上輔導他們_。AI 現在可以通過針對他們水平的課程、提示和範例來指導學生。 - -這只是冰山一角。查看[Prompts For Education](https://github.com/microsoft/prompts-for-edu/tree/main?WT.mc_id=academic-105485-koreyst) - 由教育專家策劃的開放原始碼提示函式庫 - 以更廣泛地了解可能性!_嘗試在沙盒中執行一些這些提示,或使用 OpenAI Playground 看看會發生什麼!_ - - - -## 什麼是提示工程? - -我們開始這堂課時,將**Prompt Engineering**定義為_設計和最佳化_文字輸入(prompts)的過程,以提供一致且高品質的回應(completions)來達到給定的應用目標和模型。我們可以將這視為一個兩步驟的過程: - -- _設計_ 給定模型和目標的初始提示 -- _反覆改進_ 提示以提高回應的品質 - -這必然是一個需要用戶直覺和努力來獲得最佳結果的反覆試驗過程。所以為什麼這很重要?要回答這個問題,我們首先需要了解三個概念: - -- _分詞_ = 模型如何「看見」提示 -- _基礎 LLMs_ = 基礎模型如何「處理」提示 -- _指令調整 LLMs_ = 模型現在如何看見「任務」 - -### 分詞 - -一個 LLM 將提示視為_一系列的標記_,不同的模型(或模型的不同版本)可以以不同的方式將相同的提示標記化。由於 LLM 是在標記上訓練的(而不是在原始文本上),提示的標記化方式直接影響生成回應的品質。 - -為了直觀了解分詞是如何運作的,可以嘗試使用像 [OpenAI Tokenizer](https://platform.openai.com/tokenizer?WT.mc_id=academic-105485-koreyst) 這樣的工具。將你的提示複製進去,看看它如何轉換成標記,注意空白字元和標點符號是如何處理的。請注意,此範例顯示的是較舊的 LLM (GPT-3),所以用較新的模型嘗試可能會產生不同的結果。 - -![分詞](../../images/04-tokenizer-example.png?WT.mc_id=academic-105485-koreyst) - -### 概念: 基礎模型 - -一旦提示被標記化,["Base LLM"](https://blog.gopenai.com/an-introduction-to-base-and-instruction-tuned-large-language-models-8de102c785a6?WT.mc_id=academic-105485-koreyst) (或基礎模型) 的主要函式是預測該序列中的標記。由於LLM是基於大量文本資料集訓練的,它們對標記之間的統計關係有很好的理解,並且可以有信心地做出預測。請注意,它們並不理解提示或標記中單詞的_意義_;它們只是看到一個模式,並可以用下一個預測來「完成」它。它們可以繼續預測該序列,直到被使用者干預或某些預先設定的條件終止。 - -想看看基於提示的完成如何運作?將上述提示輸入到 Azure OpenAI Studio 的[_Chat Playground_](https://oai.azure.com/playground?WT.mc_id=academic-105485-koreyst)中,使用預設設定。系統被配置為將提示視為資訊請求——因此你應該會看到一個滿足此上下文的完成。 - -但是如果使用者想要看到符合某些標準或任務目標的特定內容呢?這就是_指令調整_的LLM派上用場的地方。 - -![Base LLM Chat Completion](../../images/04-playground-chat-base.png?WT.mc_id=academic-105485-koreyst) - -### 概念: 指令調整 LLMs - -一個[指令調整的 LLM](https://blog.gopenai.com/an-introduction-to-base-and-instruction-tuned-large-language-models-8de102c785a6?WT.mc_id=academic-105485-koreyst)從基礎模型開始,並使用範例或輸入/輸出對(例如,多輪「訊息」)進行微調,這些範例或對話可以包含明確的指令——AI 的回應嘗試遵循該指令。 - -這使用了像是人類回饋強化學習(RLHF)這樣的技術,可以訓練模型_遵循指示_和_從回饋中學習_,以便產生更適合實際應用且更符合使用者目標的回應。 - -讓我們試試看 - 重訪上面的提示,但現在將 _系統訊息_ 更改為提供以下指示作為上下文: - -> _總結提供給你的內容,適合二年級學生。將結果保持在一段內,包含3-5個要點。_ - -看看結果現在如何調整以反映所需的目標和格式?教育者現在可以直接在他們的幻燈片中使用這個回應,適用於那個類別。 - -![指令調整的 LLM 聊天完成](../../images/04-playground-chat-instructions.png?WT.mc_id=academic-105485-koreyst) - -## 為什麼我們需要提示工程? - -現在我們知道提示是如何被LLM處理的,讓我們來談談為什麼我們需要提示工程。答案在於當前的LLM提出了許多挑戰,使得在不投入提示建構和最佳化的情況下,更難以實現可靠且一致的完成。例如: - -1. **模型回應是隨機的。** 相同的提示可能會因不同的模型或模型版本產生不同的回應。甚至在不同時間使用相同的模型也可能產生不同的結果。提示工程技術可以通過提供更好的防護措施來幫助我們減少這些變異。 - -1. **模型可能會捏造回應。** 模型是用大型但有限的數據集進行預訓練的,這意味著它們缺乏訓練範圍之外的概念知識。因此,它們可能會產生不準確、虛構或直接與已知事實相矛盾的完成。提示工程技術幫助用戶識別和減輕這些捏造,例如,通過要求 AI 提供引用或推理。 - -1. **模型能力會有所不同。** 新的模型或模型世代將具有更豐富的能力,但也會帶來成本和複雜性的獨特怪癖和權衡。提示工程可以幫助我們開發最佳實踐和工作流程,以可擴展、無縫的方式抽象出差異並適應特定模型的需求。 - -讓我們在 OpenAI 或 Azure OpenAI Playground 中看看這個實際運作: - -- 使用相同的提示與不同的 LLM 部署(例如, OpenAI, Azure OpenAI, Hugging Face)- 你是否看到了變化? -- 使用相同的提示反覆與_相同的_ LLM 部署(例如, Azure OpenAI playground)- 這些變化有何不同? - -### 製作範例 - -在本課程中,我們使用術語**「捏造」**來指代LLM有時因訓練限制或其他約束而生成事實上不正確的資訊的現象。你可能在流行文章或研究論文中也聽過這種現象被稱為_「幻覺」_。然而,我們強烈建議使用_「捏造」_這個術語,這樣我們就不會因為將人類特徵歸因於機器驅動的結果而無意中擬人化這種行為。這也從術語角度加強了[負責任的AI指南](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-105485-koreyst),去除了在某些情境下可能被認為具有冒犯性或不包容性的術語。 - -想了解捏造是如何運作的嗎?想一個提示,指示 AI 生成一個不存在的主題的內容(以確保它不在訓練數據集中)。例如 - 我試過這個提示: - -> **提示:** 產生一個關於2076年火星戰爭的課程計劃。 - -一個網路搜尋顯示,有關火星戰爭的虛構故事(例如,電視劇或書籍)——但沒有發生在2076年。常識也告訴我們,2076年是在未來,因此,不能與真實事件相關聯。 - -那麼當我們使用不同的 LLM 提供者執行這個提示時會發生什麼情況呢? - -> **回應 1**: OpenAI Playground (GPT-35) - -![Response 1](../../images/04-fabrication-oai.png?WT.mc_id=academic-105485-koreyst) - -> **回應 2**: Azure OpenAI Playground (GPT-35) - -![Response 2](../../images/04-fabrication-aoai.png?WT.mc_id=academic-105485-koreyst) - -> **回應 3**: : Hugging Face Chat Playground (LLama-2) - -![Response 3](../../images/04-fabrication-huggingchat.png?WT.mc_id=academic-105485-koreyst) - -正如預期的那樣,由於隨機行為和模型能力的變化,每個模型(或模型版本)產生的回應略有不同。例如,一個模型針對八年級的觀眾,而另一個則假設是高中生。但所有三個模型都生成了可以讓不知情的用戶相信事件是真實的回應。 - -提示工程技術如_metaprompting_和_溫度配置_可能在某種程度上減少模型的捏造。新的提示工程_架構_也將新工具和技術無縫地整合到提示流程中,以減輕或減少其中一些效果。 - -## 案例研究: GitHub Copilot - -讓我們通過查看一個案例研究來了解提示工程在現實世界解決方案中的應用: [GitHub Copilot](https://github.com/features/copilot?WT.mc_id=academic-105485-koreyst)。 - -GitHub Copilot 是你的 "AI Pair Programmer" - 它將文字提示轉換為程式碼完成,並整合到你的開發環境中(例如,Visual Studio Code),提供無縫的使用者體驗。正如以下一系列博客所記錄的那樣,最早的版本是基於 OpenAI Codex 模型 - 工程師們迅速意識到需要微調模型並開發更好的提示工程技術,以提高程式碼品質。7 月,他們[推出了一個改進的 AI 模型,超越了 Codex](https://github.blog/2023-07-28-smarter-more-efficient-coding-github-copilot-goes-beyond-codex-with-improved-ai-model/?WT.mc_id=academic-105485-koreyst),提供更快的建議。 - -依照順序閱讀文章,以跟隨他們的學習旅程。 - -- **2023年5月** | [GitHub Copilot 正在變得更了解你的程式碼](https://github.blog/2023-05-17-how-github-copilot-is-getting-better-at-understanding-your-code/?WT.mc_id=academic-105485-koreyst) -- **2023年5月** | [深入 GitHub: 與 GitHub Copilot 背後的 LLMs 合作](https://github.blog/2023-05-17-inside-github-working-with-the-llms-behind-github-copilot/?WT.mc_id=academic-105485-koreyst)。 -- **2023年6月** | [如何為 GitHub Copilot 撰寫更好的提示](https://github.blog/2023-06-20-how-to-write-better-prompts-for-github-copilot/?WT.mc_id=academic-105485-koreyst)。 -- **2023年7月** | [.. GitHub Copilot 超越 Codex,具有改進的 AI 模型](https://github.blog/2023-07-28-smarter-more-efficient-coding-github-copilot-goes-beyond-codex-with-improved-ai-model/?WT.mc_id=academic-105485-koreyst) -- **2023年7月** | [開發者的提示工程和 LLMs 指南](https://github.blog/2023-07-17-prompt-engineering-guide-generative-ai-llms/?WT.mc_id=academic-105485-koreyst) -- **2023年9月** | [如何構建企業 LLM 應用: 來自 GitHub Copilot 的經驗教訓](https://github.blog/2023-09-06-how-to-build-an-enterprise-llm-application-lessons-from-github-copilot/?WT.mc_id=academic-105485-koreyst) - -你也可以瀏覽他們的[工程部落格](https://github.blog/category/engineering/?WT.mc_id=academic-105485-koreyst)來查看更多像[這篇](https://github.blog/2023-09-27-how-i-used-github-copilot-chat-to-build-a-reactjs-gallery-prototype/?WT.mc_id=academic-105485-koreyst)展示如何應用這些模型和技術來推動實際應用的文章。 - ---- - - - - -## 提示建構 - -我們已經了解為什麼提示工程很重要 - 現在讓我們來理解提示是如何_構建_的,這樣我們就可以評估不同的技術以設計更有效的提示。 - -### 基本提示 - -讓我們從基本提示開始:一個沒有其他上下文的文字輸入發送到模型。這裡有一個範例 - 當我們將美國國歌的前幾個字發送到 OpenAI [Completion API](https://platform.openai.com/docs/api-reference/completions?WT.mc_id=academic-105485-koreyst) 時,它會立即_完成_回應的接下來幾行,展示了基本的預測行為。 - -| Prompt (Input) | Completion (Output) | -| :----------------- | :----------------------------------------------------------------------------------------------------------------------------------------- | -| Oh say can you see | It sounds like you're starting the lyrics to "The Star-Spangled Banner," the national anthem of the United States. The full lyrics are ... | - -### 複雜提示 - -現在讓我們為這個基本提示添加上下文和指示。[Chat Completion API](https://learn.microsoft.com/azure/ai-services/openai/how-to/chatgpt?WT.mc_id=academic-105485-koreyst) 讓我們可以將複雜的提示構建為一組 _訊息_,包括: - -- 輸入/輸出對應反映 _使用者_ 輸入和 _助手_ 回應。 -- 系統訊息設定助手行為或個性背景。 - -請求現在如下所示,其中 _tokenization_ 有效地從上下文和對話中捕捉到相關資訊。現在,改變系統上下文對完成的品質影響與提供的使用者輸入一樣大。 - -```python -response = openai.chat.completions.create( - model="gpt-3.5-turbo", - messages=[ - {"role": "system", "content": "你是一個有幫助的助手。"}, - {"role": "user", "content": "誰贏得了2020年的世界大賽?"}, - {"role": "assistant", "content": "洛杉磯道奇隊贏得了2020年的世界大賽。"}, - {"role": "user", "content": "比賽在哪裡舉行?"} - ] -) -``` - -### 指令提示 - -在上述範例中,使用者提示是一個簡單的文字查詢,可以解釋為一個資訊請求。使用_instruction_提示,我們可以使用該文字更詳細地指定任務,為AI提供更好的指導。這裡有一個範例: - -| Prompt (Input) | Completion (Output) | Instruction Type | -| :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------- | :------------------ | -| Write a description of the Civil War | _returned a simple paragraph_ | Simple | -| Write a description of the Civil War. Provide key dates and events and describe their significance | _returned a paragraph followed by a list of key event dates with descriptions_ | Complex | -| Write a description of the Civil War in 1 paragraph. Provide 3 bullet points with key dates and their significance. Provide 3 more bullet points with key historical figures and their contributions. Return the output as a JSON file | _returns more extensive details in a text box, formatted as JSON that you can copy-paste to a file and validate as needed_ | Complex. Formatted. | - -## 主要內容 - -在上述範例中,提示仍然相當開放,允許 LLM 決定其預訓練資料集中哪一部分是相關的。使用 _主要內容_ 設計模式時,輸入文字被分為兩部分: - -- 一個指令 (動作) -- 相關內容 (影響動作) - -這裡有一個範例,指示是「用兩句話總結這個」。 - -| Prompt (Input) | Completion (Output) | -| :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Jupiter is the fifth planet from the Sun and the largest in the Solar System. It is a gas giant with a mass one-thousandth that of the Sun, but two-and-a-half times that of all the other planets in the Solar System combined. Jupiter is one of the brightest objects visible to the naked eye in the night sky, and has been known to ancient civilizations since before recorded history. It is named after the Roman god Jupiter.[19] When viewed from Earth, Jupiter can be bright enough for its reflected light to cast visible shadows,[20] and is on average the third-brightest natural object in the night sky after the Moon and Venus.
**Summarize this in 2 short sentences** | 木星是距離太陽第五顆行星,也是太陽系中最大的行星,並以夜空中最亮的物件之一而聞名。木星以羅馬神祇朱庇特命名,是一顆氣體巨星,其質量是太陽系中所有其他行星總和的兩倍半。 - -主要內容部分可以用於各種方式來推動更有效的指示: - -- **範例** - 與其用明確的指令告訴模型該做什麼,不如給它範例,讓它推論出模式。 -- **提示** - 在指令後面加上一個「提示」,以引導完成,讓模型朝向更相關的回應。 -- **模板** - 這些是可重複使用的提示「秘訣」,帶有佔位符(變數),可以用特定用例的數據來自訂。 - -讓我們來探索這些實際應用。 - -### 使用範例 - -這是一種方法,你可以使用主要內容來「提供模型」一些給定指令的期望輸出範例,並讓它推論出期望輸出的模式。根據提供的範例數量,我們可以有零範例提示、一範例提示、少量範例提示等。 - -現在的提示由三個部分組成: - -- 任務描述 -- 一些所需輸出的範例 -- 新範例的開始(這成為隱含的任務描述) - -| 學習類型 | 提示 (輸入) | 完成 (輸出) | -| :------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------- | -| 零次學習 | "The Sun is Shining". 翻譯成西班牙文 | "El Sol está brillando". | -| 一次學習 | "The Sun is Shining" => ""El Sol está brillando".
"It's a Cold and Windy Day" => | "Es un día frío y ventoso". | -| 少次學習 | The player ran the bases => Baseball
The player hit an ace => Tennis
The player hit a six => Cricket
The player made a slam-dunk => | Basketball | -| | | | - -注意我們如何在零樣本提示中提供明確的指示("Translate to Spanish"),但在單樣本提示範例中則會被推論出來。少樣本範例顯示了如何通過增加更多範例,使模型在不增加指示的情況下做出更準確的推論。 - -### 提示線索 - -另一種使用主要內容的技巧是提供_提示_而不是範例。在這種情況下,我們通過_開始_一個反映所需回應格式的程式碼片段來給模型一個正確方向的暗示。然後模型會「接受提示」以繼續這種方式。 - -| Number of Cues | Prompt (Input) | Completion (Output) | -| :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| 0 | Jupiter is the fifth planet from the Sun and the largest in the Solar System. It is a gas giant with a mass one-thousandth that of the Sun, but two-and-a-half times that of all the other planets in the Solar System combined. Jupiter is one of the brightest objects visible to the naked eye in the night sky, and has been known to ancient civilizations since before recorded history.
**Summarize This** | Jupiter is the largest planet in our Solar System and the fifth one from the Sun. It is a gas giant with a mass 1/1000th of the Sun's, but it is heavier than all the other planets combined. Ancient civilizations have known about Jupiter for a long time, and it is easily visible in the night sky.. | -| 1 | Jupiter is the fifth planet from the Sun and the largest in the Solar System. It is a gas giant with a mass one-thousandth that of the Sun, but two-and-a-half times that of all the other planets in the Solar System combined. Jupiter is one of the brightest objects visible to the naked eye in the night sky, and has been known to ancient civilizations since before recorded history.
**Summarize This**
What we learned is that Jupiter | is the fifth planet from the Sun and the largest in the Solar System. It is a gas giant with a mass one-thousandth that of the Sun, but two-and-a-half times that of all the other planets combined. It is easily visible to the naked eye and has been known since ancient times. | -| 2 | Jupiter is the fifth planet from the Sun and the largest in the Solar System. It is a gas giant with a mass one-thousandth that of the Sun, but two-and-a-half times that of all the other planets in the Solar System combined. Jupiter is one of the brightest objects visible to the naked eye in the night sky, and has been known to ancient civilizations since before recorded history.
**Summarize This**
Top 3 Facts We Learned: | 1. Jupiter is the fifth planet from the Sun and the largest in the Solar System.
2. It is a gas giant with a mass one-thousandth that of the Sun...
3. Jupiter has been visible to the naked eye since ancient times ... | -| | | | - -### 提示範本 - -一個提示模板是一個_預先定義的提示秘訣_,可以根據需要儲存和重複使用,以大規模推動更一致的使用者體驗。最簡單的形式,它只是一些提示範例的集合,如[這個來自 OpenAI 的範例](https://platform.openai.com/examples?WT.mc_id=academic-105485-koreyst),它提供了互動提示組件(使用者和系統訊息)和 API 驅動的請求格式 - 以支援重複使用。 - -在它更複雜的形式中,如[這個來自 LangChain 的範例](https://python.langchain.com/docs/concepts/prompt_templates/?WT.mc_id=academic-105485-koreyst),它包含可以用來自各種來源(使用者輸入、系統上下文、外部資料來源等)的資料替換的_佔位符_,以動態生成提示。這使我們能夠建立一個可重複使用的提示函式庫,程式化地在大規模上驅動一致的使用者體驗。 - -最後,範本的真正價值在於能夠為垂直應用領域建立和發布_提示函式庫_——提示範本現在已_最佳化_,以反映應用特定的上下文或範例,使回應對目標用戶群體更相關和準確。[Prompts For Edu](https://github.com/microsoft/prompts-for-edu?WT.mc_id=academic-105485-koreyst)儲存庫就是這種方法的一個很好的範例,精選了教育領域的提示函式庫,強調了課程規劃、課程設計、學生輔導等關鍵目標。 - -## 支援內容 - -如果我們將提示建構視為包含一個指令(任務)和一個目標(主要內容),那麼_次要內容_就像是我們提供的額外背景以**某種方式影響輸出**。這可能是調整參數、格式指令、主題分類等,可以幫助模型_調整_其回應以符合預期的使用者目標或期望。 - -例如: 給定一個課程目錄,包含課程大綱中所有可用課程的詳細 Metadata (名稱、描述、級別、Metadata 標籤、講師等): - -- 我們可以定義一個指令來「總結2023年秋季的課程目錄」 -- 我們可以使用主要內容來提供一些所需輸出的範例 -- 我們可以使用次要內容來識別前5個感興趣的「標籤」 - -現在,模型可以按照幾個範例顯示的格式提供摘要 - 但如果結果有多個標籤,它可以優先考慮次要內容中識別的5個標籤。 - ---- - - - - -## 提示最佳實踐 - -現在我們知道如何_建構_提示,我們可以開始思考如何_設計_它們以反映最佳實踐。我們可以將這分為兩部分 - 擁有正確的_心態_和應用正確的_技術_。 - -### 提示工程心態 - -提示工程是一個反覆試驗的過程,因此請記住三個廣泛的指導因素: - -1. **領域理解很重要。** 回應的準確性和相關性取決於應用程式或使用者操作的_領域_。運用你的直覺和領域專業知識進一步**自訂技術**。例如,在系統提示中定義_領域特定的人格_,或在使用者提示中使用_領域特定的範本_。提供反映領域特定上下文的次要內容,或使用_領域特定的提示和範例_來引導模型朝向熟悉的使用模式。 - -2. **模型理解很重要。** 我們知道模型本質上是隨機的。但模型實現也可能因其使用的訓練數據集(預訓練知識)、提供的功能(例如,通過 API 或 SDK)以及它們最佳化的內容類型(例如,程式碼 vs. 圖像 vs. 文字)而有所不同。了解你所使用模型的優勢和限制,並利用這些知識來_優先處理任務_或建構_最佳化模型功能的自訂範本_。 - -3. **迭代與驗證很重要。** 模型正在快速演變,提示工程技術也是如此。作為領域專家,你可能有其他_你的_特定應用程式的上下文或標準,這些可能不適用於更廣泛的社群。使用提示工程工具和技術來「快速啟動」提示構建,然後使用你的直覺和領域專業知識進行迭代和驗證結果。記錄你的見解並建立一個**知識庫**(例如,提示函式庫),以便其他人將來可以用作新的基準,進行更快速的迭代。 - -## 最佳實踐 - -現在讓我們來看看[Open AI](https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-openai-api?WT.mc_id=academic-105485-koreyst)和[Azure OpenAI](https://learn.microsoft.com/azure/ai-services/openai/concepts/prompt-engineering#best-practices?WT.mc_id=academic-105485-koreyst)從業者推薦的常見最佳實踐。 - -| 什麼 | 為什麼 | -| :-------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| 評估最新模型 | 新模型世代可能具有改進的功能和品質 - 但也可能會產生更高的成本。評估它們的影響,然後做出遷移決策。 | -| 分開指令和上下文 | 檢查您的模型/提供者是否定義了_分隔符_以更清楚地區分指令、主要和次要內容。這可以幫助模型更準確地分配權重給標記。 | -| 具體且清晰 | 提供更多關於所需上下文、結果、長度、格式、風格等的詳細資訊。這將改善回應的品質和一致性。在可重用的模板中捕捉秘訣。 | -| 描述性,使用範例 | 模型可能對「展示和講解」的方法反應更好。從`零範例`方法開始,給它一個指令(但沒有範例),然後嘗試`少量範例`作為改進,提供一些所需輸出的範例。使用類比。 | -| 使用提示來啟動完成 | 給它一些可以用作回應起點的引導詞或短語,將其推向所需的結果。 | -| 重複 | 有時您可能需要對模型重複自己。在主要內容之前和之後給出指令,使用指令和提示等。迭代和驗證以查看什麼有效。 | -| 順序很重要 | 您向模型呈現資訊的順序可能會影響輸出,即使在學習範例中也是如此,這要歸功於新近性偏見。嘗試不同的選項以查看什麼最有效。 | -| 給模型一個「退出」 | 給模型一個_後備_完成回應,如果因任何原因無法完成任務,它可以提供這個回應。這可以減少模型生成錯誤或虛假回應的機會。 | -| | | - -如同任何最佳實踐,請記住,根據模型、任務和領域的不同,你的效果可能會有所不同。將這些作為起點,並反覆試驗以找到最適合你的方法。隨著新模型和工具的推出,不斷重新評估你的提示工程流程,重點關注流程的延展性和回應品質。 - - - -## 作業 - -恭喜!你完成了這節課!是時候用一些真實範例來測試這些概念和技術了! - -在我們的作業中,我們將使用一個 Jupyter Notebook,其中包含您可以互動完成的練習。您也可以使用您自己的 Markdown 和程式碼單元來擴展 Notebook,以便自行探索想法和技術。 - -### 要開始,先分叉這個 Repo,然後 - -- (推薦) 啟動 GitHub Codespaces -- (或者) 複製 repo 到你的本地裝置並使用 Docker Desktop -- (或者) 使用你偏好的 Notebook 執行環境開啟 Notebook。 - -### 接下來,設定你的環境變數 - -- 複製 repo 根目錄中的 `.env.copy` 檔案到 `.env` 並填入 `AZURE_OPENAI_API_KEY`、`AZURE_OPENAI_ENDPOINT` 和 `AZURE_OPENAI_DEPLOYMENT` 值。回到[Learning Sandbox section](../../04-prompt-engineering-fundamentals#learning-sandbox)學習如何操作。 - -### 接下來,打開 Jupyter Notebook - -- 選擇執行時核心。如果使用選項 1 或 2,只需選擇開發容器提供的預設 Python 3.10.x 核心。 - -你已經準備好執行這些練習。請注意,這裡沒有_對與錯_的答案——只是通過反覆試驗來探索選項,並為給定的模型和應用領域建立直覺。 - -_因此,本課程中沒有程式碼解決方案部分。相反,筆記本將有標題為 "My Solution:" 的 Markdown 儲存格,顯示一個範例輸出供參考。_ - - - -## 知識檢查 - -以下哪一項是遵循一些合理最佳實踐的良好提示? - -1. 給我看一張紅色汽車的圖片 -2. 給我看一張紅色汽車的圖片,品牌為Volvo,型號為XC90,停在懸崖邊,夕陽西下 -3. 給我看一張紅色汽車的圖片,品牌為Volvo,型號為XC90 - -A: 2, 這是最好的提示,因為它提供了「什麼」的詳細資訊並進入具體細節(不僅僅是任何車,而是特定的品牌和型號),它還描述了整體設定。3 是次佳的,因為它也包含了很多描述。 - -## 🚀 挑戰 - -看看你是否可以利用 "cue" 技術來完成提示: 完成句子 "Show me an image of red car of make Volvo and "。它會如何回應,你會如何改進它? - -## 很棒的工作!繼續學習 - -想了解更多不同的提示工程概念嗎?請前往[持續學習頁面](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst)以找到其他關於此主題的優質資源。 - -前往第 5 課,我們將探討[進階提示技巧](../../../05-advanced-prompts/translations/tw/README.md?WT.mc_id=academic-105485-koreyst)! - diff --git a/05-advanced-prompts/translations/cn/README.md b/05-advanced-prompts/translations/cn/README.md deleted file mode 100644 index 4671f61167..0000000000 --- a/05-advanced-prompts/translations/cn/README.md +++ /dev/null @@ -1,630 +0,0 @@ -# 第五章:创建高级的提示工程技巧 - -[![Creating Advanced Prompts](../../images/05-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson5-gh?WT.mc_id=academic-105485-koreyst) - -让我们回顾一下上一章的一些知识: - -> Prompt _engineering_ is the process by which we **guide the model towards more relevant responses** by providing more useful instructions or context. - -编写提示也有两个步骤,通过提供相关上下文构建提示,第二部分是优化,如何逐步改进提示。 - -至此,我们对如何编写提示有了一些基本的了解,但还需要更深入。 在本章中,您将从尝试各种提示到理解为什么一种提示比另一种更好的方向出发。 您将学习如何按照一些适用于 LLMs 的基本技术构建提示。 - -## 本章概述 - -在本章中,我们将讨论以下内容: - -- 通过在提示中应用不同的技术来扩展您的提示工程知识。 -- 配置提示以改变输出。 - -## 学习目标 - -完成本课程后,您将能够掌握: - -- 应用提示工程技术来改善提示结果。 -- 执行多样化或确定性的提示。 - -## 提示工程 - -提示工程是创建将产生所需结果的提示的过程。 提示工程不仅仅是编写文本提示。提示工程不是一门工程学科,它更像是一组可以应用以获得所需结果的技术。 - -### 一个例子 - -让我们看一个像这样的基本提示: - -> Generate 10 questions on geography. - -在这个提示中,实际上应用了一组不同的提示技巧。 - -让我们来分解一下。 - -- **上下文**,您指定它应该与“地理”有关。 -- **限制输出**,您希望不超过 10 个问题。 - -### 简单提示的局限性 - -您可能会也可能不会得到想要的结果。 你会得到你的问题,但地理是一个大话题,你可能无法得到你想要的,原因如下: - -- **大话题**,你不知道它是否会涉及国家、首都、河流等等。 -- **格式**,如果您希望问题以某种方式格式化怎么办? - -正如您所看到的,创建提示时需要考虑很多因素。 - -到目前为止,我们已经看到了一个简单的提示示例,但生成式人工智能能够为各种角色和行业的人们提供更多帮助。 接下来让我们探讨一些基本技术。 - -### 提示技巧 - -首先,我们需要了解提示是 LLM 的一个紧急属性,这意味着这不是模型中内置的功能,而是我们在使用模型时发现的东西。 - -我们可以使用一些基本技巧来提示 LLM。 让我们来探索一下它们。 - -- **零样本提示**,这是最基本的提示形式。它是一种单次提示,要求 LLM 仅根据其训练数据做出响应。 -- **少样本提示**,这种类型的提示通过提供一个或多个示例来引导 LLM 生成响应。 -- **思维链**,这种类型的提示告诉 LLMs 如何将问题分解为步骤。 -- **生成的知识**,为了提高提示的响应,您可以在提示中额外提供生成的事实或知识。 -- **从最少到最多**,就像链式分析一样,这种技术是将问题分解为一系列步骤,然后要求按顺序执行这些步骤。 -- **自我完善**,这种技术是修正 LLM 的输出,然后要求其改进。 -- **多维度提示**。 您在这里想要的是确保 LLM 答案是正确的,并要求它解释答案的各个部分。 这是一种自我完善的形式。 - -### 零样本提示 - -这种提示风格非常简单,它只有一个提示。当你开始学习 LLM 时,可能就会用到这种方法。下面是一个例子: - -- Prompt: "What is Algebra?" -- Answer: "Algebra is a branch of mathematics that studies mathematical symbols and the rules for manipulating these symbols." - -### 少样本提示 - -这种提示方式通过在提出请求的同时提供一些示例来帮助模型。它由单个提示和附加的特定任务数据组成。下面是一个例子: - -- Prompt: "以莎士比亚的风格写一首诗。下面是一些莎士比亚十四行诗的例子:十四行诗第 18 首:"我要把你比作夏日吗?你更可爱,更有节制......'第 116 首十四行诗:"让我不要为真正心灵的结合设置障碍。爱不是爱,当它发现改变时就会改变......'十四行诗第 132 首:"我爱你的眼睛,它们怜悯我,知道你的心在折磨我,对我不屑一顾......现在,请写一首关于月亮之美的十四行诗。" -- Answer:"在天空中,月亮闪烁着柔和的光芒,散发着温柔的光辉,......" - -示例为 LLM 提供了所需输出的背景、格式或风格。它们有助于模型理解具体任务,并生成更准确、更相关的回复。 - -### 思维链 - -思想链是一项非常有趣的技术,因为它涉及到 LLMs 的分步。 这个想法是以一种让 LLMs 了解如何做某种事情的方式来指导 LLMs。 考虑下面的例子,无论有没有思想链: - - - Prompt: "Alice has 5 apples, throws 3 apples, gives 2 to Bob and Bob gives one back, how many apples does Alice have?" - - Answer: 5 - -LLM 给出的答案为 5,这是不正确的。 根据计算结果 (5 -3 -2 + 1 = 1),正确答案是 1 个苹果。 - -那么我们怎样才能教 LLM 正确地做到这一点呢? - -让我们尝试一下思维链。 应用思维链意味着: - -1. 给 LLM 一个类似的例子。 -2. 展示计算结果,以及如何正确计算。 -3. 提供原始提示。 - -- Prompt: "Lisa has 7 apples, throws 1 apple, gives 4 apples to Bart and Bart gives one back: - 7 -1 = 6 - 6 -4 = 2 - 2 +1 = 3 - Alice has 5 apples, throws 3 apples, gives 2 to Bob and Bob gives one back, how many apples does Alice have?" - Answer: 1 - -请注意我们如何用另一个示例、计算和原始提示编写更长的提示,然后得出正确答案 1。 - -正如您所看到的,思维链是一种非常强大的技术。 - -### 生成的知识 - -很多时候,当您想要构建提示时,您希望使用自己公司的数据来实现。 您希望提示的一部分来自公司,另一部分应该是您感兴趣的实际提示。 - -举个例子,如果您从事保险业务,那么您的提示可能如下所示: - - ```text - {{company}}: {{company_name}} - {{products}}: - {{products_list}} - Please suggest an insurance given the following budget and requirements: - Budget: {{budget}} - Requirements: {{requirements}} - ``` - -在上面,您可以看到如何使用模板构建提示。 模板中有许多变量,用“{{variable}}”表示,这些变量将替换为公司 API 中的实际值。 - -以下示例展示了变量被公司内容替换后提示的外观: - - ```text - Insurance company: ACME Insurance - Insurance products (cost per month): - - Car, cheap, 500 USD - - Car, expensive, 1100 USD - - Home, cheap, 600 USD - - Home, expensive, 1200 USD - - Life, cheap, 100 USD - - Please suggest an insurance given the following budget and requirements: - Budget: $1000 - Requirements: Car, Home - ``` - -通过 LLM 运行此提示将产生如下响应: - - ```output - , and Life insurance - - Given the budget and requirements, we suggest the following insurance package from ACME Insurance: - - Car, cheap, 500 USD - - Home, cheap, 600 USD - - Life, cheap, 100 USD - Total cost: $1,200 USD - ``` - -正如您所看到的,它还建议购买人寿保险,但事实并非如此。 此结果表明我们需要通过更改提示来优化提示,使其更清楚地了解其允许的内容。 经过一些试验和错误之后,我们得到以下提示: - - ```text - Insurance company: ACME Insurance - Insurance products (cost per month): - - type: Car, cheap, cost: 500 USD - - type: Car, expensive, cost: 1100 USD - - type: Home, cheap, cost: 600 USD - - type: Home, expensive, cost: 1200 USD - - type: Life, cheap, cost: 100 USD - - Please suggest an insurance given the following budget and requirements: - Budget: $1000 restrict choice to types: Car, Home - ``` - -请注意添加 _type_ 和 _cost_ 以及使用关键字 _restrict_ 如何帮助 LLM 理解我们想要的内容。 - -现在我们得到以下响应: - - ```output - Given the budget and requirements, we suggest the Car, Cheap insurance product which costs 500 USD per month. - ``` - -这个例子的目的是表明,即使我们使用像*生成知识*这样的基本技术,我们仍然需要在大多数情况下优化提示以获得所需的结果。 - -### 从少到多 - -从最少到最多提示的想法是将一个更大的问题分解为多个子问题。 这样,您就可以帮助指导 LLMs 如何“克服”更大的问题。 数据科学就是一个很好的例子,你可以要求 LLMs 来划分问题,如下所示: - -> Prompt: How to perform data science in 5 steps? - -你的人工智能助理会回答: - -1. 收集数据 -2. 清理数据 -3. 分析数据 -4. 绘制数据 -5. 展示数据 - -### 自我完善,质疑结果 - -对于生成式人工智能和 LLMs,你不能相信其输出。 你需要验证一下。 毕竟, LLMs 只是向您展示下一个最有可能说的话,而不是正确的内容。 因此,一个好主意是要求 LLMs 自我批评,这引导我们自我完善技术。 - -其工作原理是按照以下步骤操作: - -1. 要求 LLM 解决问题的初始提示 -2. LLM 产生答案 -3. 质疑答案并要求人工智能改进 -4. LLM 再次回答,这次考虑了质疑并提出了解决方案 - -您可以根据需要多次重复此过程。 - -这是使用此技术的示例: - -> Prompt: "Create a Python Web API with routes products and customers" - -AI Answer: - - ```python - import flask - app = Flask(__name__) - - @app.route('/products') - def products(): - return 'Products' - - @app.route('/customers') - def customers(): - return 'Customers' - ``` - -> Prompt: suggest 3 improvements of the above code - -AI Answer: - - ```text - Sure, here are three suggestions to improve the code: - - Import the correct module: The first line should import Flask instead of flask. The correct import statement should be from flask import Flask. - - Add a main function: Add a if __name__ == '__main__': block to the end of the file to run the application when the file is executed. - - Use f-strings: Use f-strings to format the return statements in the route functions. For example, return 'Products' can be changed to return f'This is the {request.path} page'. - ``` - - ```python - from flask import Flask, request - - app = Flask(__name__) - - @app.route('/products') - def products(): - return f'This is the {request.path} page' - - @app.route('/customers') - def customers(): - return f'This is the {request.path} page' - - if __name__ == '__main__': - app.run() - ``` - -正如您所看到的,由于对第一个答案的批评,上述人工智能响应正在改进第一个建议的代码。 - -### 多维度的提示 - -多维度的提示是一种类似于自我完善的技术,但它更多的是要求 LLMs 解释自己。 目标是减少 LLMs 输出不一致,以确保得出正确的答案。 要遵循的工作流程是: - -1. 请 LLM 回答问题 -2. 对于答案的每一部分,请 LLM 更深入地解释。 -3. 如果存在不一致,则丢弃不一致的部分。 - -重复 2 和 3,直到您完成所有部分并对答案感到满意为止。 - -> prompt: How can I create a crisis plan to mitigate for a pandemic in 5 steps? -> LLM answer: - - ```text - 1. Identify the risks - 1. Identify the stakeholders - 1. Identify the resources - 1. Identify the actions - 1. Identify the communication channels - ``` - -它确定了 5 个步骤,但是我们可以确定这是否正确吗? 让我们请 LLM 解释一下每一步: - -> prompt: Explain the first step in more detail, what are the risks in detail with a pandemic? - - ```text - The risks are the following: - - - Loss of life - - Loss of business - - Loss of reputation - - Loss of customers - - Loss of employees - ``` - -此时,我们希望确保 LLM 是正确的,因此我们要求它更详细地解释第一个风险,并希望它与上面的答案一致: - -> prompt: In a Pandemic, which is the biggest risk and why? - - ```text - The biggest risk is loss of life because it's the most important thing to protect. - ``` - -> What are the two biggest risks in a pandemic? - - ```text - The two biggest risks are loss of life and loss of business. - ``` - -在这一点上,LLMs 是一致的,并提到“生活”和“商业”是两大风险。 我们现在可以继续下一步并感到相当有信心。 然而,我们不应该盲目相信 LLM,我们应该始终验证输出。 - -## 改变您的输出 - -LLM 本质上是不确定的,这意味着每次运行相同的提示时都会得到不同的结果。 例如尝试以下提示: - -> "Generate code for a Python Web API" - - ```text - # Import necessary modules - import flask - from flask import request, jsonify - - # Create a Flask app - app = flask.Flask(__name__) - - # Create a route for the API - @app.route('/api', methods=['GET']) - def api(): - # Get the data from the request - data = request.args - - # Process the data - result = process_data(data) - - # Return the result as JSON - return jsonify(result) - - # Function to process the data - def process_data(data): - # Do something with the data - result = data + 1 - - # Return the result - return result - - # Run the app - if __name__ == '__main__': - app.run() - - ``` - -再次运行相同的提示会生成略有不同的响应: - - ```text - #import necessary packages - import flask - from flask import request, jsonify - - #create the Flask application - app = flask.Flask(__name__) - app.config["DEBUG"] = True - - #create a list of books - books = [ - {'id': 0, - 'title': 'A Fire Upon the Deep', - 'author': 'Vernor Vinge', - 'first_sentence': 'The coldsleep itself was dreamless.', - 'year_published': '1992'}, - {'id': 1, - 'title': 'The Ones Who Walk Away From Omelas', - 'author': 'Ursula K. Le Guin', - 'first_sentence': 'With a clamor of bells that set the swallows soaring, the Festival of Summer came to the city Omelas, bright-towered by the sea.', - 'published': '1973'}, - {'id': 2, - 'title': 'Dhalgren', - 'author': 'Samuel R. Delany', - 'first_sentence': 'to wound the autumnal city.', - 'published': '1975'} - ] - - #create an endpoint for the API - @app.route('/', methods=['GET']) - def home(): - return '''

Books API

-

A prototype API for retrieving books.

''' - - #create an endpoint to return all books - @app.route('/api/v1/resources/books/all', methods=['GET']) - def api_all(): - return jsonify(books) - - #create an endpoint to return a single book - @app.route('/api/v1/resources/books', methods=['GET']) - def api_id(): - #check if an ID was provided as part of the URL - #if ID is provided, assign it to a variable - #if no ID is provided, display an error - if 'id' in request.args: - id = int(request.args['id']) - else: - return "Error: No id field provided. Please specify an id." - - #create an empty list for our results - results = [] - - #loop through the data and match results that fit the requested ID - #IDs are unique, but other fields might return many results - for book in books: - if book['id'] == id: - results.append(book) - - #use the jsonify function from Flask to convert our list of - #Python dictionaries to the JSON format - return jsonify(results) - - app.run() - ``` - -> 多变的输出是个问题吗? - -取决于你想做什么。 如果你想要一个具体的回应,那就是一个问题。 如果您可以接受诸如“生成任意 3 个地理问题”之类的不同输出,那么这不是问题。 - -### 利用温度来改变输出 - -好的,所以我们决定将输出限制为更可预测,即更具确定性。 我们该怎么做呢? - -温度是 0 到 1 之间的值,其中 0 最具确定性,1 最具变化性。 默认值为 0.7。 让我们看看在温度设置为 0.1 的情况下两次运行相同的提示会发生什么: - -> "Generate code for a Python Web API" - - ```python - #import necessary libraries - import flask - from flask import request, jsonify - - #create an instance of the Flask class - app = flask.Flask(__name__) - - #create an endpoint for the API - @app.route('/api/v1/endpoint', methods=['GET']) - def api_endpoint(): - #get the request data - data = request.get_json() - - #process the data - result = process_data(data) - - #return the result - return jsonify(result) - - #function to process the data - def process_data(data): - #process the data - result = {'result': 'success'} - - #return the result - return result - - #run the Flask app - if __name__ == '__main__': - app.run() - - ``` - -再次运行提示符会给我们这样的结果: - - ```python - #import necessary libraries - import flask - from flask import request, jsonify - - #create a Flask app - app = flask.Flask(__name__) - - #create a route for the API - @app.route('/api', methods=['GET']) - def api_call(): - #get the data from the request - data = request.get_json() - - #process the data - result = process_data(data) - - #return the result - return jsonify(result) - - #define the process_data function - def process_data(data): - #do something with the data - result = data + 1 - - #return the result - return result - - #run the app - if __name__ == '__main__': - app.run() - - ``` - -这两个输出之间只有很小的差异。 这次我们反其道而行之,将温度设置为 0.9: - - ```python - # Import necessary libraries - import flask - from flask import request, jsonify - - # Create a Flask app - app = flask.Flask(__name__) - - # Create a route for the API - @app.route('/api', methods=['GET']) - def api_call(): - # Get the data from the request - data = request.args - - # Process the data - result = process_data(data) - - # Return the result - return jsonify(result) - - # Function to process the data - def process_data(data): - # Do something with the data - result = data + 1 - - # Return the result - return result - - # Run the app - if __name__ == '__main__': - app.run() - - ``` - -第二次尝试使用 0.9 作为温度值: - - ```python - import flask - from flask import request, jsonify - - # create the Flask app - app = flask.Flask(__name__) - app.config['DEBUG'] = True - - # create some test data - books = [ - {'id': 0, 'title': 'A Fire Upon The Deep', 'author': 'Vernor Vinge', 'first_sentence': 'The coldsleep itself was dreamless.', 'year_published': '1992'}, - {'id': 1, 'title': 'The Ones Who Walk Away From Omelas', 'author': 'Ursula K. Le Guin', 'first_sentence': 'With a clamor of bells that set the swallows soaring, the Festival of Summer came to the city Omelas, bright-towered by the sea.', 'published': '1973'}, - {'id': 2, 'title': 'Dhalgren', 'author': 'Samuel R. Delany', 'first_sentence': 'to wound the autumnal city.', 'published': '1975'} - ] - - # create an endpoint - @app.route('/', methods=['GET']) - def home(): - return '''

Welcome to our book API!

''' - - @app.route('/api/v1/resources/books - - ``` - -正如您所看到的,结果各式各样。 - -> 请注意,您可以更改更多参数来改变输出,例如 top-k, top-p, repetition penalty, length penalty and diversity penalty ,但这些不属于本课程的范围。 - -## 最佳实践 - -您可以应用许多实践来尝试获得您想要的东西。 当你越来越多地使用提示时,你会发现自己的风格。 - -除了我们介绍的技术之外,在调用 LLMs 时还需要考虑一些好的做法。 - -以下是一些值得考虑的良好做法: - -- **指定上下文**。 上下文很重要,您可以指定的领域、主题等越多越好。 -- 限制输出。 如果您想要特定数量的项目或特定长度,请指定。 -- **指定内容和方式**。 请记住提及您想要什么以及您想要如何实现,例如“创建一个包含路由产品和客户的 Python Web API,将其分为 3 个文件”。 -- **使用模板**。 通常,您会希望使用公司的数据来丰富提示。 使用模板来执行此操作。 模板可以包含用实际数据替换的变量。 -- **拼写正确**。 LLMs 可能会为您提供正确的答案,但如果您拼写正确,您会得到更好的答案。 - -## 作业 - -以下 Python 代码展示了如何使用 Flask 构建简单的 API: - - ```python - from flask import Flask, request - - app = Flask(__name__) - - @app.route('/') - def hello(): - name = request.args.get('name', 'World') - return f'Hello, {name}!' - - if __name__ == '__main__': - app.run() - ``` - -使用 GitHub Copilot 或 ChatGPT 等人工智能助手,并应用“自我优化”技术来改进代码。 - -## 解决方案 - -请尝试通过在代码中添加适当的提示来完成作业。 - -> [!TIP] -> 短语提示要求它改进,限制改进的数量是个好主意。 您还可以要求以某种方式改进它,例如架构、性能、安全性等。 - -[Solution](../../python/aoai-solution.py?WT.mc_id=academic-105485-koreyst) - -## 知识检查 - -为什么我要使用思维链提示? 显示 1 个正确答案和 2 个错误答案。 - -1. 教 LLM 如何解决问题。 -2. 教 LLM 发现代码中的错误。 -3. 指导 LLM 提出不同的解决方案。 - -答:1,因为思路链是向 LLM 展示如何通过提供一系列步骤来解决问题,以及类似的问题以及它们是如何解决的。 - -## 🚀 知识拓展 - -你刚刚在作业中使用了自我完善技术。 选取您构建的任何程序并考虑您想要对其进行哪些改进。 现在使用自我优化技术来建议更改。 您认为结果如何,是更好还是更坏了? - -## 继续学习 - -想要了解有关创建高级提示的更多信息? 转至[进阶学习的页面](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) 查找有关此主章节的其他学习资源。 - -前往第六章,我们将应用提示工程知识[构建文本生成应用程序](../../../06-text-generation-apps/translations/cn/README.md?WT.mc_id=academic-105485-koreyst) diff --git a/05-advanced-prompts/translations/ja-jp/README.md b/05-advanced-prompts/translations/ja-jp/README.md deleted file mode 100644 index c3f74f7df4..0000000000 --- a/05-advanced-prompts/translations/ja-jp/README.md +++ /dev/null @@ -1,641 +0,0 @@ -# 高度なプロンプトの作成 - -[![高度なプロンプトの作成](../../images/05-lesson-banner.png?WT.mc_id=academic-105485-yoterada)](https://aka.ms/gen-ai-lesson5-gh?WT.mc_id=academic-105485-koreyst) - -前章までの学習内容をいくつかおさらいしましょう。 - -> 「_プロンプト・エンジニアリング_」は、より意味のある指示やコンテキスト(文脈)を提供し、「**適切な回答の提供に向けてモデルを導く**」プロセスです。 - -また、プロンプトを作成するには 2 つの段階があります。 -一つ目は関連する「_コンテキスト(文脈)を作成_」する手法で、二つ目は「_最適化_」つまりプロンプトを徐々に改善する手法です。 - -これまで、プロンプトの書き方に関連する基本的な内容について学んできましたが、さらに深く掘り下げる必要があります。この章では、さまざまなプロンプトを試し、特定のプロンプトが別のプロンプトよりも優れている理由を理解します。任意の LLM に適用できる、いくつかの基本的な手法に従ってプロンプトを作成する方法について学びます。 - -## はじめに - -このレッスンでは、下記の内容について説明します。 - -- プロンプトに、さまざまな手法を適用し、プロンプト・エンジニアリングの知識の幅を広げます -- 出力を変化させるようなプロンプトを作成します - -## 学習目標 - -このレッスンを修了すると、下記を理解できます: - -- 結果を改善するプロンプト・エンジニアリング手法を学ぶ -- 多様な、あるいは決定的なプロンプトを作成する - -## プロンプト・エンジニアリング - -プロンプト・エンジニアリングは、期待する結果を生み出すためのプロンプトを作成するプロセスです。単にテキスト・プロンプトを書くだけではありません。プロンプト・エンジニアリングはエンジニアリング分野ではなく、期待する結果を得るために適用できる一連のテクニックです。 - -### プロンプトの例 - -次の基本的なプロンプトを見てみましょう。 - -> 地理に関する質問を 10 問作成してください - -このプロンプトの中では、実際には一連のさまざまなプロンプトのテクニックを適用しています。 - -詳しく見ていきましょう。 - -- **コンテキスト :** 「地理」に関する質問を指定しています。 -- **出力を制限 :** 作成される質問の数は 10 個以下になります - -### 単純なプロンプトの制限 - -期待する結果が得られる場合と得られない場合があります。地理は幅広いテーマであり、幅広いテーマは以下の理由により期待する結果が得られない場合があります。 - -- **大きな話題 :** 国、首都、川などのような話題は大きく、どのような回答結果が得られるか予想できません。 -- **フォーマット :** 質問を特定の方法で書式設定したい場合はどうすればよいでしょうか。 - -ご覧のとおり、プロンプトを作成する際には考慮すべき点がたくさんあります。 - -ここまでは、簡単なプロンプトの例を見てきましたが、生成 AI は、さまざまな役割や業界の人々を支援するために、より多くの作業ができます。次に、いくつかの基本的なテクニックを確認してみましょう。 - -### プロンプトのテクニック - -まずプロンプトは、大規模言語モデル (LLM) の登場で、「_新たに出てきたテクニック_」で、これはモデルに組み込まれている機能ではなく、モデルを使うために使用するものだとご理解ください。 - -LLM のプロンプトで利用可能な、基本的なテクニックがいくつかあります。それらを確認してみましょう。 - -- **Few shot prompting**:プロンプトの最も基本的な形式で、いくつかの例 (質問例と回答例) を含む一つのプロンプトです。 -- **Chain-of-thought**:このプロンプトは、問題を段階に分解し LLM に指示を与えます。 -- **Generated knowledge**:プロンプトの応答を改善するため、事実や知識をプロンプトに追加で提供します。 -- **Least to most**:Chain-of-thought(思考の連鎖)と同様に、この手法は問題を一連のステップに分解し、それらのステップを順番に実行するように指示します。 -- **Self-refine**:この手法は、LLM からの出力結果を LLM 自ら再評価させ、評価結果に基づいて LLM に改善要求を行います。 -- **Maieutic prompting**:これは、LLM の回答が正しいか確認するため、回答の各部分を説明するように求めます。これは自己改善の一種です。 - -### Few-shot prompting - -このプロンプトはとても簡単で、一つのプロンプトといくつかの例から構成します。 -この手法は、LLM について学び始めたときに最初に使用すると良い手法です。次に例を示します。 - -- プロンプト: 「代数とは何ですか?」 -- 回答: 「数学の一分野で、数の代わりに文字を用いて方程式の解法などを研究する学問です。」 - -> [!NOTE] -> 訳者追記 -> 実際には上記の例は Few-shot ではなく One Shot プロンプトになっています。Few Shot プロンプトは、複数の例を含むプロンプトです。 - -### Chain-of-thought - -Chain-of-thought (思考の連鎖) は、非常に興味深い手法で、一つの問題をいくつか複数の段階に分けて、LLM の回答を誘導する手法です。LLM が、何をどうやって処理を行うべきか理解できるように指示する手法です。次の例を考えてみてください。Chain-of-thought を用いた場合と用いない場合の両方の例をご覧ください。まずは、Chain-of-thought を用いない例を見てみましょう。 - - - プロンプト: 「アリスはリンゴを 5 個持っていて、3 個を捨て、2 個をボブに渡し、ボブは 1 個を返します。アリスはリンゴを何個持っていますか?」 - - 回答: 5 - -LLM は 5 と答えますが、これは不正解です。正しい答えはリンゴ 1 個で、計算式は (5 -3 -2 + 1 = 1) になります。 - -では、どうやって LLM がこれを正しく計算できるように伝えられるのでしょうか? - -次に、Chain-of-thought を試してみましょう。Chain-of-thought を適用するためには: - -1. LLM に類似の例を示す。 -2. 計算式と、それを正しく計算する方法を示す。 -3. 元のプロンプトを提供する。 - -という手順を踏みます。以下にその方法を示します。 - - - プロンプト: 「リサはリンゴを7個持っていて、1個を捨て、4個をバートに渡し、バートは1個を返します。計算は次の通り: - 7 - 1 = 6 - 6 - 4 = 2 - 2 + 1 = 3 - アリスはリンゴを 5 個持っていて、3 個を捨て、2 個をボブに渡し、ボブは 1 個を返します。アリスはリンゴを何個持っていますか?」 - - 回答: 1 - -最初に類似した計算問題の計算順序や式を記述した、少し長いプロンプトを作成します。次に、本当に聞きたい内容を記述し送信します。すると正しい答え 1 が得られています。 - -ご覧の通り、Chain-of-thought (思考の連鎖) は非常に強力な手法です。 - -> [!TIP] -> 訳者追記 -> Chain-of-thought を使うと解ける問題もありますが、なるべく LLM にロジカルな処理をさせないほうがいいかもしれません。 - -### Generated knowledge - -企業環境で LLM を使用する際、Generated knowledge (生成された知識) は、プロンプトを作成する際に最も頻繁に使用する手法の一つです。Generated knowledge は、プロンプトに、会社のデータを追加する手法です。これにより、LLM が会社のデータを使用して、より正確な回答を生成できるようになります。 - -例えば、保険業界であれば、プロンプトは以下のようになります。 - -```text -{{company}}: {{company_name}} -{{products}}: -{{products_list}} -以下の予算と要件を考慮し、保険を提案してください: -予算: {{budget}} -要件: {{requirements}} -``` - -上記は、テンプレートを使用してプロンプトをどのように作成するかを示しています。テンプレートには、`{{variable}}`という形式で表現する変数がいくつかあり、これらは会社の API から取得した実際の値に置き換えます。 - -以下は、変数を自社の情報に置き換えた後のプロンプト例です。 - -```text -保険会社: ACME保険 -保険商品(月額料金): -- 自動車保険, 安価, 500ドル -- 自動車保険, 高価, 1100ドル -- 家財保険, 安価, 600ドル -- 家財保険, 高価, 1200ドル -- 生命保険, 安価, 100ドル - -以下の予算と要件を考慮した上で、保険を提案してください: -予算: $1000 -要件: 自動車保険, 家財保険 -``` - -このプロンプトを LLM(Large Language Model)を実行すると、以下のような回答が得られます。 - -```output -生命保険も含めて - -予算と要件を考慮した上で、ACME保険から以下の保険パッケージを提案します: -- 自動車保険, 安価, 500ドル -- 家財保険, 安価, 600ドル -- 生命保険, 安価, 100ドル -合計費用: $1,200ドル -``` - -結果は、生命保険も提案されましたが、これは本来求めていない結果です。そして、プロンプトの最適化が必要だというのを示しています。プロンプトで何を許可するのかを、より明確にする必要があります。試行錯誤を繰り返した結果、以下のようなプロンプトにたどり着きました。 - -```text -保険会社: ACME保険 -保険商品(月額料金): -- 種類: 自動車保険, 安価, 費用: 500ドル -- 種類: 自動車保険, 高価, 費用: 1100ドル -- 種類: 家財保険, 安価, 費用: 600ドル -- 種類: 家財保険, 高価, 費用: 1200ドル -- 種類: 生命保険, 安価, 費用: 100ドル - -以下の予算と要件を考慮した上で、保険を提案してください: -予算: $1000 選択を以下の種類に限定: 自動車保険, 家財保険 -``` - -「種類」と「費用」を追加し、「限定」というキーワードを使用し、LLM が何を求めているかを理解するのに役立ちます。 - -これにより、以下のような回答が得られました。 - -```output -予算と要件を考慮した上で、月額500ドルの自動車保険(安価)を提案します。 -``` - -この例から、Generated knowledge という手法を使用しても、期待する結果を得るためには、多くの場合でプロンプトの最適化が必要だとわかります。 - -### Least-to-most - -「Least-to-most (最小から最大) プロンプト」は、大きな問題を小さな問題に分割する手法です。これにより、LLM(Language Model)が大きな問題をどのように「解決」するかをガイドするのに役立ちます。良い例としては、データサイエンスがあります。LLM に以下のように問題を分割するように依頼できます。 - -> プロンプト: 5 つのステップで、データサイエンスを実行する方法は何ですか? - -AI アシスタントは以下のように回答します。 - -1. データを収集する -2. データをクリーニングする -3. データを分析する -4. データをプロットする -5. データを提示する - -> [!TIP] -> 訳者追記 -> 上記の説明に加え、Least-to-most に関して追加で説明します。Chain of thought と同様に、Least-to-most は問題を一連のステップに分解し、それらのステップを順番に実行するように指示します。 -> Chain of thought の場合は、問題の解き方をプロンプト内で具体的に指示するために、仮に解き方で記載した手順よりも難しい問題が与えられた場合は、時間を要するかもしくは回答できません。 -> 一方で、Least-to-most は、複雑な問題をより簡単なサブ問題に分解し、それらを順番に解いていきます。サブ問題を解く際には、前に解いたサブ問題の答えを利用します。 -> たとえば、難しい問題を解くために、最初にこの問題の解き方を教えてくださいという、最小の簡単な質問をします。その結果、AI はまず、その問題の解き方を考えて教えてくれます。この問題の解き方の情報を会話履歴に含めたままで、次に、オリジナルの問題をもう一度問い合わせします。すると、会話履歴に含まれる、解き方の情報を使って、オリジナルの問題を解き回答できます。そのため、Chain of thought よりも、より難しい問題を解けるようになります。 ->  解き方 -> -> 1. 複雑な問題を一連の単純なサブ問題に分解する -> 2. サブ質問のそれぞれを、前の回答を元に解く -> 参考情報: [1. Least to Most Prompting](https://cobusgreyling.medium.com/least-to-most-prompting-b37ed2e19859?WT.mc_id=academic-105485-yoterada), [2. LEAST-TO-MOST PROMPTING ENABLES COMPLEX REASONING IN LARGE LANGUAGE MODELS (Original Paper)](https://arxiv.org/pdf/2205.10625.pdf?WT.mc_id=academic-105485-yoterada) - -### Self-refine, critique the results - -生成 AI や LLM を使用する際、その出力をそのまま信じてはいけません。必ず確認が必要です。なぜなら、LLM は何が正しいかではなく、次に出てくる可能性が最も高いものを提示しているだけだからです。そのため、LLM に自己評価を求め、それによって自己改善するという手法が有効です。 - -この手法は以下の手順で行います: - -1. 最初に LLM に問題解決を求める -2. LLM が回答する -3. その回答を評価し、AI に改善を求める -4. LLM が再度回答し、今度は評価を考慮して自身が考えた解決策を提案する - -このプロセスは何度でも繰り返しができます。 - -以下にこの手法を使用した例を示します: - -> プロンプト: "製品と顧客を持つ  Python Web API  を作成してください" - -AI の回答: - -```python -import flask -app = Flask(__name__) - -@app.route('/products') -def products(): - return 'Products' - -@app.route('/customers') -def customers(): - return 'Customers' -``` - -> プロンプト: "上記のコードの改善点を 3 つ提案してください" - -AI の回答: - -```text -もちろんです、コードを改善するための3つの提案をします: - -正しいモジュールをインポートする:最初の行は flask ではなく Flask をインポートするべきです。正しいインポート文は from flask import Flask となります。 - -メイン関数を追加する:ファイルを実行した際、アプリケーションを実行できるように、if __name__ == '__main__': ブロックをファイルの最後に追加します。 - -f-strings を使用する:ルート関数の return 文をフォーマットするために f-strings を使用します。例えば、'Products' を返す代わりに、f'This is the {request.path} page' を返すように変更できます。 -``` - -```python -from flask import Flask, request - -app = Flask(__name__) - -@app.route('/products') -def products(): - return f'This is the {request.path} page' - -@app.route('/customers') -def customers(): - return f'This is the {request.path} page' - -if __name__ == '__main__': - app.run() -``` - -上記の AI の回答を見ると、最初の回答を再評価し、最初に提案されたコードが改善されているのがわかります。 - -### Maieutic prompting - -Maieutic プロンプトは、self-refine (自己改善) と似た手法ですが、こちらは LLM に自身で説明を求めるものです。LLM の出力における不整合を減らし、正確な回答を取得するのを目指します。そのための手順は以下のようになります。 - -1. LLM に質問に答えるよう求める -2. 答えの各部分について、LLM に詳しく説明させる -3. 不整合がある場合、その部分は排除する - -これら全ての内容を検討し、回答に満足するまで 2 と 3 の手順を繰り返します。 - -以下に、例を示します。 - -> プロンプト: パンデミックを緩和するための危機対策を 5 つの段階でどのように作成すればよいか教えてください。 - -LLM の回答: - -```text -1. リスクを特定する -2. 利害関係者を特定する -3. リソースを特定する -4. 行動を特定する -5. コミュニケーションチャネルを特定する -``` - -5 つが特定されましたが、これが正しいかどうかを確認するために、LLM に各内容を詳しく説明させてみましょう。 - -> プロンプト: 最初のステップを詳しく説明してください。具体的には、パンデミックにおけるリスクは何ですか? - -```text -リスクは以下の通りです: - -- 生命の喪失 -- ビジネスの喪失 -- 評判の喪失 -- 顧客の喪失 -- 従業員の喪失 -``` - -ここで、LLM が正しいかどうかを確認するため、最初のリスクについて詳しく説明させ、それが上記の答えと一致するか確認します。 - -> プロンプト: パンデミックにおいて、最も大きなリスクは何でしょうか?また、その理由は何ですか? - -```text -最も大きなリスクは生命の喪失で、それは最も重要な守るべきものです。 -``` - -> パンデミックにおけるリスクの中で、最も大きな 2 つのリスクは何だと思いますか? - -```text -最も大きな2つのリスクは、生命の喪失とビジネスの喪失です。 -``` - -ここで、LLM  は一貫性を保ち、「生命」と「ビジネス」を最大の 2 つのリスクとして挙げています。これにより、次のステップに進み、かなりの自信を持てます。ただし、LLM  を盲目的に信頼するのではなく、常にその出力を検証するのが重要です。 - -## Vary your output - -LLM は本質的に非確実な性質を持っているため、同じプロンプトを実行しても結果は毎回異なります。例えば、以下のプロンプトを試してみてください。 - -> "Python Web API のコードを生成してください" - -```python -# 必要なモジュールをインポートする -import flask -from flask import request, jsonify - -# Flaskアプリを作成する -app = flask.Flask(__name__) - -# APIのルートを作成する -@app.route('/api', methods=['GET']) -def api(): - # リクエストからデータを取得する - data = request.args - - # データを処理する - result = process_data(data) - - # 結果をJSONとして返す - return jsonify(result) - -# データを処理する関数 -def process_data(data): - # データを何かしら処理する - result = data + 1 - - # 結果を返す - return result - -# アプリを実行する -if __name__ == '__main__': - app.run() -``` - -同じプロンプトを再度実行すると、少し異なる結果が出力されます。 - -```python -# 必要なパッケージをインポートする -import flask -from flask import request, jsonify - -# Flaskアプリケーションを作成する -app = flask.Flask(__name__) -app.config["DEBUG"] = True - -# 本のリストを作成する -books = [ - {'id': 0, - 'title': 'A Fire Upon the Deep', - 'author': 'ヴァーナー・ヴィンジ', - 'first_sentence': 'コールドスリープ自体は夢がない。', - 'year_published': '1992'}, - {'id': 1, - 'title': 'The Ones Who Walk Away From Omelas', - 'author': 'アーシュラ・K・ル=グウィン', - 'first_sentence': '鐘の騒音がツバメを舞い上がらせ、夏の祭りが海に面した明るい塔の街オメラスにやってきた。', - 'published': '1973'}, - {'id': 2, - 'title': 'Dhalgren', - 'author': 'サミュエル・R・ディレイニ', - 'first_sentence': '秋の街に傷をつけるために', - 'published': '1975'} -] - -# APIのエンドポイントを作成する -@app.route('/', methods=['GET']) -def home(): - return '''

Books API

-

A prototype API for retrieving books.

''' - -# すべての本を返すエンドポイントを作成する -@app.route('/api/v1/resources/books/all', methods=['GET']) -def api_all(): - return jsonify(books) - -# 単一の本を返すエンドポイントを作成する -@app.route('/api/v1/resources/books', methods=['GET']) -def api_id(): - # IDがURLの一部として提供されたか確認する - # IDが提供された場合は、それを変数に割り当てる - # IDが提供されていない場合は、エラーを表示する - if 'id' in request.args: - id = int(request.args['id']) - else: - return "Error: No id field provided. Please specify an id." - - # 結果のための空のリストを作成する - results = [] - - # データをループして、リクエストされたIDに一致する結果を探す - # IDは一意ですが、他のフィールドは多数の結果を返す可能性があります - for book in books: - if book['id'] == id: - results.append(book) - - # Flaskのjsonify関数を使用して、Pythonの辞書のリストをJSON形式に変換する - return jsonify(results) - -app.run() -``` - -> では、このような出力のバリエーションは問題なのでしょうか? - -それは、皆様が何を実現したいかによります。特定の確実な回答を求めている場合、それは問題となります。しかし、「地理に関する任意の 3 つの質問を生成する」のように、出力のバリエーションに対して柔軟であれば問題ではありません。 - -### 温度を使用して出力を変化させる - -出力をより予測可能、つまりより決定論的(確実)に制限したいと考えた場合、どのようにすればよいでしょうか? - -Temperature (温度) パラメータは 0 から 1 までの範囲で値を持っており、0 が最も決定的で、1 が最も多様性があります。デフォルト値は 0.7 です。温度を 0.1 に設定し、同じプロンプトを 2 回実行してみると以下のような結果が得られます。 - -> "Python Web API のコード を作成してください" - -```python -#import necessary libraries -import flask -from flask import request, jsonify - -#create an instance of the Flask class -app = flask.Flask(__name__) - -#create an endpoint for the API -@app.route('/api/v1/endpoint', methods=['GET']) -def api_endpoint(): - #get the request data - data = request.get_json() - - #process the data - result = process_data(data) - - #return the result - return jsonify(result) - -#function to process the data -def process_data(data): - #process the data - result = {'result': 'success'} - - #return the result - return result - -#run the Flask app -if __name__ == '__main__': - app.run() -``` - -プロンプトを再度実行すると、次の結果が得られます。 - -```python -#import necessary libraries -import flask -from flask import request, jsonify - -#create a Flask app -app = flask.Flask(__name__) - -#create a route for the API -@app.route('/api', methods=['GET']) -def api_call(): - #get the data from the request - data = request.get_json() - - #process the data - result = process_data(data) - - #return the result - return jsonify(result) - -#define the process_data function -def process_data(data): - #do something with the data - result = data + 1 - - #return the result - return result - -#run the app -if __name__ == '__main__': - app.run() -``` - -これら 2 つの出力結果はわずかな違いしかありません。今度は逆に、温度を 0.9 に設定してみましょう。 - -```python -# Import necessary libraries -import flask -from flask import request, jsonify - -# Create a Flask app -app = flask.Flask(__name__) - -# Create a route for the API -@app.route('/api', methods=['GET']) -def api_call(): - # Get the data from the request - data = request.args - - # Process the data - result = process_data(data) - - # Return the result - return jsonify(result) - -# Function to process the data -def process_data(data): - # Do something with the data - result = data + 1 - - # Return the result - return result - -# Run the app -if __name__ == '__main__': - app.run() -``` - -温度パラメータの値として 0.9 で 2 回目の実行: - -```python -import flask -from flask import request, jsonify - -# create the Flask app -app = flask.Flask(__name__) -app.config['DEBUG'] = True - -# create some test data -books = [ - {'id': 0, 'title': 'A Fire Upon The Deep', 'author': 'Vernor Vinge', 'first_sentence': 'The coldsleep itself was dreamless.', 'year_published': '1992'}, - {'id': 1, 'title': 'The Ones Who Walk Away From Omelas', 'author': 'Ursula K. Le Guin', 'first_sentence': 'With a clamor of bells that set the swallows soaring, the Festival of Summer came to the city Omelas, bright-towered by the sea.', 'published': '1973'}, - {'id': 2, 'title': 'Dhalgren', 'author': 'Samuel R. Delany', 'first_sentence': 'to wound the autumnal city.', 'published': '1975'} -] - -# create an endpoint -@app.route('/', methods=['GET']) -def home(): - return '''

Welcome to our book API!

''' - -@app.route('/api/v1/resources/books -``` - -ご覧いただいたように、結果は非常に多様(違う内容)になります。 - -> なお、出力を変化させるために変更できるパラメータは他にもあります。例えば、top-k, top-p, repetition penalty, length penalty, diversity penalty などですが、これらはこのレッスンでは取り扱いません。 - -## おすすめの方法 - -皆様が目的の結果を得るためには、様々な方法をお試しできます。プロンプトを利用する頻度が増えるほど、ご自身専用のスタイルを身に付けられるでしょう。 - -これまでに紹介したテクニックに加えて、LLM を活用する際におすすめの方法がいくつかあります。 - -以下に、そのおすすめの方法をいくつか紹介します。 - -- **コンテキストを明確にする**:コンテキスト(文脈)は重要で、ドメインやトピックなど、具体的に指定するほど良い結果が得られます。 -- **出力を制限する**:特定の項目数や特定の長さが必要な場合は、それを明示的に指定しましょう。 -- **「何を」、「どうするか」を明確にする**:例えば、「Python の Web API を作成し、商品と顧客を設定し、それを 3 つのファイルに分けてください」といった、具体的な指示を出すようにしてください -- **テンプレートを活用する**:自社データをプロンプトに反映させたい場合も多いと思います。その際に、テンプレートを活用しましょう。テンプレートには、実際のデータに置き換えられる変数を設定できます。 -- **正確に記述する**:スペル・ミスがあっても LLM は正しい回答を提供してくれるかもしれませんが、スペルが正確であれば、より良い回答が得られます。 - -## 課題 - -Flask を使用して単純な API を構築する方法を示す Python のコードを次に示します。 - -```python -from flask import Flask, request - -app = Flask(__name__) - -@app.route('/') -def hello(): - name = request.args.get('name', 'World') - return f'Hello, {name}!' - -if __name__ == '__main__': - app.run() -``` - -上記のコードを、GitHub Copilot や ChatGPT などの AI アシスタントを使用し、「self-refine (自己調整)」の手法を適用してコードを改善してください。 - -## 解決 - -コードに対して適切なプロンプトを追加し、課題の解決を試みてください。 - -> [!TIP] -> プロンプトの改善を求める際、対象となる改善項目を制限すると効果が高まります。また、アーキテクチャ、パフォーマンス、セキュリティといった特定の観点から改善を求めるアプローチも有効です。 - -[Solution](../../python/aoai-solution.py?WT.mc_id=academic-105485-koreyst) - -## 知識チェック - -なぜ、chain-of-thought (思考の連鎖) プロンプトを使用するのでしょうか? 正解を 1 つ選択してください。 - -1. LLM に問題の解決方法を教える。 -1. LLM にコード内のエラーを見つけるように教える -1. LLM にさまざまな解決策を考えるように指示する - -答え:1:chain-of-thought (思考の連鎖) プロンプトは、LLM に回答を導き出すための一連の処理段階と、類似問題とその解決方法を提供し、問題解決方法を示します。 - -## 🚀 チャレンジ - -課題では、self-refine (自己改善) の手法を使用しました。皆様が実際に実装したプログラムを取り上げて、それに対してどのように改善したいか考えてみてください。そして、その改善案を self-refine (自己改善)の手法を使って実際に適用してみましょう。結果は良くなりましたか?悪くなりましたか?どう思われますか? - -## お疲れ様でした!学習を続ける - -このレッスン修了後、[生成 AI 学習コレクション](https://aka.ms/genai-collection?WT.mc_id=academic-105485-yoterada) をチェックして、Generative AI の知識をレベルアップさせましょう。 - -レッスン 6 では、プロンプト エンジニアリングの知識を応用して[テキスト生成アプリケーションの構築](../../../06-text-generation-apps/translations/ja-jp/README.md?WT.mc_id=academic-105485-yoterada)を行います。 diff --git a/05-advanced-prompts/translations/ko/README.md b/05-advanced-prompts/translations/ko/README.md deleted file mode 100644 index 715b53b448..0000000000 --- a/05-advanced-prompts/translations/ko/README.md +++ /dev/null @@ -1,622 +0,0 @@ -# 고급 프롬프트 생성 - -[![Creating Advanced Prompts](../../images/05-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson5-gh?WT.mc_id=academic-105485-koreyst) - -이전 장에서 배운 내용을 간단히 되짚어보겠습니다: - -> 프롬프트 엔지니어링은 **모델이 더 관련성 있는 응답을 할 수 있도록** 더 유용한 지시사항이나 문맥을 제공하여 모델을 안내하는 과정입니다. - -프롬프트 작성에는 두 가지 단계가 있습니다. 첫 번째는 관련 문맥을 제공하여 프롬프트를 구성하는 것이고, 두 번째는 프롬프트를 점진적으로 개선하는 _최적화_ 입니다. - -이 시점에서 우리는 프롬프트를 작성하는 방법에 대해 기본적인 이해를 갖고 있지만, 더 깊게 파고들어야 합니다. 이 장에서는 다양한 프롬프트를 시도해보고, 왜 한 프롬프트가 다른 프롬프트보다 더 좋은지 이해하는 방법을 배우게 될 것입니다. 모든 LLM에 적용할 수 있는 몇 가지 기본 기술을 사용하여 프롬프트를 구성하는 방법을 배우게 될 것입니다. - -## 소개 - -이 장에서는 다음과 같은 주제를 다룰 것입니다: - -- 다양한 기법을 적용하여 프롬프트 엔지니어링에 대한 지식을 확장합니다. -- 출력을 다양하게 하도록 프롬프트를 구성합니다. - -## 학습 목표 - -이 레슨을 완료한 후에는 다음을 할 수 있게 될 것입니다: - -- 프롬프트 엔지니어링 기법을 적용하여 프롬프트의 결과를 개선합니다. -- 다양하거나 결정론적인 프롬프트를 수행합니다. - -## 프롬프트 엔지니어링 - -프롬프트 엔지니어링은 원하는 결과를 얻을 수 있는 프롬프트를 생성하는 과정입니다. 텍스트 프롬프트를 작성하는 것 이상이 있습니다. 프롬프트 엔지니어링은 엔지니어링 학문이 아니라 원하는 결과를 얻기 위해 적용할 수 있는 기술의 집합입니다. - -### 프롬프트의 예 - -> 지리에 대해 10개의 질문을 생성하세요. - -이 프롬프트에서 여러 가지 다른 프롬프트 기법을 적용하고 있습니다. - -자세히 살펴보겠습니다. - -- **문맥**, "지리"에 대한 내용을 지정합니다. -- **출력 제한**, 10개 이상의 질문을 원하지 않습니다. - -### 단순한 프롬프트의 한계 - -원하는 결과를 얻을 수도 있고, 얻지 못할 수도 있습니다. 질문은 생성되지만, 지리는 큰 주제이며 원하는 내용을 얻지 못할 수 있습니다. 이는 다음과 같은 이유로 인해 발생할 수 있습니다: - -- **큰 주제**, 국가, 수도, 강 등에 대한 질문인지 알 수 없습니다. -- **형식**, 질문을 특정한 방식으로 포맷을 지정하고 싶은 경우 어떻게 해야 할까요? - -프롬프트를 작성할 때 고려해야 할 사항이 많다는 것을 알 수 있습니다. - -지금까지 간단한 프롬프트 예제를 살펴보았지만, 생성형 AI는 다양한 역할과 산업에서 사람들을 돕기 위해 더 많은 것을 할 수 있습니다. 다음에는 몇 가지 기본 기술을 살펴보겠습니다. - -### 프롬프트 기법 - -먼저, 프롬프트는 LLM의 _비롯된_ 특성이라는 점을 이해해야 합니다. 이는 모델에 내장된 기능이 아니라 모델을 사용하면서 우리가 발견하는 것입니다. - -LLM을 프롬프트하기 위해 몇 가지 기본적인 기법을 사용할 수 있습니다. 이제 그것들을 살펴보겠습니다. - -- **퓨 샷 프롬프트 (Few-shot prompting)**, 이것은 가장 기본적인 프롬프트 형태입니다. 몇 가지 예제와 함께 한 개의 프롬프트로 구성됩니다. -- **생각의 사슬 (Chain-of-thought)**, 이 유형의 프롬프트는 LLM에게 문제를 단계별로 해결하는 방법을 알려줍니다. -- **생성된 지식 (Generated knowledge)**, 프롬프트의 응답을 개선하기 위해 프롬프트 외에도 생성된 사실이나 지식을 제공할 수 있습니다. -- **작은 것부터 크게 (Least to most)**, 생각의 사슬와 마찬가지로, 이 기법은 문제를 일련의 단계로 분해하고 이 단계들을 순서대로 수행하도록 요청하는 것입니다. -- **자기 개선 (Self-refine)**, 이 기법은 LLM의 출력을 비판하고 개선하도록 요청하는 것입니다. -- **Maieutic prompting**, 여기서 원하는 것은 LLM의 답변이 정확한지 확인하고, 답변의 다양한 부분을 설명하도록 요청하는 것입니다. 이는 Self-refine의 한 형태입니다. - -### 퓨 샷 프롬프트 (Few-shot prompting) - -이 프롬프트 스타일은 매우 간단하며, 단일 프롬프트와 몇 가지 예제로 구성될 수 있습니다. 이 기법은 LLM에 대해 배우기 시작하는 단계에서 사용할 것입니다. 다음은 예시입니다: - -- 프롬프트: "대수학이란 무엇인가요?" -- 답변: "대수학은 수학 기호와 이러한 기호를 조작하는 규칙을 연구하는 수학의 한 분야입니다." - -### 생각의 사슬 (Chain-of-thought) - -Chain-of-thought는 LLM을 일련의 단계를 거쳐 가르치는 매우 흥미로운 기술입니다. 이 아이디어는 LLM에게 어떻게 해야 하는지 이해시키는 방법입니다. 다음 예시를 고려해보세요. Chain-of-thought를 사용하는 경우와 그렇지 않은 경우를 비교해보세요: - -- 프롬프트: "앨리스는 사과를 5개 가지고 있습니다. 3개의 사과를 던지고, 2개를 밥에게 주었고, 밥이 하나를 다시 돌려줬을 때, 앨리스는 몇 개의 사과를 가지고 있을까요?" -- 답변: 5 - -LLM은 5라고 답했지만, 이는 잘못된 답입니다. 정답은 계산에 따라 (5 - 3 - 2 + 1 = 1) 1개의 사과입니다. - -그렇다면 어떻게 LLM에게 올바르게 계산하는 방법을 가르칠 수 있을까요? - -Chain-of-thought를 시도해보겠습니다. Chain-of-thought를 적용하는 방법은 다음과 같습니다: - -1. LLM에게 비슷한 예제를 제공합니다. -2. 계산 방법과 올바르게 계산하는 방법을 보여줍니다. -3. 원래의 프롬프트를 제공합니다. - -다음과 같이 해보겠습니다: - -- 프롬프트: "리사는 사과를 7개 가지고 있습니다. 1개의 사과를 던지고, 4개의 사과를 바트에게 주고, 바트가 하나를 다시 돌려줍니다: - 7 - 1 = 6 - 6 - 4 = 2 - 2 + 1 = 3 - 앨리스는 사과를 5개 가지고 있습니다. 3개의 사과를 던지고, 2개를 밥에게 주고, 밥이 하나를 다시 돌려준다면, 앨리스는 몇 개의 사과를 가지고 있을까요?" -- 답변: 1 - -비슷한 예제, 계산 방법, 그리고 원래의 프롬프트를 포함한 긴 프롬프트를 작성하고, 올바른 답인 1에 도달합니다. - -Chain-of-thought는 매우 강력한 기술임을 알 수 있습니다. - -### 생성된 지식 (Generated knowledge) - -회사의 데이터를 사용하여 프롬프트를 구성하고 싶을 때가 많습니다. 프롬프트의 일부는 회사에서 가져온 내용이어야 하고, 다른 일부는 실제로 관심 있는 프롬프트여야 합니다. - -예를 들어, 보험업을 하는 경우 프롬프트는 다음과 같이 구성될 수 있습니다: - - ```text - {{company}}: {{company_name}} - {{products}}: - {{products_list}} - 다음 예산과 요구 사항에 따라 보험을 제안해주세요: - 예산: {{budget}} - 요구 사항: {{requirements}} - ``` - -위에서는 템플릿을 사용하여 프롬프트가 구성되는 방법을 볼 수 있습니다. 템플릿에는 `{{변수}}`로 표시된 여러 변수가 있으며, 이 변수들은 회사 API에서 실제 값으로 대체될 것입니다. - -회사의 내용으로 변수가 대체된 프롬프트 예시를 살펴보겠습니다: - - ```text - 보험 회사: ACME Insurance - 보험 상품 (월 별 비용): - - 자동차, 저렴함, 500 USD - - 자동차, 비쌈, 1100 USD - - 주택, 저렴함, 600 USD - - 주택, 비쌈, 1200 USD - - 생명, 저렴함, 100 USD - - 다음 예산과 요구 사항에 따라 보험을 제안해주세요: - 예산: $1000 - 요구 사항: 자동차, 주택 - ``` - -이 프롬프트를 LLM에 적용하면 다음과 같은 응답이 생성됩니다: - - ```output - , and Life insurance - - 예산과 요구 사항에 따라 ACME 보험으로부터 다음과 같은 보험 패키지를 제안합니다: - - 자동차, 저렴함, 500 USD - - 주택, 저렴함, 600 USD - - 생명, 저렴함, 100 USD - 총 비용: $1,200 USD - ``` - -보시다시피, 이는 생명 보험도 제안하는데, 그렇게 되면 안 됩니다. 이 결과는 우리가 원하는 결과를 얻기 위해 프롬프트를 최적화해야 함을 나타냅니다. _시행착오_ 를 거쳐 다음과 같은 프롬프트로 도달합니다: - - ```text - 보험 회사: ACME Insurance - 보험 상품 (월 별 비용): - - 유형: 자동차, 저렴함, 비용: 500 USD - - 유형: 자동차, 비쌈, 비용: 1100 USD - - 유형: 주택, 저렴함, 비용: 600 USD - - 유형: 주택, 비쌈, 비용: 1200 USD - - 유형: 생명, 저렴함, 비용: 100 USD - - 다음 비용과 요구 사항에 따라 보험을 제안해주세요: - 예산: $1000, 자동차, 주택 유형으로 선택 범위 제한 - ``` - -_유형_ 과 _비용_ 를 추가하고 _제한_ 키워드를 사용하는 것이 어떻게 우리가 원하는 바를 LLM에게 이해시키는 데 도움이 되는지 주목하세요. - -이제 우리는 다음과 같은 응답을 얻습니다: - - ```output - 예산과 요구 사항에 따라, 월 별 500 USD인 자동차, 저렴한 보험을 제안합니다. - ``` - -이 예시의 목적은 _Generated knowledge_ 과 같은 기본적인 기술을 사용하더라도 대부분의 경우 원하는 결과를 얻기 위해 프롬프트를 최적화해야 한다는 것을 보여주는 것이었습니다. - -### 작은 것부터 크게 (Least to most) - -Least-to-most 프롬프팅은 큰 문제를 작은 하위 문제로 분할하여 해결 방법을 안내하는 것입니다. 이렇게 하면 LLM에게 큰 문제를 "정복"하는 방법을 안내할 수 있습니다. 데이터 과학의 좋은 예로, LLM에게 다음과 같이 문제를 분할하도록 요청할 수 있습니다: - -> 프롬프트: 5단계로 데이터 과학을 수행하는 방법은 무엇인가요? - -AI 어시스턴트의 답변: - -1. 데이터 수집 -2. 데이터 정제 -3. 데이터 분석 -4. 데이터 시각화 -5. 데이터 프레젠테이션 - -### 자기 개선, 결과 비판 (Self-refine, critique the results) - -생성 모델과 LLM을 사용할 때, 출력에 절대적으로 신뢰할 수 없습니다. 반드시 검증해야 합니다. LLM은 단지 다음으로 가장 가능성이 높은 답변을 제시할 뿐이지, 정확한 답변을 제공하는 것은 아닙니다. 따라서, LLM에게 자기 비판을 요청하여 자기 개선 기법에 도달할 수 있습니다. - -이 기법은 다음과 같은 단계를 따릅니다: - -1. LLM에게 문제 해결을 요청하는 초기 프롬프트 -2. LLM의 답변 -3. 답변을 비판하고 AI에게 개선을 요청 -4. LLM이 비판을 고려하여 다시 답변하고 제안한 해결책을 제시 - -이 과정을 원하는 만큼 반복할 수 있습니다. - -이 기술을 사용한 예시는 다음과 같습니다: - -> 프롬프트: "products와 customers라는 라우트를 가진 Python 웹 API를 생성하세요" - -AI 답변: - - ```python - import flask - app = Flask(__name__) - - @app.route('/products') - def products(): - return 'Products' - - @app.route('/customers') - def customers(): - return 'Customers' - ``` - -> 프롬프트: 위의 코드를 개선할 세 가지 제안을 해주세요. - -AI 답변: - - ```text - 물론, 다음은 코드를 개선하기 위한 세 가지 제안입니다: - - 올바른 모듈을 가져오세요: 첫 번째 줄은 flask 대신에 Flask를 가져와야 합니다. 올바른 import 문은 from flask import Flask여야 합니다. - - main 함수를 추가하세요: 파일이 실행될 때 애플리케이션을 실행하기 위해 if __name__ == '__main__': 블록을 파일의 끝에 추가하세요. - - f-strings를 사용하세요: route 함수에서 반환문을 포맷팅하기 위해 f-strings를 사용하세요. 예를 들어, return 'Products'를 return f'This is the {request.path} page'로 변경할 수 있습니다. - ``` - - ```python - from flask import Flask, request - - app = Flask(__name__) - - @app.route('/products') - def products(): - return f'This is the {request.path} page' - - @app.route('/customers') - def customers(): - return f'This is the {request.path} page' - - if __name__ == '__main__': - app.run() - ``` - -위의 AI 응답은 첫 번째 답변을 비판함으로써 첫 번째 제안된 코드를 개선하고 있음을 확인할 수 있습니다. - -### Maieutic prompting - -Maieutic prompting은 자기 개선 (Self-refine)과 유사한 기술이지만, LLM에게 스스로를 설명하도록 요청하는 것입니다. 목표는 LLM의 출력에서 일관성을 줄여 올바른 답변에 도달하는 것입니다. 따라서 다음과 같은 워크플로우를 따릅니다: - -1. LLM에게 질문에 대한 답변을 요청합니다. -2. 답변의 각 부분에 대해 LLM에게 더 자세히 설명하도록 요청합니다. -3. 일관성이 없는 부분이 있다면, 일관성이 없는 부분을 제외합니다. - -2와 3을 반복하여 모든 부분을 확인하고 답변에 만족할 때까지 진행합니다. - -다음은 예시 프롬프트입니다: - -> 프롬프트: 5단계로 팬데믹을 완화하기 위한 위기 대응 계획을 어떻게 작성할 수 있을까요? - -LLM 답변: - - ```text - 1. 위험 요소 식별 - 1. 이해 관계자 식별 - 1. 자원 식별 - 1. 조치 사항 식별 - 1. 의사 소통 채널 식별 - ``` - -5단계가 식별되었지만, 이것이 맞는지 확인할 수 있을까요? 각 단계를 설명하도록 LLM에게 요청해봅시다: - -> 프롬프트: 첫 번째 단계를 더 자세히 설명해주세요. 팬데믹에서의 위험은 무엇이며 자세히 설명해주세요? - - ```text - 다음은 위험 요소입니다: - - - 생명의 손실 - - 사업의 손실 - - 평판의 손실 - - 고객의 손실 - - 직원의 손실 - ``` - -이 시점에서, 우리는 LLM이 올바른지 확인하고자 첫 번째 위험을 더 자세히 설명하도록 요청하고, 위의 답변과 일관성이 있는지 확인합니다: - -> 프롬프트: 팬데믹에서 가장 큰 위험은 무엇이며 그 이유는 무엇인가요? - - ```text - 가장 큰 위험은 생명의 손실입니다. 왜냐하면 가장 중요한 것을 보호해야 하기 때문입니다. - ``` - -> 팬데믹에서 가장 큰 위험은 무엇인가요? - - ```text - 팬데믹에서 가장 큰 위험은 생명의 손실과 사업의 손실입니다. - ``` - -이 시점에서, LLM은 일관성이 있으며 "생명"과 "사업"을 최상위 두 가지 위험으로 언급합니다. 이제 다음 단계로 진행하고 상당히 확신을 갖을 수 있습니다. 그러나 LLM을 맹목적으로 신뢰해서는 안 되며, 항상 출력을 확인해야 합니다. - -## 출력 다양성 조절하기 - -LLM은 본질적으로 결정론적이지 않으므로, 동일한 프롬프트를 실행할 때마다 다른 결과를 얻게 됩니다. 예를 들어 다음 프롬프트를 시도해보세요: - -> "파이썬 웹 API를 위한 코드 생성" - - ```python - # 필요한 라이브러리 가져오기 - import flask - from flask import request, jsonify - - # Flask 앱 인스턴스 생성 - app = flask.Flask(__name__) - - # API를 위한 엔드포인트 생성 - @app.route('/api', methods=['GET']) - def api(): - # 요청 데이터 가져오기 - data = request.args - - # 데이터 처리 - result = process_data(data) - - # 결과를 JSON 형식으로 반환 - return jsonify(result) - - # 데이터 처리 함수 - def process_data(data): - # 데이터 처리 수행 - result = data + 1 - - # 결과 반환 - return result - - # 앱 실행 - if __name__ == '__main__': - app.run() - - ``` - -동일한 프롬프트를 다시 실행하면 약간 다른 응답이 생성됩니다: - - ```text - # 필요한 패키지 가져오기 - import flask - from flask import request, jsonify - - # Flask 앱 생성 - app = flask.Flask(__name__) - app.config["DEBUG"] = True - - # 책 목록 생성 - books = [ - {'id': 0, - 'title': 'A Fire Upon the Deep', - 'author': 'Vernor Vinge', - 'first_sentence': 'The coldsleep itself was dreamless.', - 'year_published': '1992'}, - {'id': 1, - 'title': 'The Ones Who Walk Away From Omelas', - 'author': 'Ursula K. Le Guin', - 'first_sentence': 'With a clamor of bells that set the swallows soaring, the Festival of Summer came to the city Omelas, bright-towered by the sea.', - 'published': '1973'}, - {'id': 2, - 'title': 'Dhalgren', - 'author': 'Samuel R. Delany', - 'first_sentence': 'to wound the autumnal city.', - 'published': '1975'} - ] - - # API를 위한 엔드포인트 생성 - @app.route('/', methods=['GET']) - def home(): - return '''

Books API

-

책을 검색하기 위한 프로토 타입 API입니다.

''' - - # 모든 책 반환을 위한 엔드포인트 생성 - @app.route('/api/v1/resources/books/all', methods=['GET']) - def api_all(): - return jsonify(books) - - # 단일 책 반환을 위한 엔드포인트 생성 - @app.route('/api/v1/resources/books', methods=['GET']) - def api_id(): - # URL의 일부로 ID가 제공되었는지 확인 - # ID가 제공되면 변수에 할당 - # ID가 제공되지 않으면 오류 메시지 표시 - if 'id' in request.args: - id = int(request.args['id']) - else: - return "오류: ID 필드가 제공되지 않았습니다. ID를 지정해주세요." - - # 결과를 저장할 빈 리스트 생성 - results = [] - - # 데이터를 반복하며 요청된 ID와 일치하는 결과 찾기 - # ID는 고유하지만 다른 필드는 여러 결과를 반환할 수 있음 - for book in books: - if book['id'] == id: - results.append(book) - - # Flask의 jsonify 함수를 사용하여 Python 사전의 리스트를 JSON 형식으로 변환 - return jsonify(results) - - app.run() - ``` - -> 그렇다면 출력 다양성은 문제가 될까요? - -그것은 당신이 무엇을 하려는지에 달려있습니다. 특정한 응답을 원한다면 문제가 될 수 있습니다. "지리학에 관한 3개의 질문을 생성하세요"와 같이 다양한 출력을 원한다면 문제가 되지 않습니다. - -### temperature를 사용하여 출력 다양성 조절하기 - -우리는 출력을 더 예측 가능하고 결정적으로 제한하고 싶다고 결정했습니다. 그렇다면 어떻게 해야 할까요? - -temperature는 0과 1 사이의 값으로, 0은 가장 결정적이고 1은 가장 다양한 출력을 생성합니다. 기본값은 0.7입니다. 같은 프롬프트를 temperature를 0.1로 설정하여 두 번 실행해 보겠습니다: - -> "파이썬 웹 API를 생성하는 코드를 생성하세요" - - ```python - # 필요한 라이브러리 가져오기 - import flask - from flask import request, jsonify - - # Flask 앱 생성 - app = flask.Flask(__name__) - - # API를 위한 엔드포인트 생성 - @app.route('/api/v1/endpoint', methods=['GET']) - def api_endpoint(): - # 요청 데이터 가져오기 - data = request.get_json() - - # 데이터 처리 - result = process_data(data) - - # 결과 반환 - return jsonify(result) - - # 데이터 처리 함수 정의 - def process_data(data): - # 데이터 처리 - result = {'result': 'success'} - - # 결과 반환 - return result - - # Flask 앱 실행 - if __name__ == '__main__': - app.run() - - ``` - -프롬프트를 다시 실행하면 다음과 같은 결과가 나옵니다: - - ```python - # 필요한 라이브러리 가져오기 - import flask - from flask import request, jsonify - - # Flask 앱 생성 - app = flask.Flask(__name__) - - # API를 위한 엔드포인트 생성 - @app.route('/api', methods=['GET']) - def api_call(): - # 요청 데이터 가져오기 - data = request.get_json() - - # 데이터 처리 - result = process_data(data) - - # 결과 반환 - return jsonify(result) - - # 데이터 처리 함수 정의 - def process_data(data): - # 데이터 처리 - result = data + 1 - - # 결과 반환 - return result - - # Flask 앱 실행 - if __name__ == '__main__': - app.run() - - ``` - -이 두 출력 사이에는 아주 작은 차이만 있습니다. 이번에는 반대로 temperature를 0.9로 설정해 보겠습니다: - - ```python - # 필요한 라이브러리 가져오기 - import flask - from flask import request, jsonify - - # Flask 앱 생성 - app = flask.Flask(__name__) - - # API를 위한 엔드포인트 생성 - @app.route('/api', methods=['GET']) - def api_call(): - # 요청 데이터 가져오기 - data = request.args - - # 데이터 처리 - result = process_data(data) - - # 결과 반환 - return jsonify(result) - - # 데이터 처리 함수 정의 - def process_data(data): - # 데이터 처리 - result = data + 1 - - # 결과 반환 - return result - - # Flask 앱 실행 - if __name__ == '__main__': - app.run() - - ``` - -그리고 temperature 값을 0.9로 설정한 두 번째 시도: - - ```python - import flask - from flask import request, jsonify - - # Flask 앱 생성 - app = flask.Flask(__name__) - app.config['DEBUG'] = True - - # 테스트 데이터 생성 - books = [ - {'id': 0, 'title': 'A Fire Upon The Deep', 'author': 'Vernor Vinge', 'first_sentence': 'The coldsleep itself was dreamless.', 'year_published': '1992'}, - {'id': 1, 'title': 'The Ones Who Walk Away From Omelas', 'author': 'Ursula K. Le Guin', 'first_sentence': 'With a clamor of bells that set the swallows soaring, the Festival of Summer came to the city Omelas, bright-towered by the sea.', 'published': '1973'}, - {'id': 2, 'title': 'Dhalgren', 'author': 'Samuel R. Delany', 'first_sentence': 'to wound the autumnal city.', 'published': '1975'} - ] - - # 엔드포인트 생성 - @app.route('/', methods=['GET']) - def home(): - return '''

도서 API에 오신 것을 환영합니다!

''' - - @app.route('/api/v1/resources/books - - ``` - -보시다시피, 결과는 매우 다양합니다. - -> 참고로, 출력 다양성을 변화시키기 위해 변경할 수 있는 다른 매개변수들도 있습니다. 예를 들어, top-k, top-p, 반복 패널티, 길이 패널티, 다양성 패널티 등이 있지만 이러한 내용은 이 커리큘럼의 범위를 벗어납니다. - -## 모범 사례 - -원하는 결과를 얻기 위해 적용할 수 있는 다양한 사례들이 있습니다. 프롬프팅을 더 많이 사용하면서 자신만의 스타일을 찾아갈 것입니다. - -우리가 다룬 기술들 외에도, LLM을 프롬프팅할 때 고려해야 할 좋은 사례들이 있습니다. - -다음은 고려해야 할 좋은 사례 몇 가지입니다: - -- **문맥 명시하기**. 문맥은 중요합니다. 도메인, 주제 등과 같이 가능한 한 구체적으로 명시할수록 좋습니다. -- 출력 제한하기. 특정 개수의 항목이나 특정 길이를 원한다면 명시하세요. -- **무엇과 어떻게를 모두 명시하기**. 원하는 것과 원하는 방식을 모두 언급해야 합니다. 예를 들어 "3개의 파일로 나누어 제품과 고객을 위한 Python 웹 API를 생성하세요"와 같이 말이죠. -- **템플릿 사용하기**. 종종 회사의 데이터로 프롬프트를 보강하고 싶을 때가 있습니다. 이를 위해 템플릿을 사용하세요. 템플릿에는 실제 데이터로 대체할 변수가 포함될 수 있습니다. -- **맞춤법 확인하기**. LLM은 올바른 응답을 제공할 수 있지만, 맞춤법을 올바르게 사용하면 더 좋은 응답을 받을 수 있습니다. - -## 과제 - -다음은 Flask를 사용하여 간단한 API를 구축하는 Python 코드입니다: - - ```python - from flask import Flask, request - - app = Flask(__name__) - - @app.route('/') - def hello(): - name = request.args.get('name', 'World') - return f'Hello, {name}!' - - if __name__ == '__main__': - app.run() - ``` - -GitHub Copilot이나 ChatGPT와 같은 AI 어시스턴트를 사용하여 "자기 개선 (self-refine)" 기법을 적용하여 코드를 개선해보세요. - -## 해답 - -코드에 적절한 프롬프트를 추가하여 과제를 해결하려고 시도해보세요. - -> [!TIP] -> 개선 사항을 요청하는 프롬프트를 작성하는 것이 좋습니다. 개선 사항의 수를 제한하는 것도 좋은 아이디어입니다. 또한 아키텍처, 성능, 보안 등 특정한 방식으로 개선을 요청할 수도 있습니다. - -[해답](../../python/aoai-solution.py?WT.mc_id=academic-105485-koreyst) - -## 지식 확인 - -왜 생각의 사슬 (chain-of-thought) 프롬프팅을 사용해야 할까요? 올바른 응답 1개와 잘못된 응답 2개를 보여주세요. - -1. A, 문제를 해결하는 방법을 LLM에게 가르치기 위해. -2. B, 코드에서 오류를 찾는 방법을 LLM에게 가르치기 위해. -3. C, 다양한 해결책을 생각해내기 위해 LLM에게 지시하기 위해. - -A: 1, 생각의 사슬 (chain-of-thought) 는 LLM에게 문제를 해결하는 방법을 보여주는 것으로, 일련의 단계와 유사한 문제 및 그들이 어떻게 해결되었는지를 제공합니다. - -## 🚀 도전과제 - -과제에서 자기 개선 (self-refine) 기법을 사용했습니다. 구축한 프로그램을 가져와서 적용할 개선 사항을 고려해보세요. 그리고 자기 개선 기법을 사용하여 제안된 변경 사항을 적용해보세요. 결과는 어떠셨나요, 더 좋아졌나요 아니면 더 나빠졌나요? - -## 잘 하셨습니다! 계속해서 학습하세요 - -이 레슨을 완료한 후 [Generative AI 학습 컬렉션](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst)을 확인하여 Generative AI 지식을 계속 향상시킬 수 있습니다! - -[6번 레슨](../../../06-text-generation-apps/translations/ko/README.md?WT.mc_id=academic-105485-koreyst)으로 이동하여 Prompt Engineering 지식을 적용하여 텍스트 생성 앱을 구축해보세요. diff --git a/05-advanced-prompts/translations/pl/README.md b/05-advanced-prompts/translations/pl/README.md deleted file mode 100644 index cd60613294..0000000000 --- a/05-advanced-prompts/translations/pl/README.md +++ /dev/null @@ -1,636 +0,0 @@ -# Tworzenie Zaawansowanych Promptów - -[![Tworzenie Zaawansowanych Promptów](../../images/05-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson5-gh?WT.mc_id=academic-105485-koreyst?WT.mc_id=academic-105485-koreyst) - -Przypomnijmy kilka wniosków z poprzedniego rozdziału: - -> Inżynieria promptów to proces, w którym **kierujemy model w stronę bardziej trafnych odpowiedzi** poprzez dostarczanie bardziej użytecznych instrukcji lub kontekstu. - -Istnieją też dwa kroki w tworzeniu promptów: konstruowanie promptu poprzez dostarczanie odpowiedniego kontekstu, oraz druga część - _optymalizacja_, czyli jak stopniowo ulepszać prompt. - -Na tym etapie mamy podstawowe zrozumienie, jak pisać prompty, ale musimy zagłębić się bardziej. W tym rozdziale przejdziesz od wypróbowywania różnych promptów do zrozumienia, dlaczego jeden prompt jest lepszy od drugiego. Nauczysz się konstruować prompty, stosując podstawowe techniki, które można zastosować do dowolnego LLM. - -## Wprowadzenie - -W tym rozdziale omówimy następujące tematy: - -- Rozszerzenie wiedzy o inżynierii promptów poprzez zastosowanie różnych technik do Twoich promptów. -- Konfigurowanie promptów w celu zróżnicowania wyników. - -## Cele nauki - -Po ukończeniu tej lekcji będziesz potrafić: - -- Stosować techniki inżynierii promptów, które poprawiają wyniki Twoich promptów. -- Wykonywać promptowanie, które jest zróżnicowane lub deterministyczne. - -## Inżynieria promptów - -Inżynieria promptów to proces tworzenia promptów, które przyniosą pożądany rezultat. Inżynieria promptów to więcej niż tylko pisanie tekstowego promptu. Inżynieria promptów nie jest dyscypliną inżynieryjną, to raczej zestaw technik, które można zastosować, aby uzyskać pożądany wynik. - -### Przykład promptu - -Weźmy podstawowy prompt, taki jak ten: - -> Wygeneruj 10 pytań dotyczących geografii. - -W tym prompcie stosujesz w rzeczywistości zestaw różnych technik promptowania. - -Rozłóżmy to na części. - -- **Kontekst**, określasz, że powinno to dotyczyć "geografii". -- **Ograniczenie wyników**, chcesz nie więcej niż 10 pytań. - -### Ograniczenia prostego promptowania - -Możesz otrzymać lub nie otrzymać pożądanego wyniku. Pytania zostaną wygenerowane, ale geografia to duży temat i możesz nie dostać tego, czego chcesz, z następujących powodów: - -- **Duży temat**, nie wiesz, czy będzie to o krajach, stolicach, rzekach i tak dalej. -- **Format**, co jeśli chciałeś, aby pytania były sformatowane w określony sposób? - -Jak widać, jest wiele do rozważenia przy tworzeniu promptów. - -Do tej pory widzieliśmy prosty przykład promptu, ale generatywna sztuczna inteligencja jest zdolna do znacznie więcej, aby pomóc ludziom w różnych rolach i branżach. Przyjrzyjmy się teraz kilku podstawowym technikom. - -### Techniki promptowania - -Najpierw musimy zrozumieć, że promptowanie jest _emergentną_ właściwością LLM, co oznacza, że nie jest to funkcja wbudowana w model, a raczej coś, co odkrywamy w trakcie korzystania z modelu. - -Istnieje kilka podstawowych technik, których możemy używać do promptowania LLM. Przyjrzyjmy się im. - -- **Promptowanie zero-shot**, to najbardziej podstawowa forma promptowania. Jest to pojedynczy prompt żądający odpowiedzi od LLM wyłącznie na podstawie jego danych treningowych. -- **Promptowanie few-shot**, ten rodzaj promptowania kieruje LLM poprzez dostarczenie 1 lub więcej przykładów, na których może bazować przy generowaniu odpowiedzi. -- **Chain-of-thought (łańcuch myślowy)**, ten rodzaj promptowania mówi LLM, jak rozbić problem na kroki. -- **Generated knowledge (wygenerowana wiedza)**, aby poprawić odpowiedź promptu, możesz dodatkowo dostarczyć wygenerowane fakty lub wiedzę do swojego promptu. -- **Least to most (od najmniejszego do największego)**, podobnie jak chain-of-thought, ta technika polega na rozbiciu problemu na serię kroków, a następnie prośbie o wykonanie tych kroków po kolei. -- **Self-refine (samodoskonalenie)**, ta technika polega na krytykowaniu wyników LLM, a następnie prośbie o ich ulepszenie. -- **Maieutic prompting (promptowanie majeutyczne)**. Chodzi tu o to, aby upewnić się, że odpowiedź LLM jest poprawna, prosząc o wyjaśnienie różnych części odpowiedzi. Jest to forma samodoskonalenia. - -### Promptowanie zero-shot - -Ten styl promptowania jest bardzo prosty, składa się z pojedynczego promptu. Ta technika to prawdopodobnie to, czego używasz, gdy zaczynasz uczyć się o LLM. Oto przykład: - -- Prompt: "Czym jest algebra?" -- Odpowiedź: "Algebra to gałąź matematyki, która bada symbole matematyczne i reguły manipulowania tymi symbolami." - -### Promptowanie few-shot - -Ten styl promptowania pomaga modelowi poprzez dostarczenie kilku przykładów wraz z prośbą. Składa się z pojedynczego promptu z dodatkowymi danymi specyficznymi dla zadania. Oto przykład: - -- Prompt: "Napisz wiersz w stylu Szekspira. Oto kilka przykładów sonetów szekspirowskich.: - Sonet 18: 'Shall I compare thee to a summer's day? Thou art more lovely and more temperate...' - Sonet 116: 'Let me not to the marriage of true minds Admit impediments. Love is not love Which alters when it alteration finds...' - Sonet 132: 'Thine eyes I love, and they, as pitying me, Knowing thy heart torment me with disdain,...' - Teraz napisz sonet o pięknie księżyca." -- Odpowiedź: "Upon the sky, the moon doth softly gleam, In silv'ry light that casts its gentle grace,..." - -Przykłady dostarczają LLM kontekstu, formatu lub stylu pożądanego wyniku. Pomagają modelowi zrozumieć konkretne zadanie i generować dokładniejsze i bardziej odpowiednie odpowiedzi. - -### Chain-of-thought (łańcuch myślowy) - -Chain-of-thought to bardzo interesująca technika, ponieważ polega na przeprowadzeniu LLM przez serię kroków. Idea polega na instruowaniu LLM w taki sposób, aby zrozumiał, jak coś zrobić. Rozważmy następujący przykład, z i bez chain-of-thought: - - - Prompt: "Alicja ma 5 jabłek, wyrzuca 3 jabłka, daje 2 Bobowi, a Bob oddaje jej jedno, ile jabłek ma Alicja?" - - Odpowiedź: 5 - -LLM odpowiada 5, co jest niepoprawne. Prawidłowa odpowiedź to 1 jabłko, biorąc pod uwagę obliczenie (5 -3 -2 + 1 = 1). - -Jak więc możemy nauczyć LLM, aby robił to poprawnie? - -Spróbujmy chain-of-thought. Zastosowanie chain-of-thought oznacza: - -1. Daj LLM podobny przykład. -1. Pokaż obliczenie i jak obliczyć to poprawnie. -1. Podaj oryginalny prompt. - -Oto jak: - -- Prompt: "Lisa ma 7 jabłek, wyrzuca 1 jabłko, daje 4 jabłka Bartowi, a Bart oddaje jej jedno: - 7 -1 = 6 - 6 -4 = 2 - 2 +1 = 3 - Alicja ma 5 jabłek, wyrzuca 3 jabłka, daje 2 Bobowi, a Bob oddaje jej jedno, ile jabłek ma Alicja?" - Odpowiedź: 1 - -Zauważ, jak piszemy znacznie dłuższe prompty z innym przykładem, obliczeniem, a następnie oryginalnym promptem i dochodzimy do poprawnej odpowiedzi 1. - -Jak widać, chain-of-thought to bardzo potężna technika. - -### Generated knowledge (wygenerowana wiedza) - -Często, gdy chcesz skonstruować prompt, chcesz to zrobić, używając własnych danych firmy. Chcesz, aby część promptu pochodziła z firmy, a druga część powinna być faktycznym promptem, którym jesteś zainteresowany. - -Na przykład, tak może wyglądać Twój prompt, jeśli działasz w branży ubezpieczeniowej: - -```text -{{company}}: {{company_name}} -{{products}}: -{{products_list}} -Proszę zaproponować ubezpieczenie przy następującym budżecie i wymaganiach: -Budżet: {{budget}} -Wymagania: {{requirements}} -``` - -Powyżej widać, jak prompt jest skonstruowany przy użyciu szablonu. W szablonie znajduje się szereg zmiennych, oznaczonych przez `{{zmienna}}`, które zostaną zastąpione rzeczywistymi wartościami z API firmy. - -Oto przykład, jak może wyglądać prompt po zastąpieniu zmiennych treścią z Twojej firmy: - -```text -Firma ubezpieczeniowa: ACME Insurance -Produkty ubezpieczeniowe (koszt miesięczny): -- Samochód, tani, 500 USD -- Samochód, drogi, 1100 USD -- Dom, tani, 600 USD -- Dom, drogi, 1200 USD -- Życie, tanie, 100 USD - -Proszę zaproponować ubezpieczenie przy następującym budżecie i wymaganiach: -Budżet: $1000 -Wymagania: Ubezpieczenie samochodu, domu i życia -``` - -Uruchomienie tego promptu przez LLM spowoduje wygenerowanie odpowiedzi takiej jak ta: - -```output -Biorąc pod uwagę budżet i wymagania, proponujemy następujący pakiet ubezpieczeniowy od ACME Insurance: -- Samochód, tani, 500 USD -- Dom, tani, 600 USD -- Życie, tanie, 100 USD -Całkowity koszt: $1,200 USD -``` - -Jak widać, sugeruje również ubezpieczenie na życie, czego nie powinien robić. Ten wynik jest wskazówką, że musimy zoptymalizować prompt, zmieniając go, aby był jaśniejszy w tym, na co może pozwolić. Po kilku _próbach i błędach_, dochodzimy do następującego promptu: - -```text -Firma ubezpieczeniowa: ACME Insurance -Produkty ubezpieczeniowe (koszt miesięczny): -- typ: Samochód, tani, koszt: 500 USD -- typ: Samochód, drogi, koszt: 1100 USD -- typ: Dom, tani, koszt: 600 USD -- typ: Dom, drogi, koszt: 1200 USD -- typ: Życie, tanie, koszt: 100 USD - -Proszę zaproponować ubezpieczenie przy następującym budżecie i wymaganiach: -Budżet: $1000 ogranicz wybór do typów: Samochód, Dom -``` - -Zauważ, jak dodanie _typ_ i _koszt_, a także użycie słowa kluczowego _ogranicz_ pomaga LLM zrozumieć, czego chcemy. - -Teraz otrzymujemy następującą odpowiedź: - -```output -Biorąc pod uwagę budżet i wymagania, proponujemy ubezpieczenie Samochód, Tanie, które kosztuje 500 USD miesięcznie. -``` - -Celem tego przykładu było pokazanie, że nawet przy użyciu podstawowej techniki, takiej jak _wygenerowana wiedza_, nadal musimy w większości przypadków optymalizować prompt, aby uzyskać pożądany wynik. - -### Least-to-most (od najmniejszego do największego) - -Idea promptowania Least-to-most polega na rozbiciu większego problemu na podproblemy. W ten sposób pomagasz kierować LLM, jak "pokonać" większy problem. Dobrym przykładem mogłaby być analiza danych, gdzie możesz poprosić LLM o podzielenie problemu w następujący sposób: - -> Prompt: Jak wykonać analizę danych w 5 krokach? - -Twój asystent AI odpowie: - -1. Zbierz dane -1. Oczyść dane -1. Przeanalizuj dane -1. Wizualizuj dane -1. Zaprezentuj dane - -### Self-refine (samodoskonalenie), krytyka wyników - -W przypadku generatywnych AI i LLM nie możesz ufać wynikom. Musisz je weryfikować. Ostatecznie, LLM po prostu przedstawia Ci to, co jest najbardziej prawdopodobne do powiedzenia, a nie to, co jest poprawne. Dlatego dobrym pomysłem jest poproszenie LLM o skrytykowanie samego siebie, co prowadzi nas do techniki self-refine. - -Działa to w następujący sposób: - -1. Początkowy prompt proszący LLM o rozwiązanie problemu -1. LLM odpowiada -1. Krytykujesz odpowiedź i prosisz AI o ulepszenie -1. LLM odpowiada ponownie, tym razem uwzględniając krytykę i sugerując rozwiązania, które wymyślił - -Możesz powtarzać ten proces tyle razy, ile chcesz. - -Oto przykład wykorzystujący tę technikę: - -> Prompt: "Stwórz API webowe w Pythonie z trasami products i customers" - -Odpowiedź AI: - -```python -import flask -app = Flask(__name__) - -@app.route('/products') -def products(): - return 'Products' - -@app.route('/customers') -def customers(): - return 'Customers' -``` - -> Prompt: zaproponuj 3 ulepszenia powyższego kodu - -Odpowiedź AI: - -```text -Oczywiście, oto trzy sugestie ulepszeń kodu: - -Zaimportuj prawidłowy moduł: Pierwsza linia powinna importować Flask zamiast flask. Prawidłowa instrukcja importu powinna brzmieć from flask import Flask. - -Dodaj funkcję main: Dodaj blok if __name__ == '__main__': na końcu pliku, aby uruchomić aplikację po wykonaniu pliku. - -Użyj f-strings: Użyj f-strings do formatowania instrukcji return w funkcjach tras. Na przykład, return 'Products' można zmienić na return f'To jest strona {request.path}'. -``` - -```python -from flask import Flask, request - -app = Flask(__name__) - -@app.route('/products') -def products(): - return f'To jest strona {request.path}' - -@app.route('/customers') -def customers(): - return f'To jest strona {request.path}' - -if __name__ == '__main__': - app.run() -``` - -Jak widać, powyższa odpowiedź AI ulepsza pierwszy sugerowany kod dzięki krytyce pierwszej odpowiedzi. - -### Maieutic prompting (promptowanie majeutyczne) - -Promptowanie majeutyczne to technika podobna do self-refine, ale bardziej skupia się na prośbie o wyjaśnienie przez LLM. Celem jest zmniejszenie niespójności w wynikach LLM, aby upewnić się, że dochodzi do poprawnej odpowiedzi. Proces do naśladowania to: - -1. Poproś LLM o odpowiedź na pytanie -1. Dla każdej części odpowiedzi poproś LLM o bardziej szczegółowe wyjaśnienie. -1. Jeśli istnieją niespójności, odrzuć części, które są niespójne. - -Powtarzaj kroki 2 i 3, aż przejdziesz przez wszystkie części i będziesz zadowolony z odpowiedzi. - -Oto przykładowy prompt: - -> prompt: Jak mogę stworzyć plan kryzysowy, aby złagodzić skutki pandemii w 5 krokach? -> Odpowiedź LLM: - -```text -1. Zidentyfikuj ryzyka -1. Zidentyfikuj interesariuszy -1. Zidentyfikuj zasoby -1. Zidentyfikuj działania -1. Zidentyfikuj kanały komunikacji -``` - -Zidentyfikowano 5 kroków, ale czy możemy ustalić, czy jest to poprawne? Poprośmy LLM o wyjaśnienie każdego kroku: - -> prompt: Wyjaśnij pierwszy krok bardziej szczegółowo, jakie są ryzyka szczegółowo związane z pandemią? - -```text -Ryzyka są następujące: - -- Utrata życia -- Utrata biznesu -- Utrata reputacji -- Utrata klientów -- Utrata pracowników -``` - -Na tym etapie chcemy upewnić się, że LLM jest poprawny, więc prosimy go o bardziej szczegółowe wyjaśnienie pierwszego ryzyka i mamy nadzieję, że jest zgodne z powyższą odpowiedzią: - -> prompt: W pandemii, które ryzyko jest największe i dlaczego? - -```text -Największym ryzykiem jest utrata życia, ponieważ jest to najważniejsza rzecz do ochrony. -``` - -> Jakie są dwa największe ryzyka w pandemii? - -```text -Dwa największe ryzyka to utrata życia i utrata biznesu. -``` - -Na tym etapie LLM jest spójny i wymienia "życie" i "biznes" jako dwa największe ryzyka. Możemy teraz przejść do następnego kroku i czuć się dość pewnie. Jednak nie powinniśmy ślepo ufać LLM, zawsze powinniśmy weryfikować wyniki. - -## Różnicowanie wyników - -LLM są z natury niedeterministyczne, co oznacza, że za każdym razem, gdy uruchamiasz ten sam prompt, otrzymasz różne wyniki. Wypróbuj na przykład następujący prompt: - -> "Wygeneruj kod dla API webowego w Pythonie" - -```python -# Importuj niezbędne moduły -import flask -from flask import request, jsonify - -# Utwórz aplikację Flask -app = flask.Flask(__name__) - -# Utwórz trasę dla API -@app.route('/api', methods=['GET']) -def api(): - # Pobierz dane z żądania - data = request.args - - # Przetwórz dane - result = process_data(data) - - # Zwróć wynik jako JSON - return jsonify(result) - -# Funkcja do przetwarzania danych -def process_data(data): - # Zrób coś z danymi - result = data + 1 - - # Zwróć wynik - return result - -# Uruchom aplikację -if __name__ == '__main__': - app.run() - -``` - -Uruchomienie tego samego promptu ponownie generuje nieco inną odpowiedź: - -```python -#importuj niezbędne pakiety -import flask -from flask import request, jsonify - -#utwórz aplikację Flask -app = flask.Flask(__name__) -app.config["DEBUG"] = True - -#utwórz listę książek -books = [ - {'id': 0, - 'title': 'A Fire Upon the Deep', - 'author': 'Vernor Vinge', - 'first_sentence': 'The coldsleep itself was dreamless.', - 'year_published': '1992'}, - {'id': 1, - 'title': 'The Ones Who Walk Away From Omelas', - 'author': 'Ursula K. Le Guin', - 'first_sentence': 'With a clamor of bells that set the swallows soaring, the Festival of Summer came to the city Omelas, bright-towered by the sea.', - 'published': '1973'}, - {'id': 2, - 'title': 'Dhalgren', - 'author': 'Samuel R. Delany', - 'first_sentence': 'to wound the autumnal city.', - 'published': '1975'} -] - -#utwórz endpoint dla API -@app.route('/', methods=['GET']) -def home(): - return '''

Books API

-

A prototype API for retrieving books.

''' - -#utwórz endpoint, aby zwrócić wszystkie książki -@app.route('/api/v1/resources/books/all', methods=['GET']) -def api_all(): - return jsonify(books) - -#utwórz endpoint, aby zwrócić pojedynczą książkę -@app.route('/api/v1/resources/books', methods=['GET']) -def api_id(): - #sprawdź, czy ID zostało podane jako część URL - #jeśli ID jest podane, przypisz je do zmiennej - #jeśli nie podano ID, wyświetl błąd - if 'id' in request.args: - id = int(request.args['id']) - else: - return "Error: No id field provided. Please specify an id." - - #utwórz pustą listę dla naszych wyników - results = [] - - #przejdź przez dane i dopasuj wyniki, które pasują do żądanego ID - #ID są unikalne, ale inne pola mogą zwrócić wiele wyników - for book in books: - if book['id'] == id: - results.append(book) - - #użyj funkcji jsonify z Flask, aby przekonwertować naszą listę - #słowników Pythona na format JSON - return jsonify(results) - -app.run() -``` - -> Czy zróżnicowane wyniki to problem? - -Zależy od tego, co próbujesz zrobić. Jeśli chcesz konkretnej odpowiedzi, to jest to problem. Jeśli nie masz nic przeciwko zróżnicowanym wynikom, takim jak "Wygeneruj dowolne 3 pytania dotyczące geografii", to nie jest to problem. - -### Używanie temperatury do różnicowania wyników - -Ok, więc zdecydowaliśmy, że chcemy ograniczyć wyniki, aby były bardziej przewidywalne, czyli bardziej deterministyczne. Jak to zrobić? - -Temperatura to wartość między 0 a 1, gdzie 0 jest najbardziej deterministyczna, a 1 najbardziej zróżnicowana. Domyślna wartość to 0,7. Zobaczmy, co się stanie przy dwóch uruchomieniach tego samego promptu z temperaturą ustawioną na 0,1: - -> "Wygeneruj kod dla API webowego w Pythonie" - -```python -#importuj niezbędne biblioteki -import flask -from flask import request, jsonify - -#utwórz instancję klasy Flask -app = flask.Flask(__name__) - -#utwórz endpoint dla API -@app.route('/api/v1/endpoint', methods=['GET']) -def api_endpoint(): - #pobierz dane żądania - data = request.get_json() - - #przetwórz dane - result = process_data(data) - - #zwróć wynik - return jsonify(result) - -#funkcja do przetwarzania danych -def process_data(data): - #przetwórz dane - result = {'result': 'success'} - - #zwróć wynik - return result - -#uruchom aplikację Flask -if __name__ == '__main__': - app.run() - -``` - -Uruchomienie promptu ponownie daje nam taki wynik: - -```python -#importuj niezbędne biblioteki -import flask -from flask import request, jsonify - -#utwórz aplikację Flask -app = flask.Flask(__name__) - -#utwórz trasę dla API -@app.route('/api', methods=['GET']) -def api_call(): - #pobierz dane z żądania - data = request.get_json() - - #przetwórz dane - result = process_data(data) - - #zwróć wynik - return jsonify(result) - -#zdefiniuj funkcję process_data -def process_data(data): - #zrób coś z danymi - result = data + 1 - - #zwróć wynik - return result - -#uruchom aplikację -if __name__ == '__main__': - app.run() - -``` - -Między tymi dwoma wynikami jest tylko niewielka różnica. Zróbmy teraz odwrotnie, ustawmy temperaturę na 0,9: - -```python -# Importuj niezbędne biblioteki -import flask -from flask import request, jsonify - -# Utwórz aplikację Flask -app = flask.Flask(__name__) - -# Utwórz trasę dla API -@app.route('/api', methods=['GET']) -def api_call(): - # Pobierz dane z żądania - data = request.args - - # Przetwórz dane - result = process_data(data) - - # Zwróć wynik - return jsonify(result) - -# Funkcja do przetwarzania danych -def process_data(data): - # Zrób coś z danymi - result = data + 1 - - # Zwróć wynik - return result - -# Uruchom aplikację -if __name__ == '__main__': - app.run() - -``` - -a druga próba przy wartości temperatury 0,9: - -```python -import flask -from flask import request, jsonify - -# utwórz aplikację Flask -app = flask.Flask(__name__) -app.config['DEBUG'] = True - -# utwórz przykładowe dane -books = [ - {'id': 0, 'title': 'A Fire Upon The Deep', 'author': 'Vernor Vinge', 'first_sentence': 'The coldsleep itself was dreamless.', 'year_published': '1992'}, - {'id': 1, 'title': 'The Ones Who Walk Away From Omelas', 'author': 'Ursula K. Le Guin', 'first_sentence': 'With a clamor of bells that set the swallows soaring, the Festival of Summer came to the city Omelas, bright-towered by the sea.', 'published': '1973'}, - {'id': 2, 'title': 'Dhalgren', 'author': 'Samuel R. Delany', 'first_sentence': 'to wound the autumnal city.', 'published': '1975'} -] - -# utwórz endpoint -@app.route('/', methods=['GET']) -def home(): - return '''

Welcome to our book API!

''' - -@app.route('/api/v1/resources/books - -``` - -Jak widać, wyniki nie mogłyby być bardziej zróżnicowane. - -> Uwaga, istnieje więcej parametrów, które można zmienić, aby zróżnicować wyniki, takie jak top-k, top-p, kara za powtórzenia, kara za długość i kara za różnorodność, ale są one poza zakresem tego programu nauczania. - -## Dobre praktyki - -Istnieje wiele praktyk, które możesz zastosować, aby uzyskać to, czego chcesz. Znajdziesz swój własny styl w miarę korzystania z promptowania coraz częściej. - -Oprócz technik, które omówiliśmy, istnieje kilka dobrych praktyk, które warto wziąć pod uwagę podczas promptowania LLM. - -Oto kilka dobrych praktyk do rozważenia: - -- **Określ kontekst**. Kontekst ma znaczenie, im więcej możesz określić, takich jak domena, temat itp., tym lepiej. -- **Ogranicz wyniki**. Jeśli chcesz określonej liczby elementów lub określonej długości, określ to. -- **Określ zarówno co, jak i jak**. Pamiętaj, aby wspomnieć zarówno o tym, czego chcesz, jak i jak to chcesz, na przykład "Stwórz API webowe w Pythonie z trasami products i customers, podziel je na 3 pliki". -- **Używaj szablonów**. Często będziesz chciał wzbogacić swoje prompty o dane z Twojej firmy. Użyj szablonów, aby to zrobić. Szablony mogą mieć zmienne, które zastępujesz rzeczywistymi danymi. -- **Pisz poprawnie**. LLM mogą dostarczyć Ci poprawną odpowiedź, ale jeśli piszesz poprawnie, uzyskasz lepszą odpowiedź. - -## Zadanie - -Oto kod w Pythonie pokazujący, jak zbudować proste API przy użyciu Flask: - -```python -from flask import Flask, request - -app = Flask(__name__) - -@app.route('/') -def hello(): - name = request.args.get('name', 'World') - return f'Hello, {name}!' - -if __name__ == '__main__': - app.run() -``` - -Użyj asystenta AI, takiego jak GitHub Copilot lub ChatGPT, i zastosuj technikę "self-refine", aby ulepszyć kod. - -## Rozwiązanie - -Proszę spróbuj rozwiązać zadanie, dodając odpowiednie prompty do kodu. - -> [!TIP] -> Sformułuj prompt prosząc o ulepszenie, dobrym pomysłem jest ograniczenie liczby ulepszeń. Możesz również poprosić o ulepszenie w określony sposób, na przykład architekturę, wydajność, bezpieczeństwo itp. - -[Rozwiązanie](../../python/aoai-solution.py?WT.mc_id=academic-105485-koreyst) - -## Sprawdzenie wiedzy - -Dlaczego miałbym użyć promptowania chain-of-thought? Pokaż mi 1 poprawną odpowiedź i 2 niepoprawne odpowiedzi. - -1. Aby nauczyć LLM, jak rozwiązać problem. -1. B, Aby nauczyć LLM znajdowania błędów w kodzie. -1. C, Aby poinstruować LLM, aby znalazł różne rozwiązania. - -A: 1, ponieważ chain-of-thought polega na pokazaniu LLM, jak rozwiązać problem, dostarczając mu serię kroków oraz podobnych problemów i sposobów ich rozwiązania. - -## 🚀 Wyzwanie - -Właśnie użyłeś techniki self-refine w zadaniu. Weź dowolny program, który zbudowałeś, i zastanów się, jakie ulepszenia chciałbyś w nim wprowadzić. Teraz użyj techniki self-refine, aby zastosować proponowane zmiany. Co sądzisz o wyniku, lepszy czy gorszy? - -## Świetna Praca! Kontynuuj Naukę - -Po ukończeniu tej lekcji sprawdź naszą [kolekcję materiałów dydaktycznych dotyczących Generatywnej AI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst), aby kontynuować podnoszenie swojej wiedzy o Generatywnej AI! - -Przejdź do Lekcji 6, aby zobaczyć, jak możesz zacząć [budować aplikacje generujące tekst](../../../06-text-generation-apps/translations/pl/README.md?WT.mc_id=academic-105485-koreyst)! diff --git a/05-advanced-prompts/translations/pt-br/README.md b/05-advanced-prompts/translations/pt-br/README.md deleted file mode 100644 index afb8792a8a..0000000000 --- a/05-advanced-prompts/translations/pt-br/README.md +++ /dev/null @@ -1,664 +0,0 @@ -# Criando prompts avançados - -[![Creating Advanced Prompts](../../images/05-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson5-gh?WT.mc_id=academic-105485-koreyst) - -Vamos recapitular algumas aprendizagens do capítulo anterior: - -> A _engenharia_ de prompts é o processo pelo qual **guiamos o modelo em direção a respostas mais relevantes** fornecendo instruções ou contexto mais úteis. - -Também existem duas etapas para escrever prompts: a construção do prompt, fornecendo contexto relevante, e a segunda parte é a _otimização_, como melhorar gradualmente o prompt. - -Neste ponto, temos uma compreensão básica de como escrever prompts, mas precisamos aprofundar. Neste capítulo, você passará de experimentar vários prompts para entender por que um prompt é melhor que outro. - -## Introdução - -Neste capítulo, abordaremos os seguintes tópicos: - -- Amplie seu conhecimento de engenharia de prompts aplicando diferentes técnicas aos seus prompts. -- Configure seus prompts para variar a saída. - -## Metas de aprendizado - -Após concluir esta lição, você será capaz de: - -- Aplicar técnicas de engenharia de prompts que melhorem o resultado dos seus prompts. -- Realizar prompts que sejam variados ou determinísticos. - -## Engenharia de prompts - -A engenharia de prompts é o processo de criar prompts que produzirão o resultado desejado. Há mais na engenharia de prompts do que simplesmente escrever um prompt de texto. A engenharia de prompts não é uma disciplina de engenharia; é mais um conjunto de técnicas que você pode aplicar para obter o resultado desejado. - -### Um exemplo de prompt - -Vamos pegar um prompt básico como este: - -> Generate 10 questions on geography. - -Neste prompt, você está aplicando na verdade um conjunto de diferentes técnicas de prompt. - -Vamos analisar isso. - -- **Contexto**, você especifica que deve ser sobre "geografia". -- **Limitação da saída**, você não quer mais do que 10 perguntas. - -### Limitações de prompts simples - -Você pode ou não obter o resultado desejado. Você terá suas perguntas geradas, mas a geografia é um tópico amplo e você pode não obter o que deseja devido às seguintes razões: - -- **Tópico amplo**, você não sabe se será sobre países, capitais, rios e assim por diante. -- **Formato**, e se você quisesse que as perguntas fossem formatadas de uma maneira específica? - -Como você pode ver, há muito a considerar ao criar prompts. - -Até agora, vimos um exemplo simples de prompt, mas a IA generativa é capaz de muito mais para ajudar pessoas em várias funções e indústrias. Vamos explorar algumas técnicas básicas a seguir. - -### Técnicas de prompting - -Primeiro, precisamos entender que o prompting é uma propriedade _emergente_ de um LLM, o que significa que não é uma característica incorporada ao modelo, mas sim algo que descobrimos conforme usamos o modelo. - -Existem algumas técnicas básicas que podemos usar para fazer um prompt em um LLM. Vamos explorá-las. - -- **Prompt de poucas tentativas**, esta é a forma mais básica de prompt. É um prompt único com alguns exemplos. -- **Corrente de pensamento**, este tipo de prompt diz ao LLM como dividir um problema em etapas. -- **Conhecimento gerado**, para melhorar a resposta de um prompt, você pode fornecer fatos ou conhecimentos gerados adicionalmente ao seu prompt. -- **Do menos para o mais**, assim como a corrente de pensamento, esta técnica consiste em dividir um problema em uma série de etapas e depois pedir que essas etapas sejam realizadas em ordem. -- **Auto-aperfeiçoamento**, esta técnica consiste em criticar a saída do LLM e depois pedir que ele melhore. -- **Prompt maieutico**. O que você deseja aqui é garantir que a resposta do LLM esteja correta e pedir que ele explique várias partes da resposta. Isso é uma forma de auto-aperfeiçoamento. - -### Prompt de Poucas Tentativas - -Este estilo de prompt é muito simples, pode consistir em um único prompt e possivelmente alguns exemplos. Essa técnica é provavelmente o que você está usando ao começar a aprender sobre LLMs. Aqui está um exemplo: - -- Prompt: "O que é Álgebra?" -- Resposta: "Álgebra é uma ramificação da matemática que estuda símbolos matemáticos e as regras para manipular esses símbolos." - -### Prompt - Corrente de Pensamento (chain-of-thought prompting) - -O prompt corrente de pensamento é uma técnica muito interessante, pois envolve levar o LLM por uma série de etapas. A ideia é instruir o LLM de tal forma que ele entenda como fazer algo. Considere o seguinte exemplo, com e sem corrente de pensamento: - - - Prompt: "Alice tem 5 maçãs, joga 3 maçãs, dá 2 para Bob e Bob devolve uma, quantas maçãs Alice tem?" - - Resposta: 5 - -O LLM responde com 5, o que está incorreto. A resposta correta é 1 maçã, dada a seguinte operação (5 -3 -2 + 1 = 1). - -Então, como podemos ensinar o LLM a fazer isso corretamente? - -Vamos tentar a corrente de pensamento. Aplicar a corrente de pensamento significa: - -1. Dar ao LLM um exemplo semelhante. -1. Mostrar o cálculo e como calculá-lo corretamente. -1. Fornecer o prompt original. - -Veja como: - -- Prompt: "Lisa tem 7 maçãs, joga 1 maçã, dá 4 maçãs para Bart e Bart devolve uma: - 7 -1 = 6 - 6 -4 = 2 - 2 +1 = 3 - Alice tem 5 maçãs, joga 3 maçãs, dá 2 para Bob e Bob devolve uma, quantas maçãs Alice tem?" - Resposta: 1 - -Note como escrevemos prompts substancialmente mais longos com outro exemplo, um cálculo e, em seguida, o prompt original, e chegamos à resposta correta, que é 1. - -Como você pode ver, a corrente de pensamento é uma técnica muito poderosa. - -### Conhecimento Gerado - -Muitas vezes, ao criar uma solicitação, você deseja fazê-lo usando os dados de sua própria empresa. Você quer que parte da solicitação seja da empresa e a outra parte seja a solicitação real que você está interessado. - -Como exemplo, é assim que sua solicitação pode parecer se você estiver no ramo de seguros: - - ```text - {{company}}: {{company_name}} - {{products}}: - {{products_list}} - Please suggest an insurance given the following budget and requirements: - Budget: {{budget}} - Requirements: {{requirements}} - ``` - -Acima, você vê como a solicitação é construída usando um modelo. No modelo, há várias variáveis, indicadas por `{{variável}}`, que serão substituídas por valores reais de uma API da empresa. - -Aqui está um exemplo de como a solicitação pode parecer depois que as variáveis foram substituídas pelo conteúdo de sua empresa: - - ```text - Insurance company: ACME Insurance - Insurance products (cost per month): - - Car, cheap, 500 USD - - Car, expensive, 1100 USD - - Home, cheap, 600 USD - - Home, expensive, 1200 USD - - Life, cheap, 100 USD - - Please suggest an insurance given the following budget and requirements: - Budget: $1000 - Requirements: Car, Home - ``` - -Executando esta solicitação em um Modelo de Linguagem com Aprendizado Profundo (LLM), o resultado será algo como: - - ```output - , and Life insurance - - Given the budget and requirements, we suggest the following insurance package from ACME Insurance: - - Car, cheap, 500 USD - - Home, cheap, 600 USD - - Life, cheap, 100 USD - Total cost: $1,200 USD - ``` - -Como você pode ver, também sugere o seguro de vida, o que não deveria acontecer. Este resultado é uma indicação de que precisamos otimizar a solicitação tornando-a mais clara sobre o que é permitido. Após alguma _tentativa e erro_, chegamos à seguinte solicitação: - - ```text - Insurance company: ACME Insurance - Insurance products (cost per month): - - type: Car, cheap, cost: 500 USD - - type: Car, expensive, cost: 1100 USD - - type: Home, cheap, cost: 600 USD - - type: Home, expensive, cost: 1200 USD - - type: Life, cheap, cost: 100 USD - - Please suggest an insurance given the following budget and requirements: - Budget: $1000 restrict choice to types: Car, Home - ``` - -Observe como adicionar _tipo_ e _custo_ e também usar a palavra-chave _restringir_ ajuda o LLM a entender o que queremos. - -Agora obtemos a seguinte resposta: - - ```output - Given the budget and requirements, we suggest the Car, Cheap insurance product which costs 500 USD per month. - ``` - -O objetivo deste exemplo foi mostrar que, mesmo que estejamos usando uma técnica básica como _conhecimento gerado_, ainda precisamos otimizar o prompt na maioria dos casos para obter o resultado desejado. - -### Least-to-most - -The idea with Least-to-most prompting is to break down a bigger problem into subproblems. That way, you help guide the LLM on how to "conquer" the bigger problem. A good example could be for data science where you can ask the LLM to divide up a problem like so: - -> Prompt: How to perform data science in 5 steps? - -With your AI assistant answering with: - -1. Collect data -1. Clean data -1. Analyze data -1. Plot data -1. Present data - -### Self-refine, critique the results - -With generative AIs and LLMs, you can't trust the output. You need to verify it. After all, the LLM is just presenting you what's the next most likely thing to say, not what's correct. Therefore, a good idea is to ask the LLM to critique itself, which leads us to the self-refine technique. - -How it works is that you follow the following steps: - -1. Initial prompt asking the LLM to solve a problem -1. LLM answers -1. You critique the answer and ask the AI to improve -1. LLM answers again, this time considering the critique and suggest solutions it came up with - -You can repeat this process as many times as you want. - -Here's an example using this technique: - -### Menos para mais - -A ideia com a técnica do prompt "Menos para mais" é decompor um problema maior em subproblemas. Dessa forma, você ajuda a orientar o LLM sobre como "conquistar" o problema maior. Um bom exemplo pode ser em ciência de dados, onde você pode pedir ao LLM para dividir um problema da seguinte maneira: - -> Prompt: How to perform data science in 5 steps? - -Com seu assistente de IA respondendo: - -1. Coletar dados -1. Limpar dados -1. Analisar dados -1. Plotar dados -1. Apresentar dados - -### Autoaperfeiçoamento, crítica dos resultados - -Com AIs generativas e LLMs, você não pode confiar na saída. É preciso verificá-la. Afinal, o LLM está apenas apresentando o que é mais provável dizer a seguir, não o que está correto. Portanto, uma boa ideia é pedir ao LLM que faça uma autocrítica, o que nos leva à técnica de autoaperfeiçoamento. - -Como funciona é como você segue os seguintes passos: - -1. Prompt inicial pedindo ao LLM para resolver um problema -1. LLM responde -1. Você critica a resposta e pede à IA para melhorar -1. LLM responde novamente, desta vez considerando a crítica e sugerindo soluções que elaborou - -Você pode repetir esse processo quantas vezes quiser. - -Aqui está um exemplo usando essa técnica: - -> Prompt: "Create a Python Web API with routes products and customers" - -Resposta da IA: - - ```python - import flask - app = Flask(__name__) - - @app.route('/products') - def products(): - return 'Products' - - @app.route('/customers') - def customers(): - return 'Customers' - ``` - -> Prompt: suggest 3 improvements of the above code - -Resposta da IA: - - ```text - Sure, here are three suggestions to improve the code: - - Import the correct module: The first line should import Flask instead of flask. The correct import statement should be from flask import Flask. - - Add a main function: Add a if __name__ == '__main__': block to the end of the file to run the application when the file is executed. - - Use f-strings: Use f-strings to format the return statements in the route functions. For example, return 'Products' can be changed to return f'This is the {request.path} page'. - ``` - - ```python - from flask import Flask, request - - app = Flask(__name__) - - @app.route('/products') - def products(): - return f'This is the {request.path} page' - - @app.route('/customers') - def customers(): - return f'This is the {request.path} page' - - if __name__ == '__main__': - app.run() - ``` - -Como você pode ver, a resposta da IA acima está aprimorando o primeiro código sugerido, graças à crítica da primeira resposta. - -### Maieutic prompting - -Maieutic prompting is a technique that is similar to self-refine but it's more about asking the LLM to explain itself. The goal is to reduce inconsistencies in the LLM's output so to ensure it arrives at the correct answer. The workflow to follow is: - -1. Ask the LLM to answer a question -1. For each part of the answer, ask the LLM to explain it more in depth. -1. If there are inconsistencies, discard the parts that are inconsistent. - -Repeat 2 and 3 until you've gone through all the parts and you're satisfied with the answer. - -Here's an example prompt: - -### Prompt de Maiêutico - -O prompt de maiêutico é uma técnica semelhante ao autoaperfeiçoamento, mas trata-se mais de pedir ao LLM para se explicar. O objetivo é reduzir inconsistências na saída do LLM para garantir que ele chegue à resposta correta. O fluxo de trabalho a ser seguido é: - -1. Peça ao LLM para responder a uma pergunta. -1. Para cada parte da resposta, peça ao LLM para explicá-la mais detalhadamente. -1. Se houver inconsistências, descarte as partes inconsistentes. - -Repita os passos 2 e 3 até passar por todas as partes e ficar satisfeito com a resposta. - -Aqui está um exemplo de um prompt: - -> prompt: How can I create a crisis plan to mitigate a pandemic in 5 steps? -> LLM answer: - - ```text - 1. Identify the risks - 1. Identify the stakeholders - 1. Identify the resources - 1. Identify the actions - 1. Identify the communication channels - ``` - -São identificadas 5 etapas, mas podemos determinar se isso está correto? Vamos pedir ao LLM para explicar cada etapa: - -> prompt: Explain the first step in more detail, what are the risks in detail with a pandemic? - - ```text - The risks are the following: - - - Loss of life - - Loss of business - - Loss of reputation - - Loss of customers - - Loss of employees - ``` - -Neste ponto, queremos ter certeza de que o LLM está correto, por isso pedimos que explique o primeiro risco com mais detalhes e esperamos que seja consistente com a resposta acima: - -> prompt: In a Pandemic, which is the biggest risk and why? - - ```text - The biggest risk is loss of life because it's the most important thing to protect. - ``` - -> What are the two biggest risks in a pandemic? - - ```text - The two biggest risks are loss of life and loss of business. - ``` - -Neste ponto, o LLM é consistente e menciona "vida" e "negócios" como os dois principais riscos. Podemos agora prosseguir para o próximo passo e sentir confiança razoável. No entanto, não devemos confiar cegamente no LLM; sempre devemos verificar a saída. - -## Varie sua saída - -Os LLMs são, por natureza, não-determinísticos, o que significa que você obterá resultados diferentes cada vez que executar o mesmo prompt. Tente o seguinte prompt, por exemplo: - -> "Generate code for a Python Web API" - - ```text - # Import necessary modules - import flask - from flask import request, jsonify - - # Create a Flask app - app = flask.Flask(__name__) - - # Create a route for the API - @app.route('/api', methods=['GET']) - def api(): - # Get the data from the request - data = request.args - - # Process the data - result = process_data(data) - - # Return the result as JSON - return jsonify(result) - - # Function to process the data - def process_data(data): - # Do something with the data - result = data + 1 - - # Return the result - return result - - # Run the app - if __name__ == '__main__': - app.run() - ``` - -Execute o mesmo prompt novamente e você observará que vai gerar uma resposta ligeiramente diferente: - - ```text - #import necessary packages - import flask - from flask import request, jsonify - - #create the Flask application - app = flask.Flask(__name__) - app.config["DEBUG"] = True - - #create a list of books - books = [ - {'id': 0, - 'title': 'A Fire Upon the Deep', - 'author': 'Vernor Vinge', - 'first_sentence': 'The coldsleep itself was dreamless.', - 'year_published': '1992'}, - {'id': 1, - 'title': 'The Ones Who Walk Away From Omelas', - 'author': 'Ursula K. Le Guin', - 'first_sentence': 'With a clamor of bells that set the swallows soaring, the Festival of Summer came to the city Omelas, bright-towered by the sea.', - 'published': '1973'}, - {'id': 2, - 'title': 'Dhalgren', - 'author': 'Samuel R. Delany', - 'first_sentence': 'to wound the autumnal city.', - 'published': '1975'} - ] - - #create an endpoint for the API - @app.route('/', methods=['GET']) - def home(): - return '''

Books API

-

A prototype API for retrieving books.

''' - - #create an endpoint to return all books - @app.route('/api/v1/resources/books/all', methods=['GET']) - def api_all(): - return jsonify(books) - - #create an endpoint to return a single book - @app.route('/api/v1/resources/books', methods=['GET']) - def api_id(): - #check if an ID was provided as part of the URL - #if ID is provided, assign it to a variable - #if no ID is provided, display an error - if 'id' in request.args: - id = int(request.args['id']) - else: - return "Error: No id field provided. Please specify an id." - - #create an empty list for our results - results = [] - - #loop through the data and match results that fit the requested ID - #IDs are unique, but other fields might return many results - for book in books: - if book['id'] == id: - results.append(book) - - #use the jsonify function from Flask to convert our list of - #Python dictionaries to the JSON format - return jsonify(results) - - app.run() - ``` - -> Então, a saída diferente é um problema? - -Depende do que você está tentando fazer. Se você deseja uma resposta específica, é um problema. Se você está bem com uma saída variada como "Gerar 3 perguntas sobre geografia", então não é um problema. - -### Usando a temperatura para variar sua saída - -Ok! Então, decidimos que queremos limitar a saída para ser mais previsível, ou seja, mais determinística. Como fazemos isso? - -Temperatura é um valor entre 0 e 1, onde 0 é o mais determinístico e 1 é o mais variado. O valor padrão é 0.7. Vamos ver o que acontece com duas execuções do mesmo prompt com temperatura definida como 0.1: - -> "Generate code for a Python Web API" - - ```python - #import necessary libraries - import flask - from flask import request, jsonify - - #create an instance of the Flask class - app = flask.Flask(__name__) - - #create an endpoint for the API - @app.route('/api/v1/endpoint', methods=['GET']) - def api_endpoint(): - #get the request data - data = request.get_json() - - #process the data - result = process_data(data) - - #return the result - return jsonify(result) - - #function to process the data - def process_data(data): - #process the data - result = {'result': 'success'} - - #return the result - return result - - #run the Flask app - if __name__ == '__main__': - app.run() - - ``` - -Execute o prompt novamente e você verá este resultado: - - ```python - #import necessary libraries - import flask - from flask import request, jsonify - - #create a Flask app - app = flask.Flask(__name__) - - #create a route for the API - @app.route('/api', methods=['GET']) - def api_call(): - #get the data from the request - data = request.get_json() - - #process the data - result = process_data(data) - - #return the result - return jsonify(result) - - #define the process_data function - def process_data(data): - #do something with the data - result = data + 1 - - #return the result - return result - - #run the app - if __name__ == '__main__': - app.run() - - ``` - -Há apenas uma pequena diferença entre essas duas saídas. Vamos fazer o contrário desta vez, vamos definir a temperatura para 0.9: - - ```python - # Import necessary libraries - import flask - from flask import request, jsonify - - # Create a Flask app - app = flask.Flask(__name__) - - # Create a route for the API - @app.route('/api', methods=['GET']) - def api_call(): - # Get the data from the request - data = request.args - - # Process the data - result = process_data(data) - - # Return the result - return jsonify(result) - - # Function to process the data - def process_data(data): - # Do something with the data - result = data + 1 - - # Return the result - return result - - # Run the app - if __name__ == '__main__': - app.run() - - ``` - -e a segunda tentativa em 0,9 como valor de temperatura: - - ```python - import flask - from flask import request, jsonify - - # create the Flask app - app = flask.Flask(__name__) - app.config['DEBUG'] = True - - # create some test data - books = [ - {'id': 0, 'title': 'A Fire Upon The Deep', 'author': 'Vernor Vinge', 'first_sentence': 'The coldsleep itself was dreamless.', 'year_published': '1992'}, - {'id': 1, 'title': 'The Ones Who Walk Away From Omelas', 'author': 'Ursula K. Le Guin', 'first_sentence': 'With a clamor of bells that set the swallows soaring, the Festival of Summer came to the city Omelas, bright-towered by the sea.', 'published': '1973'}, - {'id': 2, 'title': 'Dhalgren', 'author': 'Samuel R. Delany', 'first_sentence': 'to wound the autumnal city.', 'published': '1975'} - ] - - # create an endpoint - @app.route('/', methods=['GET']) - def home(): - return '''

Welcome to our book API!

''' - - @app.route('/api/v1/resources/books - - ``` - -Como você pode ver, os resultados não poderiam ser mais variados. - -> Observe que, existem mais parâmetros que você pode alterar para variar a saída, como top-k, top-p, penalidade de repetição, penalidade de comprimento e penalidade de diversidade, mas estes estão fora do escopo deste currículo. - -## Boas práticas - -Há muitas práticas que você pode aplicar para tentar obter o que deseja. Você encontrará seu próprio estilo à medida que usar mais e mais prompts. - -Além das técnicas que cobrimos, existem algumas boas práticas a serem consideradas ao solicitar um LLM. - -Aqui estão algumas boas práticas a serem consideradas: - -- **Especifique o contexto**: O contexto é importante. Quanto mais você puder especificar, como domínio, tópico, etc., será muito melhor. -- **Limite a saída**: Se você deseja um número específico de itens ou um comprimento específico, especifique. -- **Especifique tanto o que, quanto e como**: Lembre-se de mencionar tanto o que você deseja quanto como deseja. Por exemplo: _Crie uma API da Web em Python com rotas para produtos e clientes, dividindo-a em 3 arquivos_. -- **Use modelos**: Muitas vezes, você desejará enriquecer suas solicitações com dados da sua empresa. Use modelos para fazer isso. Os modelos podem ter variáveis que você substitui por dados reais. -- **Escreva corretamente**: Os LLMs podem fornecer uma resposta correta. Mas, se você escrever corretamente, obterá uma resposta melhor. - -## Tarefa - -Aqui está o código em Python que mostra como criar uma API simples usando o Flask: - - ```python - from flask import Flask, request - - app = Flask(__name__) - - @app.route('/') - def hello(): - name = request.args.get('name', 'World') - return f'Hello, {name}!' - - if __name__ == '__main__': - app.run() - ``` - -Use um assistente de IA como o GitHub Copilot ou o ChatGPT e aplique a técnica de "auto-aperfeiçoamento" para melhorar o código. - -## Solução - -Por favor, tente resolver a tarefa adicionando prompts adequados ao código. - -> [!DICA] -> Formule um prompt para pedir que ele melhor. É uma boa ideia limitar quantas melhorias devem ter. Você também pode pedir para melhorar de uma certa maneira, por exemplo, arquitetura, desempenho, segurança, etc. - -[Solution](../../python/aoai-solution.py?WT.mc_id=academic-105485-koreyst) - -## Verificação de conhecimento - -Por que eu usaria a técnica de prompt de corrente de pensamento? Mostre-me 1 resposta correta e 2 respostas incorretas. - -Para ensinar o LLM a resolver um problema. -B, Para ensinar o LLM a encontrar erros no código. -C, Para instruir o LLM a propor diferentes soluções. - -Resposta correta: A, 1, porque o prompt de corrente de pensamento trata de mostrar ao LLM como resolver um problema, fornecendo uma série de passos e problemas semelhantes e como foram resolvidos. - -## 🚀 Desafio - -Você acabou de usar a técnica de auto-aperfeiçoamento na atribuição. Pegue qualquer programa que você criou e considere quais melhorias você gostaria de aplicar a ele. Agora, use a técnica de auto-aperfeiçoamento para aplicar as alterações propostas. O que você achou do resultado, melhor ou pior? - -## Ótimo trabalho! Continue seu aprendizado - -Após concluir esta lição, confira nossa [coleção de aprendizado de IA generativa](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) para continuar a aprimorar seus conhecimentos sobre IA generativa! - -Agora, vamos para a Lição 6, onde aplicaremos nosso conhecimento de Engenharia de Prompt, [construindo aplicativos de geração de texto](../../../06-text-generation-apps/translations/pt-br/README.md?WT.mc_id=academic-105485-koreyst) diff --git a/05-advanced-prompts/translations/tw/README.md b/05-advanced-prompts/translations/tw/README.md deleted file mode 100644 index b1820cdcb8..0000000000 --- a/05-advanced-prompts/translations/tw/README.md +++ /dev/null @@ -1,636 +0,0 @@ -# 建立進階提示 - -[![建立進階提示](../../images/05-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson5-gh?WT.mc_id=academic-105485-koreyst?WT.mc_id=academic-105485-koreyst) - -讓我們回顧一下前一章的一些學習內容: - -> Prompt _工程_ 是我們通過提供更有用的指示或上下文來**引導模型朝向更相關的回應**的過程。 - -撰寫提示也有兩個步驟,構建提示,提供相關上下文,第二部分是_最佳化_,如何逐步改進提示。 - -此時,我們已經對如何編寫提示有了一些基本的了解,但我們需要更深入地探討。在本章中,你將從嘗試各種提示到理解為什麼一個提示比另一個提示更好。你將學習如何遵循一些基本技術來構建提示,這些技術可以應用於任何 LLM。 - -## 簡介 - -在本章中,我們將涵蓋以下主題: - -- 通過將不同技術應用於提示來擴展您對提示工程的知識。 -- 配置您的提示以改變輸出。 - -## 學習目標 - -完成此課程後,您將能夠: - -- 應用提示工程技術來改善提示的結果。 -- 執行變化或確定性的提示。 - -## 提示工程 - -提示工程是創建能夠產生預期結果的提示的過程。提示工程不僅僅是編寫文本提示。提示工程不是一門工程學科,它更像是一組技術,你可以應用這些技術來獲得預期的結果。 - -### 範例的提示 - -讓我們來看一個基本的提示,如下所示: - -> 產生10個地理問題。 - -在此提示中,您實際上應用了不同提示技術的集合。 - -讓我們來解析這個。 - -- **上下文**, 你指定它應該是關於"地理"。 -- **限制輸出**, 你希望不超過10個問題。 - -### 簡單提示的限制 - -你可能會或不會得到預期的結果。你的問題會被生成,但地理是一個很大的主題,你可能因以下原因而無法得到你想要的結果: - -- **大主題**, 你不知道它會是關於國家、首都、河流等等。 -- **格式**, 如果你希望問題以某種方式格式化怎麼辦? - -如你所見,建立提示時有很多需要考慮的因素。 - -到目前為止,我們已經看過一個簡單的提示範例,但生成式 AI 能夠做更多事情來幫助各種角色和行業的人們。接下來讓我們探索一些基本技術。 - -### 提示技巧 - -首先,我們需要了解,提示是一個 LLM 的 _突現_ 屬性,這意味著這不是模型內建的功能,而是我們在使用模型時發現的。 - -有一些基本技術可以用來提示 LLM。我們來探索它們。 - -- **零次提示**,這是最基本的提示形式。它是一個單一的提示,僅基於其訓練數據請求LLM的回應。 -- **少次提示**,這種類型的提示通過提供一個或多個範例來引導LLM生成其回應。 -- **思維鏈**,這種類型的提示告訴LLM如何將問題分解成步驟。 -- **生成知識**,為了改進提示的回應,你可以額外提供生成的事實或知識。 -- **從少到多**,像思維鏈一樣,這種技術是將問題分解成一系列步驟,然後要求按順序執行這些步驟。 -- **自我改進**,這種技術是批判LLM的輸出,然後要求其改進。 -- **產婆提示**。你在這裡想要確保LLM的答案是正確的,並要求它解釋答案的各個部分。這是一種自我改進的形式。 - -### 零樣本提示 - -這種提示風格非常簡單,它由單一提示組成。這種技術可能是你在開始學習 LLMs 時所使用的。這裡有一個範例: - -- 提示: "什麼是代數?" -- 答案: "代數是數學的一個分支,研究數學符號和操作這些符號的規則。" - -### 少量樣本提示 - -這種提示風格通過提供一些範例和請求來幫助模型。它包含一個帶有額外任務特定資料的單一提示。這裡有一個範例: - -- 提示: "以莎士比亞的風格寫一首詩。這裡有一些莎士比亞十四行詩的範例: - 十四行詩18: '我能否將你比作夏日?你更可愛也更溫和...' - 十四行詩116: '真心相愛的結合,我不承認任何障礙。愛不是愛,如果它在發現變故時改變...' - 十四行詩132: '我愛你的眼睛,它們憐憫我,知道你的心折磨我,帶著輕蔑,...' - 現在,寫一首關於月亮之美的十四行詩。" -- 回答: "在天空中,月亮柔和地閃爍,銀色的光芒散發著溫柔的優雅,..." - -範例提供 LLM 相關的背景、格式或所需輸出的風格。它們幫助模型理解特定任務並生成更準確和相關的回應。 - -### Chain-of-thought - -Chain-of-thought 是一個非常有趣的技術,因為它涉及讓 LLM 經歷一系列步驟。這個想法是以某種方式指導 LLM,使其理解如何做某事。考慮以下範例,有和沒有 chain-of-thought: - -- 提示: "Alice 有 5 顆蘋果,扔了 3 顆蘋果,給了 Bob 2 顆,Bob 還了一顆,Alice 還有幾顆蘋果?" -- 答案: 5 - -LLM 回答 5,這是不正確的。正確答案是 1 個蘋果,根據計算 (5 -3 -2 + 1 = 1)。 - -那麼我們如何教導 LLM 正確地執行這個操作呢? - -讓我們嘗試連鎖思維。應用連鎖思維意味著: - -1. 給 LLM 一個類似的範例。 -1. 顯示計算過程,以及如何正確計算。 -1. 提供原始提示。 - -以下是方法: - -- 提示: "Lisa 有 7 顆蘋果,丟掉 1 顆蘋果,給 Bart 4 顆蘋果,而 Bart 還給她一顆: - 7 -1 = 6 - 6 -4 = 2 - 2 +1 = 3 - Alice 有 5 顆蘋果,丟掉 3 顆蘋果,給 Bob 2 顆,而 Bob 還給她一顆,Alice 有幾顆蘋果?" - 答案: 1 - -注意我們如何使用另一個範例撰寫更長的提示,一個計算,然後是原始提示,我們得出正確答案1。 - -如你所見,chain-of-thought 是一個非常強大的技術。 - -### 生成的知識 - -很多時候,當你想要建構提示時,你會想要使用自己公司的資料。你希望提示的一部分來自公司,另一部分則是你感興趣的實際提示。 - -作為範例,如果你從事保險業務,這就是你的提示可能看起來的樣子: - -```text -{{company}}: {{company_name}} -{{products}}: -{{products_list}} -請根據以下預算和需求推薦一份保險: -預算: {{budget}} -需求: {{requirements}} -``` - -在上面,你可以看到如何使用模板構建提示。在模板中,有許多變數,用 `{{variable}}` 表示,這些變數將被公司 API 的實際值替換。 - -以下是一個範例,說明在將變數替換為您公司內容後,提示可能的樣子: - -```text -保險公司: ACME Insurance -保險產品(每月費用): -- 汽車,便宜,500 USD -- 汽車,昂貴,1100 USD -- 住宅,便宜,600 USD -- 住宅,昂貴,1200 USD -- 人壽,便宜,100 USD - -請根據以下預算和需求建議一個保險: -預算: $1000 -需求: 汽車、住宅和人壽保險 -``` - -執行此提示通過 LLM 將產生如下回應: - -```output -根據預算和需求,我們建議以下來自ACME保險的保險套件: -- 汽車,便宜,500美元 -- 住宅,便宜,600美元 -- 人壽,便宜,100美元 -總成本: $1,200美元 -``` - -如你所見,它也建議了人壽保險,這是不應該的。這個結果表明我們需要通過更改提示來使其更清晰,以便知道它可以允許什麼。經過一些_反覆試驗_,我們得出了以下提示: - -```text -保險公司: ACME Insurance -保險產品(每月費用): -- 類型: Car, 便宜, 費用: 500 USD -- 類型: Car, 昂貴, 費用: 1100 USD -- 類型: Home, 便宜, 費用: 600 USD -- 類型: Home, 昂貴, 費用: 1200 USD -- 類型: Life, 便宜, 費用: 100 USD - -請根據以下預算和需求建議保險: -預算: $1000 限制選擇類型: Car, Home -``` - -注意,添加 _type_ 和 _cost_ 並使用關鍵字 _restrict_ 如何幫助 LLM 理解我們的需求。 - -現在我們得到以下回應: - -```output -鑑於預算和需求,我們建議選擇每月花費500美元的汽車和便宜的保險產品。 -``` - -這個範例的重點是要顯示,即使我們使用像_產生的知識_這樣的基本技術,我們在大多數情況下仍然需要最佳化提示以獲得所需的結果。 - -### 最少到最多 - -將最少提示到最多提示的想法是將一個更大的問題分解成子問題。這樣,你可以幫助引導LLM如何「征服」更大的問題。一個好的範例可以是資料科學,你可以要求LLM這樣劃分一個問題: - -> 提示: 如何在5個步驟中進行資料科學? - -使用你的 AI 助手回答: - -1. 收集資料 -1. 清理資料 -1. 分析資料 -1. 繪製資料 -1. 呈現資料 - -### 自我改進,批評結果 - -隨著生成式 AI 和 LLM 的發展,你不能完全信任其輸出。你需要驗證它。畢竟,LLM 只是向你展示下一個最有可能說的話,而不是正確的內容。因此,一個好的想法是讓 LLM 自我批評,這引導我們使用自我改進技術。 - -它的運作方式是你按照以下步驟操作: - -1. 初始提示要求 LLM 解決問題 -1. LLM 回答 -1. 你批評答案並要求 AI 改進 -1. LLM 再次回答,這次考慮了批評並提出了解決方案 - -你可以根據需要多次重複此過程。 - -以下是使用此技術的範例: - -> 提示: "建立一個具有路由產品和客戶的 Python Web API" - -AI 答案: - -```python -import flask -app = Flask(__name__) - -@app.route('/products') -def products(): - return '產品' - -@app.route('/customers') -def customers(): - return '顧客' -``` - -> 提示: 建議上述程式碼的3個改進之處 - -AI 答案: - -```text -當然,這裡有三個改進程式碼的建議: - -匯入正確的模組: 第一行應該匯入 Flask 而不是 flask。正確的匯入語句應該是 from flask import Flask。 - -添加一個主函式: 在檔案的末尾添加一個 if __name__ == '__main__': 區塊,以便在檔案執行時運行應用程式。 - -使用 f-strings: 使用 f-strings 來格式化路由函式中的返回語句。例如,return 'Products' 可以改為 return f'This is the {request.path} page'。 -``` - -```python -from flask import Flask, request - -app = Flask(__name__) - -@app.route('/products') -def products(): - return f'這是 {request.path} 頁面' - -@app.route('/customers') -def customers(): - return f'這是 {request.path} 頁面' - -if __name__ == '__main__': - app.run() -``` - -如你所見,上述的 AI 回應正在改進第一個建議的程式碼,這要歸功於對第一個答案的批評。 - -### 產婆式提示 - -Maieutic 提示是一種類似於自我改進的技術,但它更關注於要求 LLM 解釋自己。其目標是減少 LLM 輸出中的不一致性,以確保其得出正確的答案。要遵循的工作流程是: - -1. 向 LLM 提問 -1. 對於答案的每個部分,要求 LLM 更深入地解釋。 -1. 如果有不一致的地方,丟棄不一致的部分。 - -重複 2 和 3 直到你完成所有部分並對答案感到滿意為止。 - -這是一個範例提示: - -> 提示: 我如何在5個步驟中建立一個危機計劃來減輕大流行病的影響? -> LLM 回答: - -```text -1. 識別風險 -1. 識別利益相關者 -1. 識別資源 -1. 識別行動 -1. 識別通訊管道 -``` - -已識別出5個步驟,但我們能否確定這是正確的?讓我們請 LLM 解釋每個步驟: - -> 提示: 更詳細地解釋第一步,詳細說明大流行的風險是什麼? - -```text -風險如下: - -- 失去生命 -- 失去業務 -- 失去聲譽 -- 失去客戶 -- 失去員工 -``` - -此時,我們想確保 LLM 是正確的,因此我們要求它更詳細地解釋第一個風險,並希望它與上述答案一致: - -> 提示: 在大流行期間,最大的風險是什麼,為什麼? - -```text -最大的風險是失去生命,因為這是最重要的保護。 -``` - -> 在大流行中最大的兩個風險是什麼? - -```text -兩個最大的風險是生命損失和業務損失。 -``` - -此時,LLM 是一致的,並提到「生活」和「業務」是前兩大風險。我們現在可以繼續進行下一步,並感到相當有信心。然而,我們不應該盲目相信 LLM,我們應該始終驗證輸出。 - -## 變化你的輸出 - -LLM 本質上是非確定性的,這意味著每次執行相同的提示時,您將獲得不同的結果。例如,嘗試以下提示: - -> "為 Python Web API 產生程式碼" - -```python -# 匯入必要的模組 -import flask -from flask import request, jsonify - -# 建立一個 Flask 應用程式 -app = flask.Flask(__name__) - -# 為 API 建立一個路由 -@app.route('/api', methods=['GET']) -def api(): - # 從請求中獲取資料 - data = request.args - - # 處理資料 - result = process_data(data) - - # 以 JSON 格式返回結果 - return jsonify(result) - -# 處理資料的函式 -def process_data(data): - # 對資料進行某些操作 - result = data + 1 - - # 返回結果 - return result - -# 執行應用程式 -if __name__ == '__main__': - app.run() -``` - -再次執行相同的提示會產生略有不同的回應: - -```python -#import necessary packages -import flask -from flask import request, jsonify - -#create the Flask application -app = flask.Flask(__name__) -app.config["DEBUG"] = True - -#create a list of books -books = [ - {'id': 0, - 'title': 'A Fire Upon the Deep', - 'author': 'Vernor Vinge', - 'first_sentence': 'The coldsleep itself was dreamless.', - 'year_published': '1992'}, - {'id': 1, - 'title': 'The Ones Who Walk Away From Omelas', - 'author': 'Ursula K. Le Guin', - 'first_sentence': 'With a clamor of bells that set the swallows soaring, the Festival of Summer came to the city Omelas, bright-towered by the sea.', - 'published': '1973'}, - {'id': 2, - 'title': 'Dhalgren', - 'author': 'Samuel R. Delany', - 'first_sentence': 'to wound the autumnal city.', - 'published': '1975'} -] - -#create an endpoint for the API -@app.route('/', methods=['GET']) -def home(): - return '''

Books API

-

A prototype API for retrieving books.

''' - -#create an endpoint to return all books -@app.route('/api/v1/resources/books/all', methods=['GET']) -def api_all(): - return jsonify(books) - -#create an endpoint to return a single book -@app.route('/api/v1/resources/books', methods=['GET']) -def api_id(): - #check if an ID was provided as part of the URL - #if ID is provided, assign it to a variable - #if no ID is provided, display an error - if 'id' in request.args: - id = int(request.args['id']) - else: - return "Error: No id field provided. Please specify an id." - - #create an empty list for our results - results = [] - - #loop through the data and match results that fit the requested ID - #IDs are unique, but other fields might return many results - for book in books: - if book['id'] == id: - results.append(book) - - #use the jsonify function from Flask to convert our list of - #Python dictionaries to the JSON format - return jsonify(results) - -app.run() -``` - -> 那麼多樣化的輸出是一個問題嗎? - -取決於你想要做什麼。如果你想要一個具體的回應,那麼這是一個問題。如果你對於像是「生成任意3個地理問題」這樣的多樣化輸出沒有問題,那麼這不是問題。 - -### 使用溫度來變化您的輸出 - -好的,所以我們決定要限制輸出以使其更可預測,也就是更具決定性。我們該怎麼做呢? - -溫度是一個介於 0 和 1 之間的值,其中 0 是最具決定性的,1 是最具變化的。預設值是 0.7。讓我們看看在溫度設為 0.1 的情況下,兩次執行相同提示會發生什麼: - -> "為 Python Web API 產生程式碼" - -```python -#import necessary libraries -import flask -from flask import request, jsonify - -#create an instance of the Flask class -app = flask.Flask(__name__) - -#create an endpoint for the API -@app.route('/api/v1/endpoint', methods=['GET']) -def api_endpoint(): - #get the request data - data = request.get_json() - - #process the data - result = process_data(data) - - #return the result - return jsonify(result) - -#function to process the data -def process_data(data): - #process the data - result = {'result': 'success'} - - #return the result - return result - -#run the Flask app -if __name__ == '__main__': - app.run() - -``` - -再次執行提示會給我們這個結果: - -```python -#import necessary libraries -import flask -from flask import request, jsonify - -#create a Flask app -app = flask.Flask(__name__) - -#create a route for the API -@app.route('/api', methods=['GET']) -def api_call(): - #get the data from the request - data = request.get_json() - - #process the data - result = process_data(data) - - #return the result - return jsonify(result) - -#define the process_data function -def process_data(data): - #do something with the data - result = data + 1 - - #return the result - return result - -#run the app -if __name__ == '__main__': - app.run() - -``` - -這兩個輸出之間只有很小的差異。這次我們來做相反的事情,將溫度設置為0.9: - -```python -# 匯入必要的函式庫 -import flask -from flask import request, jsonify - -# 建立一個 Flask 應用程式 -app = flask.Flask(__name__) - -# 為 API 建立一個路由 -@app.route('/api', methods=['GET']) -def api_call(): - # 從請求中獲取資料 - data = request.args - - # 處理資料 - result = process_data(data) - - # 返回結果 - return jsonify(result) - -# 處理資料的函式 -def process_data(data): - # 對資料進行處理 - result = data + 1 - - # 返回結果 - return result - -# 執行應用程式 -if __name__ == '__main__': - app.run() - -``` - -並且第二次嘗試將溫度值設為 0.9: - -```python -import flask -from flask import request, jsonify - -# 建立 Flask 應用程式 -app = flask.Flask(__name__) -app.config['DEBUG'] = True - -# 建立一些測試資料 -書籍 = [ - {'id': 0, 'title': 'A Fire Upon The Deep', 'author': 'Vernor Vinge', 'first_sentence': 'The coldsleep itself was dreamless.', 'year_published': '1992'}, - {'id': 1, 'title': 'The Ones Who Walk Away From Omelas', 'author': 'Ursula K. Le Guin', 'first_sentence': 'With a clamor of bells that set the swallows soaring, the Festival of Summer came to the city Omelas, bright-towered by the sea.', 'published': '1973'}, - {'id': 2, 'title': 'Dhalgren', 'author': 'Samuel R. Delany', 'first_sentence': 'to wound the autumnal city.', 'published': '1975'} -] - -# 建立一個端點 -@app.route('/', methods=['GET']) -def home(): - return '''

歡迎來到我們的書籍 API!

''' - -@app.route('/api/v1/resources/books - -``` - -正如你所見,結果可能會非常多樣化。 - -> 請注意,還有更多參數可以更改以改變輸出,例如 top-k、top-p、重複懲罰、長度懲罰和多樣性懲罰,但這些不在本課程範圍內。 - -## 良好實踐 - -有許多實踐方法可以嘗試獲得你想要的結果。隨著你越來越多地使用提示,你會找到自己的風格。 - -此外,除了我們已經涵蓋的技術外,還有一些在提示 LLM 時需要考慮的良好實踐。 - -以下是一些值得考慮的良好做法: - -- **指定上下文**。上下文很重要,您能指定的越多(如領域、主題等),效果會越好。 -- 限制輸出。如果您想要特定數量的項目或特定長度,請指定。 -- **指定內容和方式**。記得要提到您想要什麼以及您想要的方式,例如"建立一個具有產品和客戶路由的 Python Web API,將其分成三個文件"。 -- **使用範本**。通常,您會希望使用來自公司資料來豐富您的提示。使用範本來做到這一點。範本可以有變數,您可以用實際資料替換這些變數。 -- **拼寫正確**。LLM 可能會給您正確的回應,但如果您拼寫正確,您會得到更好的回應。 - -## 作業 - -以下是使用 Flask 建構簡單 API 的 Python 程式碼: - -```python -from flask import Flask, request - -app = Flask(__name__) - -@app.route('/') -def hello(): - name = request.args.get('name', 'World') - return f'Hello, {name}!' - -if __name__ == '__main__': - app.run() -``` - -使用像 GitHub Copilot 或 ChatGPT 的 AI 助手,並應用「自我改進」技術來改進程式碼。 - -## 解決方案 - -請嘗試通過向程式碼添加合適的提示來解決這個任務。 - -> [!TIP] -> 針對提示進行措辭以要求改進,限制改進的數量是個好主意。你也可以要求以某種方式改進,例如架構、效能、安全性等。 - -[解決方案](../../python/aoai-solution.py?WT.mc_id=academic-105485-koreyst) - -## 知識檢查 - -為什麼我要使用 chain-of-thought 提示?給我看 1 個正確的回應和 2 個不正確的回應。 - -1. 教導 LLM 如何解決問題。 -1. B, 教導 LLM 找出程式碼中的錯誤。 -1. C, 指導 LLM 提出不同的解決方案。 - -A: 1,因為 chain-of-thought 是通過提供一系列步驟來向 LLM 展示如何解決問題,以及類似問題及其解決方法。 - -## 🚀 挑戰 - -你剛剛在作業中使用了自我改進技術。拿你建構的任何程式,考慮你想要應用的改進。現在使用自我改進技術來應用所提議的更改。你認為結果如何,更好還是更糟? - -## 很棒的工作!繼續學習 - -完成本課程後,請查看我們的[生成式 AI 學習集合](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst)以繼續提升您的生成式 AI 知識! - -前往第6課,我們將應用我們的提示工程知識來[建構文本生成應用程式](../../../06-text-generation-apps/translations/tw/README.md?WT.mc_id=academic-105485-koreyst) - diff --git a/06-text-generation-apps/translations/cn/README.md b/06-text-generation-apps/translations/cn/README.md deleted file mode 100644 index eb6d267854..0000000000 --- a/06-text-generation-apps/translations/cn/README.md +++ /dev/null @@ -1,658 +0,0 @@ -# 第六章:创建文本生成应用 - -[![Building Text Generation Applications](../../images/06-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson6-gh?WT.mc_id=academic-105485-koreyst) - -> _(点击该图片看本章导学视频)_ - -到目前为止,您已经通过本系列课程看到了如提示之类的核心概念,甚至是称为“提示工程”的整个学科。 您可以与通过使用如 ChatGPT、Office 365、Microsoft Power Platform 等工具结合提示来完成某些工作任务。 - -为了将这样的体验添加到应用程序中,您需要了解提示、补全等概念并选择要使用的相关库。 这正是您将在本章中学到的内容。 - -## 本章概述 - -在本章中,您将学习到: - -- 了解 openai 库及其核心概念。 -- 使用 openai 构建文本生成应用程序。 -- 了解如何使用提示、temperature 和 tokens 等概念来构建文本生成应用程序。 - -## 学习目标 - -在完成本章的学习,您将能够: - -- 解释什么是文本生成应用程序。 -- 使用 openai 构建文本生成应用程序。 -- 配置您的应用程序以使用更多或更少的 tokens,并更改 temperature,以获得不同的输出。 - -## 什么是文本生成应用 - -一般来说当您构建应用程序时,它具有某种界面,如下所示: - -- 基于命令。 控制台应用程序是典型的应用程序,您可以在其中键入命令并执行任务。 例如,“git”是一个基于命令的应用程序。 -- 用户界面(UI)。 某些应用程序具有图形用户界面 (GUI),您可以在其中单击按钮、输入文本、选择选项等。 - -### 传统控制台和 UI 应用程序的局限性 - -将其与输入命令的传统应用程序进行比较: - -- **存在局限性**。 您不能输入任意命令,只能键入该应用程序支持的命令。 -- **特定于某种语言**。 某些应用程序支持多种语言,但默认情况下,即使可以添加更多语言支持,该应用程序也是针对有限的语言构建的。 - -### 文本生成应用程序的优势 - -文本生成应用程序有何不同呢? - -在文本生成应用程序中,您拥有更大的灵活性,不再局限于一组特定的命令或特定的输入语言。 相反,您可以使用自然语言与应用程序交互。 另一个好处是,因为您已经在与经过大量信息库训练的数据源进行交互,而传统应用程序可能仅限于在数据库中存储的有限内容。 - -### 使用文本生成应用程序构建什么? - -您可以创建很多东西。 例如: - -- **聊天机器人** 回答有关您的公司及其产品等主题的问题的聊天机器人可能是一个不错的选择。 -- **协同助手** LLMs 擅长总结文本、从文本中获取见解、生成简历等文本等。 -- **代码助手** 根据您使用的编程语言模型,您可以构建一个代码助手来帮助您编写代码。 例如,您可以使用 GitHub Copilot 和 ChatGPT 等产品来帮助您编写代码。 - -## 如何入门? - -您需要找到一种与 LLMs 结合的方法,通常使用以下两种方法: - -- 使用 API,您将根据提示构建 Web 请求并返回生成的文本。 -- 使用库,库有助于封装 API 调用,使其更易于使用。 - -## Libraries/SDKs - -有一些比较通用的与 LLMs 整合的 librarys,例如: - -- **openai**,这个 librarys 可以轻松连接到您的模型并发送提示。 - -还有一些在更高级别的框架运行的 librarys,例如: - -- **Langchain**。 Langchain 支持 Python 比较通用的 library -- **Semantic Kernel**。 Semantic Kernel 是 Microsoft 提供的一个 library,支持 C#、Python 和 Java 语言。 - -## 人生中第一个 openai 应用 - -让我们看看如何构建人生中第一个 openai 应用,我们需要哪些 libraries,需要多少技能等等。 - -### 安装 openai - -有许多库可用于与 OpenAI 或 Azure OpenAI 交互。 还可以使用不同的编程语言,如 C#、Python、JavaScript、Java 等。 我们选择使用 `openai` Python 库,通过 `pip` 来安装它。 - -```bash -pip install openai -``` - -### 创建资源 - -您需要执行以下步骤: - -- 在 Azure [https://azure.microsoft.com/free/](https://azure.microsoft.com/free/?WT.mc_id=academic-105485-koreyst) 上创建帐户。 -- 访问 Azure Open AI。 进入到 [https://learn.microsoft.com/azure/ai-services/openai/overview#how-do-i-get-access-to-azure-openai](https://learn.microsoft.com/azure/ai-services/openai/overview#how-do-i-get-access-to-azure-openai?WT.mc_id=academic-105485-koreyst) 并请求访问权限。 - - > [!注意] - > 您需要申请访问 Azure Open AI Service 的访问。 - -- 安装 Python -- 已创建 Azure OpenAI 服务。 请参阅本指南,了解如何[创建资源](https://learn.microsoft.com/azure/ai-services/openai/how-to/create-resource?pivots=web-portal?WT.mc_id=academic-105485-koreyst). - -### 添加 API key and endpoint - -您需要告诉“openai”库要使用什么 API key。 要查找 API key ,请转到创建好的 Azure Open AI Service 中的 "Keys and Endpoint"部分并复制 "Key 1" 值。 - -![Keys and Endpoint resource blade in Azure Portal](https://learn.microsoft.com/azure/ai-services/openai/media/quickstarts/endpoint.png?WT.mc_id=academic-105485-koreyst) - -复制 Key 后,让我们调用库使用它。 - -> [!注意] -> 通过设置环境变量将 API Key 与代码分开是很重要的 -> -> - 为您的 API key 中设置 `OPENAI_API_KEY` -> - `export OPENAI_API_KEY='sk-...'` - -### 配置 Azure 环境 - -如果您使用 Azure OpenAI , 请按照以后步骤进行设置 - -```python -openai.api_type = 'azure' -openai.api_key = os.environ["OPENAI_API_KEY"] -openai.api_version = '2023-05-15' -openai.api_base = os.getenv("API_BASE") -``` - -以上设置的解释 - -- `api_type` 为 `azure`. 这告诉 librarys 使用 Azure Open AI 而不是 OpenAI。 -- `api_key`, 对应 Azure Portal 中的 API Key -- `api_version`, 这是您要使用的 API 版本。 在撰写本文时,最新版本是'2023-05-15'。 -- `api_base`, 这是 API 的 endpoint 。 您可以在 Azure Portal 中 API Key 下方找到它。 - -> [注意] > `os.getenv` 是一个读取环境变量的函数。 您可以使用它来读取“OPENAI_API_KEY”和“API_BASE”等环境变量。 在终端中或使用“dotenv”等库设置这些环境变量。 - -## 文字生成 - -生成文本的方法是使用“Completion”类。 这是一个例子: - -```python -prompt = "Complete the following: Once upon a time there was a" - -completion = openai.Completion.create(model="davinci-002", prompt=prompt) -print(completion.choices[0].text) -``` - -在上面的代码中,我们创建一个 completion 对象并传入我们要使用的模型和提示。 然后我们输出生成的文本。 - -### 聊天补全 - -到目前为止,您已经了解了我们如何使用“Completion”来生成文本。 但还有另一个更适合聊天机器人的类,称为“ChatCompletion”。 这是例子: - -```python -import openai - -openai.api_key = "sk-..." - -completion = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=[{"role": "user", "content": "Hello world"}]) -print(completion.choices[0].message.content) -``` - -下一章将详细介绍此功能。 - -## 练习 - 您的人生中首个文本生成应用 - -现在我们已经了解了如何设置和配置 openai,是时候构建您的第一个文本生成应用程序了。 请按照下列步骤操作: - -1. 创建虚拟环境并安装 openai: - - ```bash - python -m venv venv - source venv/bin/activate - pip install openai - ``` - - > [!注意] - > 如果您使用的是 Windows,请输入 `venv\Scripts\activate` 而不是 `source venv/bin/activate`。 - - > [!注意] - > 转至 [https://portal.azure.com/](https://portal.azure.com/?WT.mc_id=academic-105485-koreyst) 找到您的 Azure Open AI Key ,在资源中搜索“Open AI” `并选择“打开 AI 资源”,然后选择`Keys and Endpoint`并复制`Key 1` 值。 - -2. 创建 _app.py_ 文件并添加以下代码: - - ```python - import openai - - openai.api_key = "您的 openai key 或 Azure OpenAI key" - - openai.api_type = 'azure' - openai.api_version = '2023-05-15' - openai.api_base = "您的 Azure OpenAI Endpoint" - deployment_name = "部署模型的名字" - - # add your completion code - prompt = "Complete the following: Once upon a time there was a" - - # make completion - completion = openai.Completion.create(engine= deployment_name, model="davinci-002", prompt=prompt) - - # print response - print(completion.choices[0].text) - ``` - - > [!注意] - > 如果您使用的是 Azure Open AI,则需要将 `api_type` 设置为 `azure`,并将 `api_key` 设置为您的 Azure Open AI Key - - 您应该看到如下所示的输出结果: - - ```output - very unhappy _____. - - Once upon a time there was a very unhappy mermaid. - ``` - -## 不同类型的提示,针对不同的事情 - -现在您已经了解了如何使用提示生成文本。 您甚至可以启动并运行一个程序,可以对其进行修改以生成不同类型的文本。 - -提示可用于各种任务。 例如: - -- **生成一种类型的文本**。 例如,生成一首诗、测验题目等。 -- **查找信息**。 您可以使用提示来查找信息,例如以下示例'What does CORS mean in web development?'。 -- **生成代码**。 您可以使用提示来生成代码,例如开发用于验证电子邮件的正则表达式,或者为什么不生成整个程序,例如 web 应用? - -## 进阶学习:菜谱生成器 - -想象一下,你家里有食材,你想煮点东西。 为此,你需要一个食谱。 查找食谱的一种方法是使用搜索引擎,或者您可以使用 LLMs 来这样做。 - -你可以这样写一个提示: - -> "Show me 5 recipes for a dish with the following ingredients: chicken, potatoes, and carrots. Per recipe, list all the ingredients used" - -鉴于上述提示,您可能会得到类似于以下结果: - -```output -1. Roasted Chicken and Vegetables: -Ingredients: -- 4 chicken thighs -- 2 potatoes, cut into cubes -- 2 carrots, cut into cubes -- 2 tablespoons olive oil -- 2 cloves garlic, minced -- 1 teaspoon dried thyme -- 1 teaspoon dried oregano -- Salt and pepper, to taste - -1. Chicken and Potato Stew: -Ingredients: -- 2 tablespoons olive oil -- 1 onion, diced -- 2 cloves garlic, minced -- 2 chicken breasts, cut into cubes -- 2 potatoes, cut into cubes -- 2 carrots, cut into cubes -- 1 teaspoon dried oregano -- 1 teaspoon dried thyme -- 1 cup chicken broth -- Salt and pepper, to taste - -1. Chicken and Potato Bake: -Ingredients: -- 2 tablespoons olive oil -- 2 chicken breasts, cut into cubes -- 2 potatoes, cut into cubes -- 2 carrots, cut into cubes -- 1 onion, diced -- 2 cloves garlic, minced -- 1 teaspoon dried oregano -- 1 teaspoon dried thyme -- 1 cup chicken broth -- Salt and pepper, to taste - -1. Chicken and Potato Soup: -Ingredients: -- 2 tablespoons olive oil -- 1 onion, diced -- 2 cloves garlic, minced -- 2 chicken breasts, cut into cubes -- 2 potatoes, cut into cubes -- 2 carrots, cut into cubes -- 1 teaspoon dried oregano -- 1 teaspoon dried thyme -- 4 cups chicken broth -- Salt and pepper, to taste - -1. Chicken and Potato Hash: -Ingredients: -- 2 tablespoons olive oil -- 2 chicken breasts, cut into cubes -- 2 potatoes, cut into cubes -- 2 carrots, cut into cubes -- 1 onion, diced -- 2 cloves garlic, minced -- 1 teaspoon dried oregano -``` - -结果很好,我知道该怎么做菜了。但希望有更进一步的改进是: - -- 过滤掉我不喜欢或过敏的成分。 -- 制作一份购物清单,以防我家里没有所有原料。 - -针对上述情况,我们添加一个额外的提示: - -> "Please remove recipes with garlic as I'm allergic and replace it with something else. Also, please produce a shopping list for the recipes, considering I already have chicken, potatoes and carrots at home." - -现在你有了一个新的结果,即: - -```output -1. Roasted Chicken and Vegetables: -Ingredients: -- 4 chicken thighs -- 2 potatoes, cut into cubes -- 2 carrots, cut into cubes -- 2 tablespoons olive oil -- 1 teaspoon dried thyme -- 1 teaspoon dried oregano -- Salt and pepper, to taste - -1. Chicken and Potato Stew: -Ingredients: -- 2 tablespoons olive oil -- 1 onion, diced -- 2 chicken breasts, cut into cubes -- 2 potatoes, cut into cubes -- 2 carrots, cut into cubes -- 1 teaspoon dried oregano -- 1 teaspoon dried thyme -- 1 cup chicken broth -- Salt and pepper, to taste - -1. Chicken and Potato Bake: -Ingredients: -- 2 tablespoons olive oil -- 2 chicken breasts, cut into cubes -- 2 potatoes, cut into cubes -- 2 carrots, cut into cubes -- 1 onion, diced -- 1 teaspoon dried oregano -- 1 teaspoon dried thyme -- 1 cup chicken broth -- Salt and pepper, to taste - -1. Chicken and Potato Soup: -Ingredients: -- 2 tablespoons olive oil -- 1 onion, diced -- 2 chicken breasts, cut into cubes -- 2 potatoes, cut into cubes -- 2 carrots, cut into cubes -- 1 teaspoon dried oregano -- 1 teaspoon dried thyme -- 4 cups chicken broth -- Salt and pepper, to taste - -1. Chicken and Potato Hash: -Ingredients: -- 2 tablespoons olive oil -- 2 chicken breasts, cut into cubes -- 2 potatoes, cut into cubes -- 2 carrots, cut into cubes -- 1 onion, diced -- 1 teaspoon dried oregano - -Shopping List: -- Olive oil -- Onion -- Thyme -- Oregano -- Salt -- Pepper -``` - -That's your five recipes, with no garlic mentioned and you also have a shopping list considering what you already have at home. - -这是根据您的购买清单生成你的食谱(不包含大蒜) - -## 实战 - 打造一个菜谱生成器 - -根据场景,让我们编写代码来完整代码。为此,请按照下列步骤操作: - -1. 使用现有的 _app.py_ 文件作为起点 -2. 找到 `prompt` 变量并将其代码更改为以下内容: - - ```python - prompt = "Show me 5 recipes for a dish with the following ingredients: chicken, potatoes, and carrots. Per recipe, list all the ingredients used" - ``` - - 运行代码,您应该会看到类似以下内容的输出: - - ```output - -Chicken Stew with Potatoes and Carrots: 3 tablespoons oil, 1 onion, chopped, 2 cloves garlic, minced, 1 carrot, peeled and chopped, 1 potato, peeled and chopped, 1 bay leaf, 1 thyme sprig, 1/2 teaspoon salt, 1/4 teaspoon black pepper, 1 1/2 cups chicken broth, 1/2 cup dry white wine, 2 tablespoons chopped fresh parsley, 2 tablespoons unsalted butter, 1 1/2 pounds boneless, skinless chicken thighs, cut into 1-inch pieces - -Oven-Roasted Chicken with Potatoes and Carrots: 3 tablespoons extra-virgin olive oil, 1 tablespoon Dijon mustard, 1 tablespoon chopped fresh rosemary, 1 tablespoon chopped fresh thyme, 4 cloves garlic, minced, 1 1/2 pounds small red potatoes, quartered, 1 1/2 pounds carrots, quartered lengthwise, 1/2 teaspoon salt, 1/4 teaspoon black pepper, 1 (4-pound) whole chicken - -Chicken, Potato, and Carrot Casserole: cooking spray, 1 large onion, chopped, 2 cloves garlic, minced, 1 carrot, peeled and shredded, 1 potato, peeled and shredded, 1/2 teaspoon dried thyme leaves, 1/4 teaspoon salt, 1/4 teaspoon black pepper, 2 cups fat-free, low-sodium chicken broth, 1 cup frozen peas, 1/4 cup all-purpose flour, 1 cup 2% reduced-fat milk, 1/4 cup grated Parmesan cheese - - -One Pot Chicken and Potato Dinner: 2 tablespoons olive oil, 1 pound boneless, skinless chicken thighs, cut into 1-inch pieces, 1 large onion, chopped, 3 cloves garlic, minced, 1 carrot, peeled and chopped, 1 potato, peeled and chopped, 1 bay leaf, 1 thyme sprig, 1/2 teaspoon salt, 1/4 teaspoon black pepper, 2 cups chicken broth, 1/2 cup dry white wine - - -Chicken, Potato, and Carrot Curry: 1 tablespoon vegetable oil, 1 large onion, chopped, 2 cloves garlic, minced, 1 carrot, peeled and chopped, 1 potato, peeled and chopped, 1 teaspoon ground coriander, 1 teaspoon ground cumin, 1/2 teaspoon ground turmeric, 1/2 teaspoon ground ginger, 1/4 teaspoon cayenne pepper, 2 cups chicken broth, 1/2 cup dry white wine, 1 (15-ounce) can chickpeas, drained and rinsed, 1/2 cup raisins, 1/2 cup chopped fresh cilantro - ``` - - > NOTE, your LLM is nondeterministic, so you might get different results every time you run the program. - - Great, let's see how we can improve things. To improve things, we want to make sure the code is flexible, so ingredients and number of recipes can be improved and changed. - -3. 让我们按以下方式更改代码: - - ```python - no_recipes = input("No of recipes (for example, 5: ") - - ingredients = input("List of ingredients (for example, chicken, potatoes, and carrots: ") - - # interpolate the number of recipes into the prompt an ingredients - prompt = f"Show me {no_recipes} recipes for a dish with the following ingredients: {ingredients}. Per recipe, list all the ingredients used" - ``` - - Taking the code for a test run, could look like this: - - ```output - No of recipes (for example, 5: 3 - List of ingredients (for example, chicken, potatoes, and carrots: milk,strawberries - - -Strawberry milk shake: milk, strawberries, sugar, vanilla extract, ice cubes - -Strawberry shortcake: milk, flour, baking powder, sugar, salt, unsalted butter, strawberries, whipped cream - -Strawberry milk: milk, strawberries, sugar, vanilla extract - ``` - -### 通过添加过滤器和购物清单进行改进 - -我们现在有一个能够生成食谱的应用,并且它使用很方便,基于用户的输入和食谱的数量所使用的成分。 - -为了进一步改进它,添加以下内容: - -- **过滤掉成分**。 我们希望能够过滤掉我们不喜欢或过敏的成分。 要完成此更改,我们可以编辑现有提示并在其末尾添加过滤条件,如下所示: - - ```python - filter = input("Filter (for example, vegetarian, vegan, or gluten-free: ") - - prompt = f"Show me {no_recipes} recipes for a dish with the following ingredients: {ingredients}. Per recipe, list all the ingredients used, no {filter}" - ``` - - 上面代码中,我们在提示语末尾添加了 {filter},并让用户输入过滤值。 - - 现在运行程序的输入示例如下 - - ```output - No of recipes (for example, 5: 3 - List of ingredients (for example, chicken, potatoes, and carrots: onion,milk - Filter (for example, vegetarian, vegan, or gluten-free: no milk - - 1. French Onion Soup - - Ingredients: - - -1 large onion, sliced - -3 cups beef broth - -1 cup milk - -6 slices french bread - -1/4 cup shredded Parmesan cheese - -1 tablespoon butter - -1 teaspoon dried thyme - -1/4 teaspoon salt - -1/4 teaspoon black pepper - - Instructions: - - 2. In a large pot, sauté onions in butter until golden brown. - 3. Add beef broth, milk, thyme, salt, and pepper. Bring to a boil. - 4. Reduce heat and simmer for 10 minutes. - 5. Place french bread slices on soup bowls. - 6. Ladle soup over bread. - 7. Sprinkle with Parmesan cheese. - - 8. Onion and Potato Soup - - Ingredients: - - -1 large onion, chopped - -2 cups potatoes, diced - -3 cups vegetable broth - -1 cup milk - -1/4 teaspoon black pepper - - Instructions: - - 9. In a large pot, sauté onions in butter until golden brown. - 10. Add potatoes, vegetable broth, milk, and pepper. Bring to a boil. - 11. Reduce heat and simmer for 10 minutes. - 12. Serve hot. - - 13. Creamy Onion Soup - - Ingredients: - - -1 large onion, chopped - -3 cups vegetable broth - -1 cup milk - -1/4 teaspoon black pepper - -1/4 cup all-purpose flour - -1/2 cup shredded Parmesan cheese - - Instructions: - - 14. In a large pot, sauté onions in butter until golden brown. - 15. Add vegetable broth, milk, and pepper. Bring to a boil. - 16. Reduce heat and simmer for 10 minutes. - 17. In a small bowl, whisk together flour and Parmesan cheese until smooth. - 18. Add to soup and simmer for an additional 5 minutes, or until soup has thickened. - ``` - - 正如您所看到的,任何含有牛奶的食谱都已被过滤掉。 但是,如果您患有乳糖不耐症,您可能也想过滤掉含有奶酪的食谱,因此有必要明确一下。 - -- **制作购物清单**。 我们想根据家里已有的物品制定一份购物清单。 - - 对于此功能,我们可以尝试在一个提示中解决所有问题,也可以将其分成两个提示。 让我们尝试一下后一种方法。 在这里,我们建议添加一个额外的提示,但为了使其起作用,我们需要将前一个提示的结果作为上下文添加到后一个提示中。 - - 找到代码中打印第一个提示结果的部分,并添加以下代码: - - ```python - old_prompt_result = completion.choices[0].text - prompt = "Produce a shopping list for the generated recipes and please don't include ingredients that I already have." - - new_prompt = f"{old_prompt_result} {prompt}" - completion = openai.Completion.create(engine=deployment_name, prompt=new_prompt, max_tokens=1200) - - # print response - print("Shopping list:") - print(completion.choices[0].text) - ``` - - 请注意以下事项: - - 1. 我们通过将第一个提示的结果添加到新提示来构造一个新提示 - - ```python - new_prompt = f"{old_prompt_result} {prompt}" - ``` - - 2. 我们提出一个新的请求,但也考虑到我们在第一个提示中请求的 token 数量,所以这次我们设置 `max_tokens` 是 1200。 - - ```python - completion = openai.Completion.create(engine=deployment_name, prompt=new_prompt, max_tokens=1200) - ``` - - 运行代码,结果如下: - - ```output - No of recipes (for example, 5: 2 - List of ingredients (for example, chicken, potatoes, and carrots: apple,flour - Filter (for example, vegetarian, vegan, or gluten-free: sugar - Recipes: - or milk. - - -Apple and flour pancakes: 1 cup flour, 1/2 tsp baking powder, 1/2 tsp baking soda, 1/4 tsp salt, 1 tbsp sugar, 1 egg, 1 cup buttermilk or sour milk, 1/4 cup melted butter, 1 Granny Smith apple, peeled and grated - -Apple fritters: 1-1/2 cups flour, 1 tsp baking powder, 1/4 tsp salt, 1/4 tsp baking soda, 1/4 tsp nutmeg, 1/4 tsp cinnamon, 1/4 tsp allspice, 1/4 cup sugar, 1/4 cup vegetable shortening, 1/4 cup milk, 1 egg, 2 cups shredded, peeled apples - Shopping list: - -Flour, baking powder, baking soda, salt, sugar, egg, buttermilk, butter, apple, nutmeg, cinnamon, allspice - ``` - -## 改进您的设置 - -到目前为止,我们拥有的是可以运行的代码,但是我们应该做一些调整来进一步改进。 我们应该做的一些事情是: - -- **将 Key 与代码分开**,例如 API Key。Key 不属于代码,应存储在安全的位置。 为了将 Key 与代码分开,我们可以使用环境变量和像`python-dotenv` 这样的库去从文件中加载它们。 代码如下: - - 1. 创建一个包含以下内容的 `.env` 文件: - - ```bash - OPENAI_API_KEY=sk-... - ``` - - > 注意,对于 Azure,需要设置以下环境变量: - - ```bash - OPENAI_API_TYPE=azure - OPENAI_API_VERSION=2023-05-15 - OPENAI_API_BASE= - ``` - - 在代码中,您可以这样加载环境变量: - - ```python - from dotenv import load_dotenv - - load_dotenv() - - openai.api_key = os.environ["OPENAI_API_KEY"] - ``` - -- **关于 token 长度**。 我们应该考虑需要多少 token 来生成我们想要的文本。 token 需要花钱,因此在可能的情况下,我们应该尽量节约使用 token 的数量。 例如,我们可以对提示进行调整,以便我们可以使用更少的 token - - 要更改使用的 token,您可以使用 `max_tokens` 参数。 例如,如果您想使用 100 个 token,您可以这样做: - - ```python - completion = openai.Completion.create(model="davinci-002", prompt=prompt, max_tokens=100) - ``` - -**进行 temperature 调整试验**。 temperature 是我们到目前为止还没有提到的东西,但它是我们的程序如何执行的重要元素。 temperature 值越高,输出就越随机。 相反, temperature 值越低,输出就越可预测。 考虑一下您是否希望输出有所变化。 - - 要改变 temperature ,您可以使用 `temperature` 参数。 例如,如果您想使用 0.5 的 temperature ,您可以这样做: - - ```python - completion = openai.Completion.create(model="davinci-002", prompt=prompt, temperature=0.5) - ``` - -> 请注意,越接近 1.0,输出的变化就越多。 - -## 作业 - -对于此作业,选择要构建的内容。 - -以下是一些建议: - -- 调整食谱生成器应用程序以进一步改进它。 尝试一下温度值和提示,看看你能想出什么。 -- 建立一个“学习伙伴”。 这个应用程序应该能够回答有关某个主题(例如 Python)的问题,您可能会收到诸如“Python 中的某个主题是什么?”之类的提示,或者您可能会收到一个提示,显示某个主题的代码等。 -- 历史机器人,让历史变得生动起来,指导机器人扮演某个历史人物,并向其询问有关其生活和时代的问题。 - -## 解决方案 - -### 学习伙伴 - -下面是一个基础提示,看看如何使用它并根据自己的喜好进行调整。 - -```text -- "You're an expert on the Python language - - Suggest a beginner lesson for Python in the following format: - - Format: - - concepts: - - brief explanation of the lesson: - - exercise in code with solutions" -``` - -### 历史机器人 - -以下是您可能会使用的一些提示: - -```text -- "You are Abe Lincoln, tell me about yourself in 3 sentences, and respond using grammar and words like Abe would have used" -- "You are Abe Lincoln, respond using grammar and words like Abe would have used: - - Tell me about your greatest accomplishments, in 300 words:" -``` - -## 知识检查 - -temperature 有什么作用? - -1. 它控制输出的随机程度。 -2. 它控制响应的大小。 -3. 它控制使用多少 tokens 。 - -A: 1 - -## 🚀 知识拓展 - -完成作业时,尝试改变 temperature ,尝试将其设置为 0、0.5 和 1。请记住,0 是变化最少的,1 是变化最多的,看看什么值最适合您的应用? - -## 继续学习 - -想要了解有关创建文本生成应用的更多信息? 转至[进阶学习的页面](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) 查找有关此主章节的其他学习资源。 - -前往第七章,我们将学习[构建聊天应用程序](../../../07-building-chat-applications/translations/cn/README.md?WT.mc_id=academic-105485-koreyst) diff --git a/06-text-generation-apps/translations/ja-jp/README.md b/06-text-generation-apps/translations/ja-jp/README.md deleted file mode 100644 index 208d3e0f0d..0000000000 --- a/06-text-generation-apps/translations/ja-jp/README.md +++ /dev/null @@ -1,657 +0,0 @@ -# テキスト生成アプリケーションの構築 - -[![Building Text Generation Applications](../../images/06-lesson-banner.png?WT.mc_id=academic-105485-yoterada)](https://aka.ms/gen-ai-lesson6-gh?WT.mc_id=academic-105485-koreyst) - -> _(上記の画像をクリックすると、レッスン・ビデオを表示します)_ - -これまでのレッスンを通じて、プロンプトの基本的な概念や、「プロンプト・エンジニアリング」と呼ぶテクニックについて学んできました。ChatGPT、Office 365、Microsoft Power Platform  など、プロンプトで操作可能な多くのツールは、皆様が何かを成し遂げるためのサポートを行います。 - -皆様のアプリケーションに、このような機能を追加するためには、プロンプトや Completion といった概念を理解し、使用するライブラリを選択する必要があります。この章では、それらを具体的に学んでいきます。 - -## はじめに - -このレッスンでは、下記の内容について説明します。 - -- OpenAI のライブラリとその基本概念について学習します -- OpenAI を使用して、テキスト生成アプリを構築します -- プロンプト、温度、トークンなどの概念を使用してテキスト生成アプリを構築する方法を理解します - -## 学習目標 - -このレッスンを修了すると、下記を理解できます: - -- テキスト生成アプリケーションとは何かを説明できる -- OpenAI を使用してテキスト生成アプリを構築する -- 使用するトークン数を増減させたり、温度を変更し、さまざまな出力が得られるようにアプリを構成する - -## テキスト生成アプリについて - -通常、アプリを作る際、下記のようなインターフェースがあります: - -- コマンドベース:コンソール・アプリは典型的な例で、コマンドを入力するとタスクを実行できます。例えば、git はコマンド・ベースのアプリです -- ユーザー・インターフェース(UI):一部のアプリは、ボタンをクリックしたり、テキストを入力したり、オプションを選択したりするグラフィカル・ユーザーインターフェース(GUI)を持っています。 - -### コンソールや UI アプリには制限があります - -コマンドを入力するコマンド・ベースのアプリと比較してください。 - -- **入力可能なコマンド数は有限**:任意のコマンドを入力できるわけではなく、アプリがサポートしているコマンドのみ入力可能です。 -- **言語特有**:一部のアプリはまれに多言語をサポートしていますが、たとえ追加言語のサポートがされている場合でも、基本的には特定の言語用にアプリは実装されています。 - -### テキスト生成アプリの利点 - -それでは、テキスト生成アプリはどう違うのでしょうか? - -テキスト生成アプリは、コマンド数や特定の入力言語に制約されず、より柔軟に操作でき、自然言語を使ってアプリと対話できます。さらに、既に大量のテキストや音声データの情報から訓練されたデータ・ソースを利用しているため、従来のアプリがデータベースの内容に限定されるのとは対照的に、利用可能な情報量が大幅に増えます。 - -### テキスト生成アプリで何が作れるのでしょうか? - -作れるものはたくさんあります。例えば: - -- **チャットボット**:所属する会社や、提供する製品について質問に答えられるチャットボットは有用です -- **ヘルパー**:LLM は、テキストの要約、テキストから知見の抽出、履歴書作成のように、様々なテキスト生成で利用できます -- **コード・アシスタント**:使用する言語モデルによっては、プログラミング・コードの作成を支援するコード・アシスタントも作れます。例えば、GitHub Copilot や ChatGPT のような製品を使って、コード作成の支援もできます。 - -## どこから始めればよいのでしょうか? - -まず、LLM と統合する方法を理解する必要があります。これには通常、以下の 2 つのアプローチが含まれます: - -- API の使用:プロンプトを含む HTTP (RESTful) リクエストを作成し、生成されたテキストを取得 -- ライブラリの使用:上記の API 呼び出しより簡単に利用可能で、API 呼び出しを隠蔽したライブラリを使用 - -## ライブラリ/SDK - -LLM を操作するために、いくつかの有名なライブラリがあります: - -- **OpenAI** このライブラリを使用すると、モデルに対する接続とプロンプトの送信が簡単になります - -また、より高レベルで動作するライブラリもあります: - -- **Langchain**:Langchain はよく知られており、Python をサポートしています -- **Semantic Kernel**:Semantic Kernel は、C#、Python、Java をサポートする Microsoft 純正のライブラリです - -## OpenAI を使用した最初のアプリ - -以降で、最初のアプリを実装する方法、実装に必要なライブラリ、どの位のコード量が必要かなど、ご確認ください。 - -### OpenAI のインストール - -OpenAI や Azure OpenAI と対話するためのライブラリはたくさんあります。また、C#、Python、JavaScript、Java など、さまざまなプログラミング言語で利用可能です。今回は、Python 用の `OpenAI` ライブラリを使用します。そして、ライブラリのインストールには `pip` を使用します。 - -```bash -pip install openai -``` - -### リソースの作成 - -下記の手順に従い操作を行なってください: - -- Azure のアカウントを作成します。[https://azure.microsoft.com/free/](https://azure.microsoft.com/free/?WT.mc_id=academic-105485-yoterada) -- Azure OpenAI へのアクセス権限を取得します。[https://learn.microsoft.com/azure/ai-services/openai/overview#how-do-i-get-access-to-azure-openai](https://learn.microsoft.com/azure/ai-services/openai/overview#how-do-i-get-access-to-azure-openai?WT.mc_id=academic-105485-yoterada) からアクセス申請を提出します - - > [!NOTE] - > 本記事の執筆時には、Azure OpenAI へのアクセスを申請する必要があります。 - -- Python をインストールします。 -- Azure OpenAI Service リソースを作成します。[リソースの作成方法](https://learn.microsoft.com/azure/ai-services/openai/how-to/create-resource?pivots=web-portal?WT.mc_id=academic-105485-yoterada)については、こちらのガイドをご参照ください。 - -### API キーとエンドポイントを取得 - -ここで、`OpenAI` ライブラリに対してどの API キーを使用するか指定します。API キーを見つけるためには、Azure OpenAI リソースの「Keys and Endpoint」セクションに移動し、「Key 1」の値をコピーしてください。 - -![Keys and Endpoint resource blade in Azure Portal](https://learn.microsoft.com/azure/ai-services/openai/media/quickstarts/endpoint.png?WT.mc_id=academic-105485-yoterada) - -キーをコピーしたので、それをライブラリで利用できるように指定します。 - -> [!NOTE] -> API キーはコード中に直接書き込まずに管理すべきです。下記のように環境変数を使用して設定できます。 -> -> - 環境変数 `OPENAI_API_KEY` に API キーを設定します -> `export OPENAI_API_KEY='sk-...'` - -### Azure の設定 - -Azure OpenAI を使用している場合、下記の設定を追加で行います: - -```python -openai.api_type = 'azure' -openai.api_key = os.environ["OPENAI_API_KEY"] -openai.api_version = '2023-05-15' -openai.api_base = os.getenv("API_BASE") -``` - -上記は、それぞれ下記の設定を行っています: - -- `api_type`を`azure`に設定します。これにより、ライブラリは OpenAI ではなく Azure OpenAI に接続します。 -- `api_key`は、Azure Portal で取得した API キーを設定します。 -- `api_version`は、使用する API のバージョンです。執筆時点での最新バージョンは`2023-05-15`です。 -- `api_base` は API のエンドポイントです。これは、Azure Portal の API キーの下側に記載されています。 - -> [!NOTE] > `os.getenv` は環境変数を読み取る関数です。`OPENAI_API_KEY` や `API_BASE` などの環境変数を読み取るために使用します。これらの環境変数は、ターミナルで設定するか、もしくは `dotenv` のようなライブラリを使用して設定します。 - -> [!NOTE] -> 訳者追記 -> 訳者が確認した所、記載している OpenAI の Python ライブラリが古い 0.28.1 で記載されています。 -> 現在はより新しい、OpenAI Python 1.x がリリースされています。 -> 新しい 1.x のライブラリへバージョン・アップするため際には、こちらの [Migrating to the OpenAI Python API library 1.x](https://learn.microsoft.com/azure/ai-services/openai/how-to/migration?WT.mc_id=academic-105485-yoterada) をご参照ください - -## テキストの生成 - -`Completion` クラスを使用してテキストを生成する方法をご覧ください。下記にサンプルを記述しています: - -```python -prompt = "次の文を完成させてください: むかしむかしある所に" - -completion = openai.Completion.create(model="davinci-002", prompt=prompt) -print(completion.choices[0].text) -``` - -上記のコードでは、Completion オブジェクトを作成し、使用するモデルに対してプロンプトを渡しています。その後、生成されたテキストを出力しています。 - -### Chat completions - -上記では、`Completion` クラスを使用してテキストを生成する方法を見てきました。 -しかし、チャット・ボット用には、より適した `ChatCompletion` という別のクラスが用意されています。下記にサンプルを記述しています。 - -```python -import openai - -openai.api_key = "sk-..." - -completion = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=[{"role": "user", "content": "こんにちは世界 (Hello world)"}]) -print(completion.choices[0].message.content) -``` - -この機能の詳細は、次の章で詳しく説明します。 - -## エクササイズ - 初めてのテキスト生成アプリ - -OpenAI のセットアップと設定方法を学んだので、次に初めてのテキスト生成アプリを実装してみましょう。アプリの実装は、下記の手順で行ないます: - -1. 仮想環境を作成し、OpenAI をインストールします: - -```bash -python -m venv venv -source venv/bin/activate -pip install openai -``` - -> [!NOTE] -> Windows 環境で行う場合は、`source venv/bin/activate` の代わりに`venv\Scripts\activate` を入力してください。 - -> [!NOTE] -> Azure OpenAI キーは、[https://portal.azure.com/](https://portal.azure.com/?WT.mc_id=academic-105485-yoterada) から `OpenAI` を検索し、`OpenAI Resource` を選択してください。その後 `Keys and Endpoint` を選択し、`Key 1` の値をコピーてください。 - -1. _app.py_ ファイルを作成し、下記のコードを記述してください: - -```python -import openai - -openai.api_key = "" - -openai.api_type = 'azure' -openai.api_version = '2023-05-15' -openai.api_base = "" -deployment_name = "<デプロイ名>" - -# ここに Completion コードを追加 -prompt = "次の文を完成させてください: むかしむかし、あるところに" - -# Completion を作成 -completion = openai.Completion.create(engine= deployment_name, model="davinci-002", prompt=prompt) - -# レスポンスを出力 -print(completion.choices[0].text) -``` - -> [!NOTE] -> Azure OpenAI を使用している場合、`api_type` として `azure` を設定し、`api_key` に Azure OpenAI キーを設定する必要があります。 - -下記のような結果が表示されるはずです: - -```output -おじいさんとおばあさんが住んでいました。 - -(※ 上記の回答内容は、訳者が日本語環境での実行にあわせて変更しました。英語で実行した場合と異なる結果が得られます。) -``` - -## さまざまな種類のプロンプト、さまざまな用途 - -これまで、プロンプトを使用してテキストを生成する方法を見てきました。色々な種類のテキストを生成するため、今動いているアプリケーションに対して修正・変更を加えテキスト生成機能を追加できます。 - -プロンプトは様々なタスクに使用できます。例えば: - -- **様々なテキストを生成**:詩やクイズの質問などを生成できます -- **情報の検索**:「Web 開発における CORS の意味は何ですか?」のような情報を検索するためにプロンプトを使用できます -- **コード生成**:電子メール・アドレスの検証に使用する正規表現を作成したり、Web アプリケーションのようなプログラム全体のコードを生成するためにプロンプトを使用できます。 - -## より実用的な使用例:料理レシピの作成 - -家に食材があって、何か料理を作りたい場合を想像してください。そのためにレシピが必要です。適切なレシピを見つける方法の一つに検索エンジンがありますが、LLM(大規模言語モデル)もレシピを出力できます。 - -たとえば、下記のようなプロンプトを記述できます: - -> 「鶏肉、じゃがいも、にんじん」を使った料理のレシピを 5 つ教えてください。レシピごとに使用する全ての食材をリストしてください。 - -上記のプロンプトを使用すると、以下のようなレスポンスが得られるかもしれません: - -```output -1. ローストチキンと野菜: -材料: -- チキンのもも肉 4 枚 -- じゃがいも 2 個、角切り -- にんじん 2 本、角切り -- オリーブオイル大さじ 2 杯 -- にんにく 2 片、みじん切り -- ドライタイム小さじ 1 杯 -- ドライオレガノ小さじ 1 -- 塩と胡椒、適量 - -2. チキンとポテトのシチュー: -材料: -- オリーブオイル大さじ 2 杯 -- 玉ねぎ 1 個、みじん切り -- にんにく 2 片、みじん切り -- チキンの胸肉 2 枚、角切り -- じゃがいも 2 個、角切り -- にんじん 2 本、角切り -- ドライオレガノ小さじ 1 -- ドライタイム小さじ 1 -- チキンブロス 1 カップ -- 塩と胡椒、適量 - -3. チキンとポテトのベイク: -材料: -- オリーブオイル大さじ 2 -- チキンの胸肉 2 枚、角切り -- じゃがいも 2 個、角切り -- にんじん 2 本、角切り -- 玉ねぎ 1 個、みじん切り -- にんにく 2 片、みじん切り -- ドライオレガノ小さじ 1 -- ドライタイム小さじ 1 -- チキンブロス 1 カップ -- 塩と胡椒、適量 - -4. チキンとポテトのスープ: -材料: -- オリーブオイル大さじ2 -- 玉ねぎ 1 個、みじん切り -- にんにく 2 片、みじん切り -- チキンの胸肉 2 枚、角切り -- じゃがいも 2 個、角切り -- にんじん 2 本、角切り -- ドライオレガノ小さじ 1 -- ドライタイム小さじ 1 -- チキンブロス 4 カップ -- 塩と胡椒、適量 - -5. チキンとポテトのハッシュ: -材料: -- オリーブオイル大さじ 2 -- チキンの胸肉 2 枚、角切り -- じゃがいも 2 個、角切り -- にんじん 2 本、角切り -- 玉ねぎ 1 個、みじん切り -- にんにく 2 片、みじん切り -- ドライオレガノ小さじ1 -``` - -この結果は素晴らしいですね、食材からどのような料理を作れるかわかりました。ここで役に立つ、改善点2つをご覧ください: - -- 好きでない食材やアレルギーのある食材を除外する -- 家に全ての食材がない場合に備え、買い物リストを作成する - -上記に対して、追加のプロンプトを作成しましょう: - -> "ニンニク・アレルギーがあるので、ニンニクを含むレシピを除外し、別のものに置き換えてください。また、家にはすでに鶏肉、じゃがいも、にんじんがあります、それ以外でレシピに必要な買い物リストを作成してください。" - -これで、下記のような新しい結果が得られます - -```output -1. ローストチキンと野菜: -材料: -- チキンのもも肉 4 枚 -- じゃがいも 2 個、角切り -- にんじん 2 本、角切り -- オリーブオイル大さじ 2 -- ドライタイム小さじ 1 -- ドライオレガノ小さじ 1 -- 塩と胡椒、適量 - -2. チキンとポテトのシチュー: -材料: -- オリーブオイル大さじ 2 -- 玉ねぎ 1 個、みじん切り -- チキンの胸肉 2 枚、角切り -- じゃがいも 2 個、角切り -- にんじん 2 本、角切り -- ドライオレガノ小さじ 1 -- ドライタイム小さじ 1 -- チキンブロス 1 カップ -- 塩と胡椒、適量 - -3. チキンとポテトのベイク: -材料: -- オリーブオイル大さじ 2 -- チキンの胸肉 2 枚、角切り -- じゃがいも 2 個、角切り -- にんじん 2 本、角切り -- 玉ねぎ 1 個、みじん切り -- ドライオレガノ小さじ 1 -- ドライタイム小さじ 1 -- チキンブロス 1 カップ -- 塩と胡椒、適量 - -4. チキンとポテトのスープ: -材料: -- オリーブオイル大さじ 2 -- 玉ねぎ 1 個、みじん切り -- チキンの胸肉 2 枚、角切り -- じゃがいも 2 個、角切り -- にんじん 2 本、角切り -- ドライオレガノ小さじ 1 -- ドライタイム小さじ 1 -- チキンブロス 4 カップ -- 塩と胡椒、適量 - -5. チキンとポテトのハッシュ: -材料: -- オリーブオイル大さじ 2 -- チキンの胸肉 2 枚、角切り -- じゃがいも 2 個、角切り -- にんじん 2 本、角切り -- 玉ねぎ 1 個、みじん切り -- ドライオレガノ小さじ 1 - -買い物リスト: -- オリーブオイル -- 玉ねぎ -- タイム -- オレガノ -- 塩 -- 胡椒 -``` - -以上が新しい、5 つのレシピで、ニンニクは記載されておらず、家にすでにあるものを考慮し、買い物リストも記載されています。 - -## 演習 - レシピ作成を構築する - -シナリオを一通り試したところで、そのシナリオに合わせたコードを実装してみましょう。下記の手順に従い実装してください。 - -1. 既存の _app.py_ ファイルを利用します。 -2. `prompt`という変数を探し、下記のようにコードを修正してください。 - -```python -prompt = f"鶏肉、じゃがいも、にんじんを使った料理のレシピを 5 つ教えてください。レシピごとに、使用するすべての食材をリストしてください" -``` - -コードを実行すると、下記のような結果が表示されます。 - -```output --鶏肉とじゃがいも、人参のシチュー: サラダ油大さじ3, 玉ねぎ1個(みじん切り), ニンニク2片(みじん切り), 人参1本(皮をむいてみじん切り), じゃがいも1個(皮をむいてみじん切り), ローリエ1枚, タイム1枝, 塩小さじ1/2, 黒コショウ小さじ1/4, 鶏ガラスープ1 1/2カップ, ドライホワイトワイン1/2カップ, パセリ(みじん切り)大さじ2, 無塩バター大さじ2, 骨なし鶏もも肉1 1/2ポンド(1インチ角に切る) - --オーブン焼き鶏肉とじゃがいも、人参: エキストラバージンオリーブオイル大さじ3, ディジョンマスタード大さじ1, ローズマリー(みじん切り)大さじ1, タイム(みじん切り)大さじ1, ニンニク4片(みじん切り), 小さめの赤じゃがいも1 1/2ポンド(4等分に切る), 人参1 1/2ポンド(縦に4等分に切る), 塩小さじ1/2, 黒コショウ小さじ1/4, 丸鶏1羽(4ポンド) - --鶏肉、じゃがいも、人参のキャセロール: クッキングスプレー, 大きめの玉ねぎ1個(みじん切り), ニンニク2片(みじん切り), 人参1本(皮をむいてみじん切り), じゃがいも1個(皮をむいてみじん切り), タイム(乾燥)小さじ1/2, 塩小さじ1/4, 黒コショウ小さじ1/4, 脂肪無添加、低ナトリウムの鶏ガラスープ2カップ, 冷凍グリーンピース1カップ, 中力粉1/4カップ, 低脂肪牛乳1カップ, パルメザンチーズ(おろしたもの)1/4カップ - --ワンポットチキンとじゃがいもディナー: オリーブオイル大さじ2, 骨なし鶏もも肉1ポンド(1インチ角に切る), 大きめの玉ねぎ1個(みじん切り), ニンニク3片(みじん切り), 人参1本(皮をむいてみじん切り), じゃがいも1個(皮をむいてみじん切り), ローリエ1枚, タイム1枝, 塩小さじ1/2, 黒コショウ小さじ1/4, 鶏ガラスープ2カップ, ドライホワイトワイン1/2カップ - --鶏肉、じゃがいも、人参のカレー: サラダ油大さじ1, 大きめの玉ねぎ1個(みじん切り), ニンニク2片(みじん切り), 人参1本(皮をむいてみじん切り), じゃがいも1個(皮をむいてみじん切り), コリアンダー(パウダー)小さじ1, クミン(パウダー)小さじ1, ターメリック(パウダー)小さじ1/2, ジンジャー(パウダー)小さじ1/2, ケイエンペッパー小さじ1/4, 鶏ガラスープ2カップ, ドライホワイトワイン1/2カップ, ヒヨコ豆1缶(15オンス、水切り), レーズン1/2カップ, シラントロ(みじん切り)1/2カップ -``` - -> 注意: LLM  は非決定的(非確実)なので、プログラムを実行するたびに上記とは異なる結果が得られるかもしれません。 - -さてそれでは、どうすれば改善できるのかを見てみましょう。改善するために、コードに柔軟性を持たせ、材料やレシピの数を変更できるようにします。 - -1. 以下のようにコードを修正してください。 - -```python -no_recipes = input("レシピの数を入力してください(例:5): ") - -ingredients = input("食材のリストを入力してください(例:鶏肉、じゃがいも、人参): ") - -# レシピの数と材料をプロンプトに挿入 -prompt = f"{ingredients} を使った料理のレシピを {no_recipes} つ教えてください。レシピごとに、使用するすべての食材をリストしてください" -``` - -このコードを実行すると、下記のような結果が得られます。 - -```output -レシピの数を入力してください(例:5): 3 -材料のリストを入力してください(例:鶏肉、じゃがいも、人参): ミルク、イチゴ - --イチゴのミルクシェイク: ミルク、イチゴ、砂糖、バニラエキス、氷 --イチゴのショートケーキ: ミルク、小麦粉、ベーキングパウダー、砂糖、塩、無塩バター、イチゴ、ホイップクリーム --イチゴミルク: ミルク、イチゴ、砂糖、バニラエキス -``` - -### フィルターと買い物リストを追加して改善する - -上記で、入力に基づいてレシピを生成し、その数や使用する食材を柔軟に変更できるアプリが完成しました。 - -さらに改善するために、下記の機能を追加したいと思います。 - -- **材料のフィルタリング**。嫌いな食材やアレルギーのある食材をフィルタリングできるようにしたいと考えています。これを実現するために、既存のプロンプトを編集し、下記のようにフィルター条件をプロンプトの最後に追加してください。 - -```python -filter = input("フィルター(例:ベジタリアン、ビーガン、グルテンフリー): ") - -prompt = f"{ingredients} を使った料理のレシピを {no_recipes} つ教えてください。レシピごとに、使用するすべての食材をリストしてください。ただし、{filter}は除外してください。" -``` - -上記では、プロンプトの最後に `{filter}` を追加し、利用者からフィルターの値も取得しています。 - -プログラムを実行すると、下記のような入出力結果が得られます。 - -```output -レシピの数を入力してください(例:5): 3 -材料のリストを入力してください(例:鶏肉、じゃがいも、人参): 玉ねぎ、ミルク -フィルター(例:ベジタリアン、ビーガン、グルテンフリー): ミルクなし - -1. フレンチオニオンスープ -材料: --大きな玉ねぎ1個、スライス --ビーフブロス3カップ --ミルク1カップ --フレンチブレッド6枚 --パルメザンチーズ、おろしたもの1/4カップ --バター大さじ1 --乾燥タイム小さじ1 --塩小さじ1/4 --黒コショウ小さじ1/4 - -作り方: -1. 大きな鍋で、バターで玉ねぎをゴールデンブラウンになるまで炒めます。 -2. ビーフブロス、ミルク、タイム、塩、コショウを加えて沸騰させます。 -3. 火を弱めて10分間煮ます。 -4. スープボウルにフレンチブレッドのスライスを置きます。 -5. スープをパンの上にかけます。 -6. パルメザンチーズを振りかけます。 - -2. 玉ねぎとじゃがいものスープ -材料: --大きな玉ねぎ1個、みじん切り --じゃがいも2カップ、さいの目に切る --野菜ブロス3カップ --ミルク1カップ --黒コショウ小さじ1/4 - -作り方: -1. 大きな鍋で、バターで玉ねぎをゴールデンブラウンになるまで炒めます。 -2. じゃがいも、野菜ブロス、ミルク、コショウを加えて沸騰させます。 -3. 火を弱めて10分間煮ます。 -4. 熱々で提供します。 - -3. クリーミーオニオンスープ -材料: --大きな玉ねぎ1個、みじん切り --野菜ブロス3カップ --ミルク1カップ --黒コショウ小さじ1/4 --中力粉1/4カップ --パルメザンチーズ、おろしたもの1/2カップ - -作り方: -1. 大きな鍋で、バターで玉ねぎをゴールデンブラウンになるまで炒めます。 -2. 野菜ブロス、ミルク、コショウを加えて沸騰させます。 -3. 火を弱めて10分間煮ます。 -4. 小さなボウルで、中力粉とパルメザンチーズを滑らかになるまで混ぜます。 -5. スープに加えてさらに5分間煮ます、またはスープがとろみを帯びるまで。 -``` - -ご覧頂いたの通り、ミルクを含むレシピは全てフィルタリングされています。しかし、もし乳製品を摂取すると体調が悪くなる方であれば、チーズを含むレシピもフィルタリングしたいとお考えになるでしょう。その場合は、明確化にフィルタリングで指示する必要があります。 - -- **買い物リストを作成** 次に、家にすでにあるものを考慮して、買い物リストを作成したいと考えています。 - -この機能は、一つのプロンプト内に全てを記述できますし、二つのプロンプトに分けて記述できます。ここでは後者の二つに分けるアプローチを採用します。ここでは、追加のプロンプトを提案していますが、それを機能させるためには、前のプロンプトの結果を後ろのプロンプトのコンテキストに追加する必要があります。 - -最初のプロンプトの結果を出力するコードを見つけ、下記のコードを追加します: - -```python -old_prompt_result = completion.choices[0].text -prompt = "生成されたレシピの買い物リストを作成してください。ただし、すでに持っている食材は含めないでください。" - -new_prompt = f"{old_prompt_result} {prompt}" -completion = openai.Completion.create(engine=deployment_name, prompt=new_prompt, max_tokens=1200) - -# レスポンスを出力 -print("買い物リスト:") -print(completion.choices[0].text) -``` - -以下の点にご注意ください: - -1. 最初のプロンプトの結果を新しいプロンプトに追加して、新しいプロンプトを作成します: - -```python -new_prompt = f"{old_prompt_result} {prompt}" -``` - -1. 新しいリクエストを作成しますが、最初のプロンプトで要求したトークン数も考慮に入れて、今回は `max_tokens` を 1200 とします。 - -```python -completion = openai.Completion.create(engine=deployment_name, prompt=new_prompt, max_tokens=1200) -``` - -このコードを実行すると、下記のような結果が得られます: - -```output -レシピの数(例えば、5): 2 -食材のリスト(例えば、チキン、ポテト、キャロット): リンゴ、小麦粉 -フィルター(例えば、ベジタリアン、ビーガン、グルテンフリー): 砂糖 - --リンゴと小麦粉のパンケーキ: 小麦粉1カップ、ベーキングパウダー1/2小さじ、ベーキングソーダ1/2小さじ、塩1/4小さじ、砂糖1大さじ、卵1個、バターミルクまたはサワーミルク1カップ、溶かしたバター1/4カップ、皮を剥いてすりおろしたグラニースミスリンゴ1個 --リンゴのフリッター: 小麦粉1-1/2カップ、ベーキングパウダー1小さじ、塩1/4小さじ、ベーキングソーダ1/4小さじ、ナツメグ1/4小さじ、シナモン1/4小さじ、オールスパイス1/4小さじ、砂糖1/4カップ、植物性ショートニング1/4カップ、ミルク1/4カップ、卵1個、皮を剥いて細かく刻んだリンゴ2カップ - -買い物リスト: --小麦粉、ベーキングパウダー、ベーキングソーダ、塩、砂糖、卵、バターミルク、バター、リンゴ、ナツメグ、シナモン、オールスパイス -``` - -> [!NOTE] -> 訳者追記 -> 上記の買い物リストの結果は、自宅にある食材(リンゴ、小麦粉)も含まれています。これらを除外するには、プロンプトを修正する必要があります。これは追加課題として、ご自身で実装してみてください。 - -## セットアップを改善しましょう - -現状で、動作するコードができていますが、さらに改善するためにはいくつかの調整が必要です。以下に、改善すべき点をいくつか挙げてみます。 - -- **API キーの機密情報をコードから分離する** 機密情報はコードに含めるべきではなく、安全な場所に保存すべきです。機密情報をコードから分離するために、環境変数や `python-dotenv` のようなライブラリを使ってファイルから読み込めます。実装は下記のようになります: - -1. 下記の内容を含む `.env` ファイルを作成します: - -```bash -OPENAI_API_KEY=sk-... -``` - -> ご注意:Azure を使用する場合は、下記の環境変数を設定する必要があります: - -```bash -OPENAI_API_TYPE=azure -OPENAI_API_VERSION=2023-05-15 -OPENAI_API_BASE= -``` - -コード上では、下記のように記述し環境変数から読み込めます: - -```python -from dotenv import load_dotenv - -load_dotenv() - -openai.api_key = os.environ["OPENAI_API_KEY"] -``` - -- **トークンの長さ** 生成するテキストに必要なトークン数を考慮してください。トークンは増えれば増えるほど費用がかかるため、可能な限りトークン数を節約するようにしましょう。例えば、プロンプトをどのように表現すればトークンを少なくできるかご検討ください。 - -扱うトークン数を変更するには、`max_tokens` パラメータを使用します。例えば、100 トークンを使用したい場合は、以下のようにします: - -```python -completion = openai.Completion.create(model="davinci-002", prompt=prompt, max_tokens=100) -``` - -- **温度 (Temperature)** これまで触れていなかった温度ですが、プログラムの実行結果に大きな影響を与えます。温度が高いほど(値が 1 に近いほど)、出力はランダムになります。逆に、温度値が低いほど(値が 0 に近いほど)、出力結果は予測可能になります。ご自身のアプリで出力にバリエーションが必要かどうかを考えてください。 - -温度を変更するには、`temperature` パラメータを使用します。例えば、温度を 0.5 に設定したい場合は、以下のようにします: - -```python -completion = openai.Completion.create(model="davinci-002", prompt=prompt, temperature=0.5) -``` - -> 注意:1.0 に近づくほど、出力のバリエーションが大きくなります。 - -## 課題 - -この課題で何を作るかは任意です。 - -下記にいくつかの例を挙げます: - -- レシピ生成アプリを微調整してさらに改善しましょう。温度の値やプロンプトを変えて、どのような結果が得られるかお試しください。 -- 「勉強仲間」を作ってみましょう。このアプリは、例えば Python に関する質問に対して答えます。「Python の "特定のトピック" は何ですか?」といったプロンプトを受け付けたり、「"特定のトピック" に関するコードを教えてください」といったプロンプトを受け付けられます。 -- 「歴史ボット」を作って、歴史を鮮やかに再現してみましょう。ボットに特定の歴史的人物を演じさせ、その人物の生涯やその時代について質問してみましょう。 - -## 解法 - -### 勉強仲間 - -下記は、あくまでも参考のプロンプトですので、使い方を確認し、お好みに合わせて微調整してください。 - -```text -- "あなたは Python 言語のエキスパートです - -下記の形式で Python の初心者用レッスンを提案してください: - -形式: - - 概念: - - レッスンの簡単な説明: - - 解答付きのコード演習" -``` - -### 歴史ボット - -ここで、使用できるプロンプトをいくつか紹介します。 - -```text -- "あなたはエイブラハム・リンカーンです。あなたご自身について 3 つの文章を使って教えてください、そしてエイブラハムが使ったであろう文法と言葉を使って答えてください" -- "あなたはエイブラハム・リンカーンです。エイブラハムが使ったであろう文法と言葉を使って答えてください: - - あなたの最大の功績について、300文字で教えてください" -``` - -## 知識チェック - -概念「温度」は何を行うのでしょうか? - -1. 出力のランダム性を制御します。 -2. 応答の規模を制御します。 -3. 使用するトークンの数を制御します。 - -## 🚀 チャレンジ - -課題に取り組む際、温度を 0、0.5、1 に変えて設定してみてください。0 が最も変化が少なく、1 が最も大きくなります。ぜひ覚えておいてください、皆様のアプリにとって最適な値は何ですか? - -## お疲れ様でした! 学習を続ける - -このレッスン修了後、[生成 AI 学習コレクション](https://aka.ms/genai-collection?WT.mc_id=academic-105485-yoterada) をチェックして、Generative AI の知識をレベルアップさせましょう。 - -レッスン 7 では、[チャットアプリケーションの構築](../../../07-building-chat-applications/translations/ja-jp/README.md?WT.mc_id=academic-105485-yoterada)方法を見ていきます。 diff --git a/06-text-generation-apps/translations/ko/README.md b/06-text-generation-apps/translations/ko/README.md deleted file mode 100644 index 638ed12137..0000000000 --- a/06-text-generation-apps/translations/ko/README.md +++ /dev/null @@ -1,653 +0,0 @@ -# 텍스트 생성 애플리케이션 개발 - -[![Building Text Generation Applications](../../images/06-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson6-gh?WT.mc_id=academic-105485-koreyst) - -> _(위의 이미지를 클릭하여 이 수업의 동영상을 시청하세요.)_ - -지금까지 이 커리큘럼을 통해 프롬프트와 "프롬프트 엔지니어링"이라는 전체적인 개념과 같은 핵심 개념들을 보셨습니다. ChatGPT, Office 365, Microsoft Power Platform 등 다양한 도구들은 프롬프트를 사용하여 어떤 작업을 수행하는 데 도움을 주는 것을 확인하실 수 있습니다. - -앱에 이러한 경험을 추가하려면 프롬프트, completion(완성어) 및 작업할 라이브러리와 관련된 개념을 이해해야 합니다. 이것이 바로 이번 장에서 배우게 될 내용입니다. - -## 소개 - -이번 장에서는 다음을 하게 될 것입니다: - -- OpenAI 라이브러리와 그 핵심 개념에 대해 학습합니다. -- OpenAI를 사용하여 텍스트 생성 앱을 개발합니다. -- 프롬프트, temperature(언어 생성 모델에서 생성된 텍스트의 다양성을 조절하는 하이퍼파라미터), 토큰과 같은 개념을 사용하여 텍스트 생성 앱을 구축하는 방법을 이해합니다. - -## 학습 목표 - -이 장을 학습하고 나면 다음을 할 수 있게 될 것입니다: - -- 텍스트 생성 앱이 무엇인지를 설명합니다. -- OpenAI를 사용하여 텍스트 생성 앱을 개발합니다. -- 앱을 더 많거나 더 적은 토큰을 사용하도록 구성하고, 또한 다양한 출력을 얻기 위해 temperature를 조절합니다. - -## 텍스트 생성 애플리케이션이 무엇인가요? - -일반적으로 앱을 개발할 때 다음과 같은 종류의 인터페이스가 있습니다: - -- 명령 기반(Command-based): 콘솔 앱은 명령을 입력하고 해당 작업을 수행하는 전형적인 앱입니다. 예를 들어 git은 명령 기반 앱의 한 예입니다. -- 사용자 인터페이스 (UI): 일부 앱은 그래픽 사용자 인터페이스 (GUI)를 갖고 있습니다. 여기서는 버튼을 클릭하거나 텍스트를 입력하고 옵션을 선택하는 등의 작업을 수행합니다. - -### 콘솔 및 UI 앱은 제한적입니다 - -명령 기반 앱에서 명령을 입력하는 것과 비교해보세요: - -- **제한적입니다**. 모든 명령을 입력할 수 있는 것이 아니라, 앱이 지원하는 명령만 입력할 수 있습니다. -- **특정 언어에 한정됩니다**. 일부 앱은 여러 언어를 지원하지만, 기본적으로 앱은 특정 언어를 위해 구축되며, 추가적인 언어 지원이 가능한 경우에도 해당 언어에 한정됩니다. - -### 텍스트 생성 앱의 장점 - -그렇다면 텍스트 생성 앱은 어떻게 다를까요? - -텍스트 생성 앱에서는 더 많은 유연성을 가지며, 일련의 명령이나 특정 입력 언어에 제한되지 않습니다. 대신에 자연어를 사용하여 앱과 상호작용할 수 있습니다. 또 다른 장점은 이미 방대한 정보 코퍼스(말뭉치)로 훈련된 데이터 소스와 상호작용하고 있기 때문에, 전통적인 앱이 데이터베이스에 제한되는 것과는 달리 더 많은 가능성을 가집니다. - -### 텍스트 생성 앱으로 무엇을 만들 수 있을까요? - -많은 것들을 만들 수 있습니다. 예를 들어: - -- **챗봇**. 회사와 제품에 대한 질문에 답변하는 챗봇을 만들 수 있습니다. -- **도움이 되는 도구**. LLM은 텍스트 요약, 텍스트에서 통찰력 얻기, 이력서와 같은 텍스트 생성 등에 뛰어납니다. -- **코드 어시스턴트**. 사용하는 언어 모델에 따라 코드 작성을 도와주는 코드 어시스턴트를 만들 수 있습니다. 예를 들어, GitHub Copilot과 ChatGPT와 같은 제품을 사용하여 코드 작성을 도와줄 수 있습니다. - -## 어떻게 시작할 수 있을까요? - -LLM과 통합하는 방법을 찾아야 합니다. 일반적으로 다음 두 가지 접근 방식을 사용합니다: - -- API 사용. 여기서는 프롬프트와 함께 웹 요청을 생성하고 생성된 텍스트를 받아옵니다. -- 라이브러리 사용. 라이브러리는 API 호출을 캡슐화하고 사용하기 쉽게 만들어줍니다. - -## 라이브러리/SDK - -LLM과 작업하기 위해 몇 가지 잘 알려진 라이브러리가 있습니다: - -- **openai**, 이 라이브러리는 모델에 연결하고 프롬프트를 보내는 것을 쉽게 만들어줍니다. - -또한 다음과 같이 더 높은 수준에서 작동하는 라이브러리도 있습니다: - -- **Langchain**. Langchain은 잘 알려진 라이브러리로, Python을 지원합니다. -- **Semantic Kernel**. Semantic Kernel은 Microsoft에서 지원하는 C#, Python, Java 등의 언어를 지원하는 라이브러리입니다. - -## openai를 사용한 앱 개발 - -우리는 앱을 만드는 방법, 앱을 만들기 위해 어떤 라이브러리가 얼마나 필요한지 등을 살펴보겠습니다. - -### openai 설치 - -OpenAI 또는 Azure OpenAI와 상호작용하기 위한 다양한 라이브러리가 있습니다. 그리고 이러한 다양한 라이브러리에서는 C#, Python, JavaScript, Java 등 다양한 프로그래밍 언어를 사용할 수도 있습니다. 저희는 `openai` Python 라이브러리를 사용하기로 선택했으므로, `pip`를 사용하여 설치하겠습니다. - -```bash -pip install openai -``` - -### 리소스 생성 - -다음 단계를 수행해야 합니다: - -- Azure에 계정을 만듭니다. [https://azure.microsoft.com/free/](https://azure.microsoft.com/free/?WT.mc_id=academic-105485-koreyst)에서 계정을 만드세요. -- Azure Open AI에 액세스 권한을 얻으세요. [https://learn.microsoft.com/azure/ai-services/openai/overview#how-do-i-get-access-to-azure-openai](https://learn.microsoft.com/azure/ai-services/openai/overview#how-do-i-get-access-to-azure-openai?WT.mc_id=academic-105485-koreyst)로 이동하여 액세스를 요청하세요. - -> [!NOTE] -> 작성 시점에서 Azure Open AI에 대한 액세스 신청이 필요합니다. - -- Python을 설치합니다. -- Azure OpenAI 서비스 리소스를 생성했습니다. [리소스 생성 가이드](https://learn.microsoft.com/azure/ai-services/openai/how-to/create-resource?pivots=web-portal?WT.mc_id=academic-105485-koreyst)를 참조하세요. - -### API 키와 엔드포인트 찾기 - -이 시점에서 `openai` 라이브러리에 사용할 API 키를 알려야 합니다. API 키를 찾으려면 Azure Open AI 리소스의 "Keys and Endpoint" 섹션으로 이동하고 "Key 1" 값을 복사하세요. - -![Azure Portal의 Keys and Endpoint 리소스 블레이드](https://learn.microsoft.com/azure/ai-services/openai/media/quickstarts/endpoint.png?WT.mc_id=academic-105485-koreyst) - -이제 이 정보를 복사했으니, 라이브러리에 사용하도록 지시합시다. - -> [!NOTE] -> API 키를 코드와 분리하는 것이 좋습니다. 이를 위해 환경 변수를 사용할 수 있습니다. -> -> - 환경 변수 `OPENAI_API_KEY`를 API 키로 설정하세요. -> `export OPENAI_API_KEY='sk-...'` - -### Azure 설정 구성 - -Azure Open AI를 사용하는 경우, 다음과 같이 설정을 구성할 수 있습니다: - -```python -openai.api_type = 'azure' -openai.api_key = os.environ["OPENAI_API_KEY"] -openai.api_version = '2023-05-15' -openai.api_base = os.getenv("API_BASE") -``` - -위에서는 다음과 같이 설정하고 있습니다: - -- `api_type`을 `azure`로 설정합니다. 이는 라이브러리가 OpenAI가 아닌 Azure Open AI를 사용하도록 지시합니다. -- `api_key`는 Azure Portal에서 찾을 수 있는 API 키입니다. -- `api_version`은 사용하려는 API의 버전입니다. 작성 시점에서 최신 버전은 `2023-05-15`입니다. -- `api_base`는 API의 엔드포인트입니다. API 키 옆에 Azure Portal에서 찾을 수 있습니다. - -> [!NOTE] > `os.getenv`는 환경 변수를 읽는 함수입니다. `OPENAI_API_KEY`와 `API_BASE`와 같은 환경 변수를 읽을 때 사용할 수 있습니다. 이러한 환경 변수는 터미널에서 설정하거나 `dotenv`와 같은 라이브러리를 사용하여 설정할 수 있습니다. - -## 텍스트 생성 - -텍스트를 생성하는 방법은 `Completion` 클래스를 사용하는 것입니다. 다음은 예시입니다: - -```python -prompt = "Complete the following: Once upon a time there was a" - -completion = openai.Completion.create(model="davinci-002", prompt=prompt) -print(completion.choices[0].text) -``` - -위의 코드에서는 완성 객체를 생성하고 사용할 모델과 프롬프트를 전달합니다. 그런 다음 생성된 텍스트를 출력합니다. - -### 채팅 completions - -지금까지 `Completion`을 사용하여 텍스트를 생성하는 방법을 살펴보았습니다. 그러나 챗봇에 더 적합한 `ChatCompletion`이라는 다른 클래스도 있습니다. 다음은 사용 예시입니다: - -```python -import openai - -openai.api_key = "sk-..." - -completion = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=[{"role": "user", "content": "Hello world"}]) -print(completion.choices[0].message.content) -``` - -이 기능에 대한 자세한 내용은 다음 장에서 다룰 예정입니다. - -## 연습 - 첫 번째 텍스트 생성 앱 - -이제 openai를 설정하고 구성하는 방법을 배웠으니, 첫 번째 텍스트 생성 앱을 만들어 보는 시간입니다. 앱을 만들기 위해 다음 단계를 따르세요: - -1. 가상 환경을 생성하고 openai를 설치하세요: - - ```bash - python -m venv venv - source venv/bin/activate - pip install openai - ``` - -> [!NOTE] -> Windows를 사용하는 경우 `source venv/bin/activate` 대신 `venv\Scripts\activate`를 입력하세요. - -> [!NOTE] -> Azure Open AI 키를 찾으려면 [https://portal.azure.com/](https://portal.azure.com/?WT.mc_id=academic-105485-koreyst)로 이동하여 `Open AI`를 검색한 다음 `Open AI 리소스`를 선택하고 `Keys and Endpoint`를 선택하고 `Key 1` 값을 복사하세요. - -1. _app.py_ 파일을 생성하고 다음 코드를 추가하세요: - - ```python - import openai - - openai.api_key = "" - - openai.api_type = 'azure' - openai.api_version = '2023-05-15' - openai.api_base = "" - deployment_name = "" - - # add your completion code - prompt = "Complete the following: Once upon a time there was a" - - # make completion - completion = openai.Completion.create(engine= deployment_name, model="davinci-002", prompt=prompt) - - # print response - print(completion.choices[0].text) - ``` - -> [!NOTE] -> Azure Open AI를 사용하는 경우, `api_type`을 `azure`로 설정하고 `api_key`를 Azure Open AI 키로 설정해야 합니다. - - 다음과 같은 출력을 볼 수 있어야 합니다: - - ```output - very unhappy _____. - - Once upon a time there was a very unhappy mermaid. - ``` - -## 서로 다른 유형의 프롬프트를, 서로 다른 용도에 맞게 - -이제 프롬프트를 사용하여 텍스트를 생성하는 방법을 보았습니다. 심지어 다양한 유형의 텍스트를 생성하기 위해 수정하고 변경할 수 있는 프로그램이 작동 중입니다. - -프롬프트는 다양한 작업에 사용할 수 있습니다. 예를 들어: - -- **텍스트 유형 생성**. 시, 퀴즈 질문 등을 생성할 수 있습니다. -- **정보 조회**. '웹 개발에서 CORS는 무엇을 의미하는가?'와 같은 정보를 조회하는 데 프롬프트를 사용할 수 있습니다. -- **코드 생성**. 이메일 유효성 검사에 사용되는 정규식 또는 웹 앱과 같은 전체 프로그램을 생성하는 데 프롬프트를 사용할 수 있습니다. - -## 더 실용적인 사용 사례: 레시피 생성기 - -가정에 있는 재료로 무언가 요리하고 싶을 때 레시피가 필요합니다. 레시피를 찾는 방법은 검색 엔진을 사용하거나 LLM을 사용할 수도 있습니다. - -다음과 같은 프롬프트를 작성할 수 있습니다: - -> "닭, 감자, 당근을 사용한 요리 5개를 보여주세요. 각 레시피에 사용된 모든 재료를 나열해주세요." - -위의 프롬프트를 주면 다음과 유사한 응답을 받을 수 있습니다: - -```output -1. Roasted Chicken and Vegetables: -Ingredients: -- 4 chicken thighs -- 2 potatoes, cut into cubes -- 2 carrots, cut into cubes -- 2 tablespoons olive oil -- 2 cloves garlic, minced -- 1 teaspoon dried thyme -- 1 teaspoon dried oregano -- Salt and pepper, to taste - -2. Chicken and Potato Stew: -Ingredients: -- 2 tablespoons olive oil -- 1 onion, diced -- 2 cloves garlic, minced -- 2 chicken breasts, cut into cubes -- 2 potatoes, cut into cubes -- 2 carrots, cut into cubes -- 1 teaspoon dried oregano -- 1 teaspoon dried thyme -- 1 cup chicken broth -- Salt and pepper, to taste - -3. Chicken and Potato Bake: -Ingredients: -- 2 tablespoons olive oil -- 2 chicken breasts, cut into cubes -- 2 potatoes, cut into cubes -- 2 carrots, cut into cubes -- 1 onion, diced -- 2 cloves garlic, minced -- 1 teaspoon dried oregano -- 1 teaspoon dried thyme -- 1 cup chicken broth -- Salt and pepper, to taste - -4. Chicken and Potato Soup: -Ingredients: -- 2 tablespoons olive oil -- 1 onion, diced -- 2 cloves garlic, minced -- 2 chicken breasts, cut into cubes -- 2 potatoes, cut into cubes -- 2 carrots, cut into cubes -- 1 teaspoon dried oregano -- 1 teaspoon dried thyme -- 4 cups chicken broth -- Salt and pepper, to taste - -5. Chicken and Potato Hash: -Ingredients: -- 2 tablespoons olive oil -- 2 chicken breasts, cut into cubes -- 2 potatoes, cut into cubes -- 2 carrots, cut into cubes -- 1 onion, diced -- 2 cloves garlic, minced -- 1 teaspoon dried oregano -``` - -이 결과는 훌륭합니다. 무엇을 요리할지 알게 되었습니다. 이제 유용한 개선 사항은 다음과 같습니다: - -- 싫어하는 재료나 알레르기가 있는 재료를 걸러내기. -- 재료가 부족한 경우를 대비해 쇼핑 목록을 작성하기. - -위의 경우에 대해 추가적인 프롬프트를 추가해 보겠습니다: - -> "대파를 대체할 다른 재료로 대체하고, 알레르기가 있는 사람을 위해 마늘이 포함된 레시피를 제거해주세요. 또한, 닭고기, 감자, 당근은 이미 집에 있으므로 쇼핑 목록을 작성해주세요." - -이제 새로운 결과가 있습니다: - -```output -1. Roasted Chicken and Vegetables: -Ingredients: -- 4 chicken thighs -- 2 potatoes, cut into cubes -- 2 carrots, cut into cubes -- 2 tablespoons olive oil -- 1 teaspoon dried thyme -- 1 teaspoon dried oregano -- Salt and pepper, to taste - -2. Chicken and Potato Stew: -Ingredients: -- 2 tablespoons olive oil -- 1 onion, diced -- 2 chicken breasts, cut into cubes -- 2 potatoes, cut into cubes -- 2 carrots, cut into cubes -- 1 teaspoon dried oregano -- 1 teaspoon dried thyme -- 1 cup chicken broth -- Salt and pepper, to taste - -3. Chicken and Potato Bake: -Ingredients: -- 2 tablespoons olive oil -- 2 chicken breasts, cut into cubes -- 2 potatoes, cut into cubes -- 2 carrots, cut into cubes -- 1 onion, diced -- 1 teaspoon dried oregano -- 1 teaspoon dried thyme -- 1 cup chicken broth -- Salt and pepper, to taste - -4. Chicken and Potato Soup: -Ingredients: -- 2 tablespoons olive oil -- 1 onion, diced -- 2 chicken breasts, cut into cubes -- 2 potatoes, cut into cubes -- 2 carrots, cut into cubes -- 1 teaspoon dried oregano -- 1 teaspoon dried thyme -- 4 cups chicken broth -- Salt and pepper, to taste - -5. Chicken and Potato Hash: -Ingredients: -- 2 tablespoons olive oil -- 2 chicken breasts, cut into cubes -- 2 potatoes, cut into cubes -- 2 carrots, cut into cubes -- 1 onion, diced -- 1 teaspoon dried oregano - -Shopping List: -- Olive oil -- Onion -- Thyme -- Oregano -- Salt -- Pepper -``` - -이것이 당신의 다섯 가지 레시피입니다. 마늘은 포함되지 않았으며, 집에 이미 있는 재료를 고려한 쇼핑 목록도 있습니다. - -## 연습 - 레시피 생성기 만들기 - -이제 우리가 시나리오를 플레이했으니, 해당 시나리오와 일치하는 코드를 작성해 봅시다. 다음 단계를 따라주세요: - -1. 기존의 _app.py_ 파일을 시작점으로 사용합니다. -2. `prompt` 변수를 찾아서 다음과 같이 코드를 변경합니다: - - ```python - prompt = "Show me 5 recipes for a dish with the following ingredients: chicken, potatoes, and carrots. Per recipe, list all the ingredients used" - ``` - - 코드를 실행하면 다음과 유사한 출력이 표시됩니다: - - ```output - -Chicken Stew with Potatoes and Carrots: 3 tablespoons oil, 1 onion, chopped, 2 cloves garlic, minced, 1 carrot, peeled and chopped, 1 potato, peeled and chopped, 1 bay leaf, 1 thyme sprig, 1/2 teaspoon salt, 1/4 teaspoon black pepper, 1 1/2 cups chicken broth, 1/2 cup dry white wine, 2 tablespoons chopped fresh parsley, 2 tablespoons unsalted butter, 1 1/2 pounds boneless, skinless chicken thighs, cut into 1-inch pieces - -Oven-Roasted Chicken with Potatoes and Carrots: 3 tablespoons extra-virgin olive oil, 1 tablespoon Dijon mustard, 1 tablespoon chopped fresh rosemary, 1 tablespoon chopped fresh thyme, 4 cloves garlic, minced, 1 1/2 pounds small red potatoes, quartered, 1 1/2 pounds carrots, quartered lengthwise, 1/2 teaspoon salt, 1/4 teaspoon black pepper, 1 (4-pound) whole chicken - -Chicken, Potato, and Carrot Casserole: cooking spray, 1 large onion, chopped, 2 cloves garlic, minced, 1 carrot, peeled and shredded, 1 potato, peeled and shredded, 1/2 teaspoon dried thyme leaves, 1/4 teaspoon salt, 1/4 teaspoon black pepper, 2 cups fat-free, low-sodium chicken broth, 1 cup frozen peas, 1/4 cup all-purpose flour, 1 cup 2% reduced-fat milk, 1/4 cup grated Parmesan cheese - - -One Pot Chicken and Potato Dinner: 2 tablespoons olive oil, 1 pound boneless, skinless chicken thighs, cut into 1-inch pieces, 1 large onion, chopped, 3 cloves garlic, minced, 1 carrot, peeled and chopped, 1 potato, peeled and chopped, 1 bay leaf, 1 thyme sprig, 1/2 teaspoon salt, 1/4 teaspoon black pepper, 2 cups chicken broth, 1/2 cup dry white wine - - -Chicken, Potato, and Carrot Curry: 1 tablespoon vegetable oil, 1 large onion, chopped, 2 cloves garlic, minced, 1 carrot, peeled and chopped, 1 potato, peeled and chopped, 1 teaspoon ground coriander, 1 teaspoon ground cumin, 1/2 teaspoon ground turmeric, 1/2 teaspoon ground ginger, 1/4 teaspoon cayenne pepper, 2 cups chicken broth, 1/2 cup dry white wine, 1 (15-ounce) can chickpeas, drained and rinsed, 1/2 cup raisins, 1/2 cup chopped fresh cilantro - ``` - - > 참고: LLM은 결정론적이지 않으므로 프로그램을 실행할 때마다 다른 결과를 얻을 수 있습니다. - - 좋아요, 어떻게 개선할 수 있는지 알아봅시다. 개선하기 위해 코드가 유연하도록 만들어야 합니다. 따라서 재료와 레시피 수를 개선하고 변경할 수 있어야 합니다. - -3. 다음과 같이 코드를 변경해 봅시다: - - ```python - no_recipes = input("No of recipes (for example, 5: ") - - ingredients = input("List of ingredients (for example, chicken, potatoes, and carrots: ") - - # interpolate the number of recipes into the prompt an ingredients - prompt = f"Show me {no_recipes} recipes for a dish with the following ingredients: {ingredients}. Per recipe, list all the ingredients used" - ``` - - 코드를 테스트 실행하면 결과가 다음과 같을 수 있습니다: - - ```output - No of recipes (for example, 5: 3 - List of ingredients (for example, chicken, potatoes, and carrots: milk,strawberries - - -Strawberry milk shake: milk, strawberries, sugar, vanilla extract, ice cubes - -Strawberry shortcake: milk, flour, baking powder, sugar, salt, unsalted butter, strawberries, whipped cream - -Strawberry milk: milk, strawberries, sugar, vanilla extract - ``` - -### 필터와 쇼핑 목록 추가로 개선하기 - -이제 우리는 레시피를 생성할 수 있는 작동하는 앱을 가지고 있으며, 이 앱은 사용자의 입력에 의존하여 레시피 수와 사용되는 재료를 유연하게 조정할 수 있습니다. - -그리고 더 개선하기 위해 다음을 추가하고 싶습니다: - -- **재료 필터링**. 싫어하는 재료나 알레르기 반응이 있는 재료를 필터링할 수 있도록 하고 싶습니다. 이 변경을 위해 기존의 프롬프트를 수정하여 끝에 필터 조건을 추가할 수 있습니다: - - ```python - filter = input("Filter (for example, vegetarian, vegan, or gluten-free: ") - - prompt = f"Show me {no_recipes} recipes for a dish with the following ingredients: {ingredients}. Per recipe, list all the ingredients used, no {filter}" - ``` - - 위에서는 프롬프트 끝에 `{filter}`를 추가하고 사용자로부터 필터 값을 입력받도록 합니다. - - 프로그램을 실행하는 예시 입력은 다음과 같을 수 있습니다: - - ```output - No of recipes (for example, 5: 3 - List of ingredients (for example, chicken, potatoes, and carrots: onion,milk - Filter (for example, vegetarian, vegan, or gluten-free: no milk - - 1. French Onion Soup - - Ingredients: - - -1 large onion, sliced - -3 cups beef broth - -1 cup milk - -6 slices french bread - -1/4 cup shredded Parmesan cheese - -1 tablespoon butter - -1 teaspoon dried thyme - -1/4 teaspoon salt - -1/4 teaspoon black pepper - - Instructions: - - 1. In a large pot, sauté onions in butter until golden brown. - 2. Add beef broth, milk, thyme, salt, and pepper. Bring to a boil. - 3. Reduce heat and simmer for 10 minutes. - 4. Place french bread slices on soup bowls. - 5. Ladle soup over bread. - 6. Sprinkle with Parmesan cheese. - - 2. Onion and Potato Soup - - Ingredients: - - -1 large onion, chopped - -2 cups potatoes, diced - -3 cups vegetable broth - -1 cup milk - -1/4 teaspoon black pepper - - Instructions: - - 1. In a large pot, sauté onions in butter until golden brown. - 2. Add potatoes, vegetable broth, milk, and pepper. Bring to a boil. - 3. Reduce heat and simmer for 10 minutes. - 4. Serve hot. - - 3. Creamy Onion Soup - - Ingredients: - - -1 large onion, chopped - -3 cups vegetable broth - -1 cup milk - -1/4 teaspoon black pepper - -1/4 cup all-purpose flour - -1/2 cup shredded Parmesan cheese - - Instructions: - - 1. In a large pot, sauté onions in butter until golden brown. - 2. Add vegetable broth, milk, and pepper. Bring to a boil. - 3. Reduce heat and simmer for 10 minutes. - 4. In a small bowl, whisk together flour and Parmesan cheese until smooth. - 5. Add to soup and simmer for an additional 5 minutes, or until soup has thickened. - ``` - - 보시다시피, 우유가 들어간 레시피는 필터링되었습니다. 그러나 유당 불내증이 있다면 치즈가 들어간 레시피도 필터링하고 싶을 수 있으므로 명확하게 해야합니다. - -- **쇼핑 목록 생성**. 우리는 이미 집에 있는 재료를 고려하여 쇼핑 목록을 생성하고 싶습니다. - - 이 기능을 위해 우리는 하나의 프롬프트에서 모든 것을 해결하려고 시도할 수도 있고, 두 개의 프롬프트로 나눠서 해결할 수도 있습니다. 후자의 접근 방식을 시도해 보겠습니다. 여기서는 추가적인 프롬프트를 추가하는 것을 제안하고 있습니다. 그러나 이를 위해 이전 프롬프트의 결과를 후자의 프롬프트에 컨텍스트로 추가해야 합니다. - - 코드에서 첫 번째 프롬프트의 결과를 출력하는 부분을 찾아서 다음 코드를 아래에 추가하세요: - - ```python - old_prompt_result = completion.choices[0].text - prompt = "Produce a shopping list for the generated recipes and please don't include ingredients that I already have." - - new_prompt = f"{old_prompt_result} {prompt}" - completion = openai.Completion.create(engine=deployment_name, prompt=new_prompt, max_tokens=1200) - - # print response - print("Shopping list:") - print(completion.choices[0].text) - ``` - - 다음 사항을 주목하세요: - - 1. 첫 번째 프롬프트의 결과를 새로운 프롬프트에 추가하여 새로운 프롬프트를 구성합니다: - - ```python - new_prompt = f"{old_prompt_result} {prompt}" - ``` - - 2. 첫 번째 프롬프트에서 요청한 토큰 수를 고려하여 새로운 요청을 만듭니다. 이번에는 `max_tokens`을 1200으로 설정합니다. - - ```python - completion = openai.Completion.create(engine=deployment_name, prompt=new_prompt, max_tokens=1200) - ``` - - Taking this code for a spin, we now arrive at the following output: - - ```output - No of recipes (for example, 5: 2 - List of ingredients (for example, chicken, potatoes, and carrots: apple,flour - Filter (for example, vegetarian, vegan, or gluten-free: sugar - - - -Apple and flour pancakes: 1 cup flour, 1/2 tsp baking powder, 1/2 tsp baking soda, 1/4 tsp salt, 1 tbsp sugar, 1 egg, 1 cup buttermilk or sour milk, 1/4 cup melted butter, 1 Granny Smith apple, peeled and grated - -Apple fritters: 1-1/2 cups flour, 1 tsp baking powder, 1/4 tsp salt, 1/4 tsp baking soda, 1/4 tsp nutmeg, 1/4 tsp cinnamon, 1/4 tsp allspice, 1/4 cup sugar, 1/4 cup vegetable shortening, 1/4 cup milk, 1 egg, 2 cups shredded, peeled apples - Shopping list: - -Flour, baking powder, baking soda, salt, sugar, egg, buttermilk, butter, apple, nutmeg, cinnamon, allspice - ``` - -## 설정 개선하기 - -지금까지 작성한 코드는 작동하지만, 더 개선할 수 있는 몇 가지 조정 사항이 있습니다. 우리가 해야 할 몇 가지 작업은 다음과 같습니다: - -- **비밀 정보와 코드 분리하기**, 예를 들어 API 키와 같은 비밀 정보는 코드에 포함되어서는 안 됩니다. 비밀 정보를 코드와 분리하기 위해 환경 변수와 `python-dotenv`와 같은 라이브러리를 사용하여 파일에서 로드할 수 있습니다. 코드에서 이렇게 구현할 수 있습니다: - - 1. `.env` 파일을 다음 내용으로 생성하세요: - - ```bash - OPENAI_API_KEY=sk-... - ``` - - > 참고로, Azure의 경우 다음 환경 변수를 설정해야 합니다: - - ```bash - OPENAI_API_TYPE=azure - OPENAI_API_VERSION=2023-05-15 - OPENAI_API_BASE= - ``` - - 코드에서는 다음과 같이 환경 변수를 로드합니다: - - ```python - from dotenv import load_dotenv - - load_dotenv() - - openai.api_key = os.environ["OPENAI_API_KEY"] - ``` - -- **토큰 길이에 대한 고려사항**. 우리는 원하는 텍스트를 생성하기 위해 얼마나 많은 토큰이 필요한지 고려해야 합니다. 토큰은 비용이 들기 때문에 가능한 경우, 토큰의 수를 절약할 수 있는 방법을 고려해야 합니다. 예를 들어, 프롬프트를 어떻게 구성하면 더 적은 토큰을 사용할 수 있을까요? - - 사용할 토큰을 변경하려면 `max_tokens` 매개변수를 사용할 수 있습니다. 예를 들어, 100개의 토큰을 사용하려면 다음과 같이 할 수 있습니다: - - ```python - completion = openai.Completion.create(model="davinci-002", prompt=prompt, max_tokens=100) - ``` - -- **temperature 조절 실험**. temperature는 우리가 지금까지 언급하지 않았지만, 프로그램의 동작에 중요한 맥락입니다. temperature 값이 높을수록 출력이 더 무작위적이 됩니다. 반대로, temperature 값이 낮을수록 출력이 더 예측 가능해집니다. 출력에 변화를 원하는지 여부를 고려해보세요. - - temperature를 변경하려면 `temperature` 매개변수를 사용할 수 있습니다. 예를 들어, temperature를 0.5로 설정하려면 다음과 같이 할 수 있습니다: - - ```python - completion = openai.Completion.create(model="davinci-002", prompt=prompt, temperature=0.5) - ``` - -> 참고로, 값이 1.0에 가까울수록 출력이 더 다양해집니다. - -## 과제 - -이 과제에서는 무엇을 구축할지 선택할 수 있습니다. - -다음은 몇 가지 제안 사항입니다: - -- 레시피 생성기 앱을 더 개선해 보세요. temperature 값과 프롬프트를 조정하여 어떤 결과를 얻을 수 있는지 확인해보세요. -- "스터디 버디"를 만들어 보세요. 이 앱은 Python과 같은 주제에 대한 질문에 답변할 수 있어야 합니다. "Python에서 특정 주제는 무엇인가요?"와 같은 프롬프트를 사용하거나, 특정 주제에 대한 코드를 보여달라는 프롬프트를 사용할 수도 있습니다. -- 역사 봇을 만들어 역사를 생생하게 만들어 보세요. 봇에게 특정 역사적 인물로 역할을 맡게 하고, 그 인물에 대한 생애와 시대에 대해 질문해 보세요. - -## 정답 예시 - -### 스터디 버디 - -아래는 시작 프롬프트입니다. 이를 활용하고 원하는 대로 조정해보세요. - -```text -- "You're an expert on the Python language - - Suggest a beginner lesson for Python in the following format: - - Format: - - concepts: - - brief explanation of the lesson: - - exercise in code with solutions" -``` - -### 역사 봇 - -다음은 사용할 수 있는 몇 가지 프롬프트입니다: - -```text -- "You are Abe Lincoln, tell me about yourself in 3 sentences, and respond using grammar and words like Abe would have used" -- "You are Abe Lincoln, respond using grammar and words like Abe would have used: - - Tell me about your greatest accomplishments, in 300 words" -``` - -## 지식 확인 - -temperature 개념은 무엇을 하는 역할인가요? - -1. 출력의 무작위성을 조절합니다. -2. 응답의 크기를 조절합니다. -3. 사용되는 토큰의 수를 조절합니다. - -## 🚀 도전과제 - -과제를 수행할 때, temperature 값을 다양하게 변경해보세요. 0, 0.5, 1로 설정해보세요. 기억해주세요, 0은 가장 일정하고 1은 가장 다양한 값을 의미합니다. 어떤 값이 앱에 가장 적합한지 확인해보세요. - -## 수고하셨습니다! 학습을 계속하세요 - -이 수업을 완료한 후에는 [Generative AI 학습 컬렉션](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst)을 확인하여 Generative AI 지식을 더욱 향상시킬 수 있습니다! - -7번 수업으로 이동하여 [채팅 애플리케이션을 구축하는 방법](../../../07-building-chat-applications/translations/ko/README.md?WT.mc_id=academic-105485-koreyst)을 살펴보세요! diff --git a/06-text-generation-apps/translations/pl/README.md b/06-text-generation-apps/translations/pl/README.md deleted file mode 100644 index d46466f606..0000000000 --- a/06-text-generation-apps/translations/pl/README.md +++ /dev/null @@ -1,657 +0,0 @@ -# Budowanie Aplikacji Generujących Tekst - -[![Budowanie Aplikacji Generujących Tekst](../../images/06-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson6-gh?WT.mc_id=academic-105485-koreyst) - -> _(Kliknij powyższy obraz, aby obejrzeć wideo tej lekcji)_ - -Do tej pory w tym programie nauczania widziałeś, że istnieją podstawowe koncepcje, takie jak prompty, a nawet cała dyscyplina zwana "inżynierią promptów". Wiele narzędzi, z którymi możesz wchodzić w interakcję, takich jak ChatGPT, Office 365, Microsoft Power Platform i inne, wspiera korzystanie z promptów, aby coś osiągnąć. - -Aby dodać takie doświadczenie do aplikacji, musisz zrozumieć koncepcje takie jak prompty, uzupełnienia (completions) i wybrać bibliotekę, z którą będziesz pracować. Właśnie tego nauczysz się w tym rozdziale. - -## Wprowadzenie - -W tym rozdziale: - -- Poznasz bibliotekę openai i jej podstawowe koncepcje. -- Zbudujesz aplikację generującą tekst przy użyciu openai. -- Zrozumiesz, jak używać koncepcji takich jak prompt, temperatura i tokeny do budowania aplikacji generującej tekst. - -## Cele nauki - -Po zakończeniu tej lekcji będziesz w stanie: - -- Wyjaśnić, czym jest aplikacja generująca tekst. -- Zbudować aplikację generującą tekst przy użyciu openai. -- Skonfigurować swoją aplikację, aby używała więcej lub mniej tokenów, a także zmienić temperaturę dla zróżnicowanego wyniku. - -## Czym jest aplikacja generująca tekst? - -Normalnie, gdy budujesz aplikację, ma ona jakiś rodzaj interfejsu, taki jak: - -- Opartą na komendach. Aplikacje konsolowe to typowe aplikacje, w których wpisujesz komendę, a ona wykonuje zadanie. Na przykład `git` to aplikacja oparta na komendach. -- Interfejs użytkownika (UI). Niektóre aplikacje mają graficzne interfejsy użytkownika (GUI), gdzie klikasz przyciski, wprowadzasz tekst, wybierasz opcje i więcej. - -### Aplikacje konsolowe i UI są ograniczone - -Porównaj to z aplikacją opartą na komendach, gdzie wpisujesz komendę: - -- **Jest ograniczona**. Nie możesz po prostu wpisać dowolnej komendy, tylko te, które aplikacja obsługuje. -- **Specyficzna dla języka**. Niektóre aplikacje obsługują wiele języków, ale domyślnie aplikacja jest zbudowana dla konkretnego języka, nawet jeśli możesz dodać obsługę większej liczby języków. - -### Korzyści z aplikacji generujących tekst - -Więc czym różni się aplikacja generująca tekst? - -W aplikacji generującej tekst masz większą elastyczność, nie jesteś ograniczony do zestawu komend lub konkretnego języka wprowadzania. Zamiast tego możesz używać języka naturalnego do interakcji z aplikacją. Kolejną korzyścią jest to, że już wchodzisz w interakcję ze źródłem danych, które zostało wytrenowane na ogromnym korpusie informacji, podczas gdy tradycyjna aplikacja może być ograniczona do tego, co jest w bazie danych. - -### Co mogę zbudować z aplikacją generującą tekst? - -Jest wiele rzeczy, które możesz zbudować. Na przykład: - -- **Chatbota**. Chatbot odpowiadający na pytania na tematy, takie jak Twoja firma i jej produkty, może być dobrym dopasowaniem. -- **Pomocnika**. LLM-y są świetne w rzeczach takich jak podsumowywanie tekstu, uzyskiwanie spostrzeżeń z tekstu, tworzenie tekstu, takiego jak CV i więcej. -- **Asystenta kodowania**. W zależności od używanego modelu językowego, możesz zbudować asystenta kodowania, który pomoże Ci pisać kod. Na przykład, możesz użyć produktu takiego jak GitHub Copilot, a także ChatGPT, aby pomóc Ci pisać kod. - -## Jak mogę zacząć? - -Cóż, musisz znaleźć sposób na integrację z LLM, co zwykle wiąże się z następującymi dwoma podejściami: - -- Użyj API. Tutaj konstruujesz zapytania internetowe z Twoim promptem i otrzymujesz wygenerowany tekst z powrotem. -- Użyj biblioteki. Biblioteki pomagają enkapsulować wywołania API i ułatwiają ich użycie. - -## Biblioteki/SDK - -Istnieje kilka dobrze znanych bibliotek do pracy z LLM, takich jak: - -- **openai**, ta biblioteka ułatwia połączenie z Twoim modelem i wysyłanie promptów. - -Następnie są biblioteki, które działają na wyższym poziomie, takie jak: - -- **Langchain**. Langchain jest dobrze znany i wspiera Pythona. -- **Semantic Kernel**. Semantic Kernel to biblioteka od Microsoftu wspierająca języki C#, Python i Java. - -## Pierwsza aplikacja używająca openai - -Zobaczmy, jak możemy zbudować naszą pierwszą aplikację, jakich bibliotek potrzebujemy, ile jest wymagane i tak dalej. - -### Instalacja openai - -Istnieje wiele bibliotek do interakcji z OpenAI lub Azure OpenAI. Możliwe jest używanie wielu języków programowania, takich jak C#, Python, JavaScript, Java i inne. Wybraliśmy użycie biblioteki `openai` w Pythonie, więc użyjemy `pip` do jej instalacji. - -```bash -pip install openai -``` - -### Tworzenie zasobu - -Musisz wykonać następujące kroki: - -- Utwórz konto na Azure [https://azure.microsoft.com/free/](https://azure.microsoft.com/free/?WT.mc_id=academic-105485-koreyst). -- Uzyskaj dostęp do Azure OpenAI. Przejdź do [https://learn.microsoft.com/azure/ai-services/openai/overview#how-do-i-get-access-to-azure-openai](https://learn.microsoft.com/azure/ai-services/openai/overview#how-do-i-get-access-to-azure-openai?WT.mc_id=academic-105485-koreyst) i poproś o dostęp. - - > [!NOTE] - > W momencie pisania tego tekstu, musisz złożyć wniosek o dostęp do Azure OpenAI. - -- Zainstaluj Pythona -- Utwórz zasób Azure OpenAI Service. Zobacz ten przewodnik, jak [utworzyć zasób](https://learn.microsoft.com/azure/ai-services/openai/how-to/create-resource?pivots=web-portal?WT.mc_id=academic-105485-koreyst). - -### Znajdź klucz API i endpoint - -W tym momencie musisz powiedzieć swojej bibliotece `openai`, jakiego klucza API użyć. Aby znaleźć swój klucz API, przejdź do sekcji "Keys and Endpoint" swojego zasobu Azure OpenAI i skopiuj wartość "Key 1". - -![Sekcja Keys and Endpoint zasobu w Azure Portal](https://learn.microsoft.com/azure/ai-services/openai/media/quickstarts/endpoint.png?WT.mc_id=academic-105485-koreyst) - -Teraz, gdy masz te informacje skopiowane, poinstruujmy biblioteki, aby ich używały. - -> [!NOTE] -> Warto oddzielić klucz API od kodu. Możesz to zrobić, używając zmiennych środowiskowych. -> -> - Ustaw zmienną środowiskową `OPENAI_API_KEY` na swój klucz API. -> `export OPENAI_API_KEY='sk-...'` - -### Konfiguracja Azure - -Jeśli używasz Azure OpenAI, oto jak ustawić konfigurację: - -```python -openai.api_type = 'azure' -openai.api_key = os.environ["OPENAI_API_KEY"] -openai.api_version = '2023-05-15' -openai.api_base = os.getenv("API_BASE") -``` - -Powyżej ustawiamy: - -- `api_type` na `azure`. To mówi bibliotece, aby używała Azure OpenAI, a nie OpenAI. -- `api_key`, to Twój klucz API znaleziony w Azure Portal. -- `api_version`, to wersja API, której chcesz użyć. W momencie pisania, najnowsza wersja to `2023-05-15`. -- `api_base`, to endpoint API. Możesz go znaleźć w Azure Portal obok klucza API. - -> [!NOTE] > `os.getenv` to funkcja, która odczytuje zmienne środowiskowe. Możesz jej użyć do odczytania zmiennych środowiskowych, takich jak `OPENAI_API_KEY` i `API_BASE`. Ustaw te zmienne środowiskowe w terminalu lub używając biblioteki takiej jak `dotenv`. - -## Generowanie tekstu - -Sposób na generowanie tekstu to użycie klasy `Completion`. Oto przykład: - -```python -prompt = "Uzupełnij następujące: Dawno, dawno temu był sobie" - -completion = openai.Completion.create(model="davinci-002", prompt=prompt) -print(completion.choices[0].text) -``` - -W powyższym kodzie tworzymy obiekt completion i przekazujemy model, którego chcemy użyć, oraz prompt. Następnie drukujemy wygenerowany tekst. - -### Uzupełnienia czatu - -Do tej pory widziałeś, jak używaliśmy `Completion` do generowania tekstu. Ale istnieje inna klasa o nazwie `ChatCompletion`, która bardziej nadaje się do chatbotów. Oto przykład jej użycia: - -```python -import openai - -openai.api_key = "sk-..." - -completion = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=[{"role": "user", "content": "Hello world"}]) -print(completion.choices[0].message.content) -``` - -Więcej na temat tej funkcjonalności w nadchodzącym rozdziale. - -## Ćwiczenie - twoja pierwsza aplikacja generująca tekst - -Teraz, gdy nauczyliśmy się, jak skonfigurować i skonfigurować openai, nadszedł czas, aby zbudować twoją pierwszą aplikację generującą tekst. Aby zbudować swoją aplikację, wykonaj następujące kroki: - -1. Utwórz wirtualne środowisko i zainstaluj openai: - - ```bash - python -m venv venv - source venv/bin/activate - pip install openai - ``` - - > [!NOTE] - > Jeśli używasz Windows, wpisz `venv\Scripts\activate` zamiast `source venv/bin/activate`. - - > [!NOTE] - > Znajdź swój klucz Azure OpenAI, przechodząc do [https://portal.azure.com/](https://portal.azure.com/?WT.mc_id=academic-105485-koreyst) i wyszukując `Open AI`, a następnie wybierz `Open AI resource`, a następnie wybierz `Keys and Endpoint` i skopiuj wartość `Key 1`. - -1. Utwórz plik _app.py_ i nadaj mu następujący kod: - - ```python - import openai - - openai.api_key = "" - - openai.api_type = 'azure' - openai.api_version = '2023-05-15' - openai.api_base = "" - deployment_name = "" - - # dodaj swój kod uzupełnienia - prompt = "Uzupełnij następujące: Dawno, dawno temu był sobie" - messages = [{"role": "user", "content": prompt}] - - # zrób uzupełnienie - completion = openai.chat.completions.create(model=deployment_name, messages=messages) - - # wydrukuj odpowiedź - print(completion.choices[0].message.content) - ``` - - > [!NOTE] - > Jeśli używasz Azure OpenAI, musisz ustawić `api_type` na `azure` i ustawić `api_key` na swój klucz Azure OpenAI. - - Powinieneś zobaczyć wynik podobny do następującego: - - ```output - bardzo nieszczęśliwy _____. - - Dawno, dawno temu był sobie bardzo nieszczęśliwa syrenka. - ``` - -## Różne rodzaje promptów do różnych rzeczy - -Teraz widziałeś, jak generować tekst za pomocą promptu. Masz nawet działający program, który możesz modyfikować i zmieniać, aby generować różne rodzaje tekstu. - -Prompty mogą być używane do różnego rodzaju zadań. Na przykład: - -- **Generowanie rodzaju tekstu**. Na przykład, możesz generować wiersz, pytania do quizu itp. -- **Wyszukiwanie informacji**. Możesz używać promptów do szukania informacji, jak w następującym przykładzie 'Co oznacza CORS w rozwoju web?'. -- **Generowanie kodu**. Możesz używać promptów do generowania kodu, na przykład opracowania wyrażenia regularnego używanego do walidacji e-maili, a dlaczego nie wygenerować całego programu, takiego jak aplikacja internetowa? - -## Bardziej praktyczny przypadek użycia: generator przepisów - -Wyobraź sobie, że masz składniki w domu i chcesz coś ugotować. Do tego potrzebujesz przepisu. Jednym ze sposobów znalezienia przepisów jest użycie wyszukiwarki lub możesz użyć LLM, aby to zrobić. - -Możesz napisać prompt w ten sposób: - -> "Pokaż mi 5 przepisów na danie z następującymi składnikami: kurczak, ziemniaki i marchewki. Dla każdego przepisu wymień wszystkie użyte składniki" - -Biorąc pod uwagę powyższy prompt, możesz otrzymać odpowiedź podobną do: - -```output -1. Pieczony Kurczak z Warzywami: -Składniki: -- 4 udka z kurczaka -- 2 ziemniaki, pokrojone w kostkę -- 2 marchewki, pokrojone w kostkę -- 2 łyżki oliwy z oliwek -- 2 ząbki czosnku, posiekane -- 1 łyżeczka suszonego tymianku -- 1 łyżeczka suszonego oregano -- Sól i pieprz do smaku - -2. Gulasz z Kurczaka i Ziemniaków: -Składniki: -- 2 łyżki oliwy z oliwek -- 1 cebula, posiekana -- 2 ząbki czosnku, posiekane -- 2 piersi z kurczaka, pokrojone w kostkę -- 2 ziemniaki, pokrojone w kostkę -- 2 marchewki, pokrojone w kostkę -- 1 łyżeczka suszonego oregano -- 1 łyżeczka suszonego tymianku -- 1 szklanka bulionu drobiowego -- Sól i pieprz do smaku - -3. Zapiekanka z Kurczaka i Ziemniaków: -Składniki: -- 2 łyżki oliwy z oliwek -- 2 piersi z kurczaka, pokrojone w kostkę -- 2 ziemniaki, pokrojone w kostkę -- 2 marchewki, pokrojone w kostkę -- 1 cebula, posiekana -- 2 ząbki czosnku, posiekane -- 1 łyżeczka suszonego oregano -- 1 łyżeczka suszonego tymianku -- 1 szklanka bulionu drobiowego -- Sól i pieprz do smaku - -4. Zupa z Kurczaka i Ziemniaków: -Składniki: -- 2 łyżki oliwy z oliwek -- 1 cebula, posiekana -- 2 ząbki czosnku, posiekane -- 2 piersi z kurczaka, pokrojone w kostkę -- 2 ziemniaki, pokrojone w kostkę -- 2 marchewki, pokrojone w kostkę -- 1 łyżeczka suszonego oregano -- 1 łyżeczka suszonego tymianku -- 4 szklanki bulionu drobiowego -- Sól i pieprz do smaku - -5. Hash z Kurczaka i Ziemniaków: -Składniki: -- 2 łyżki oliwy z oliwek -- 2 piersi z kurczaka, pokrojone w kostkę -- 2 ziemniaki, pokrojone w kostkę -- 2 marchewki, pokrojone w kostkę -- 1 cebula, posiekana -- 2 ząbki czosnku, posiekane -- 1 łyżeczka suszonego oregano -``` - -Ten wynik jest świetny, wiem, co gotować. W tym momencie, jakie przydatne ulepszenia można wprowadzić: - -- Filtrowanie składników, których nie lubię lub na które jestem uczulony. -- Stworzenie listy zakupów, w przypadku, gdy nie mam wszystkich składników w domu. - -Dla powyższych przypadków, dodajmy dodatkowy prompt: - -> "Proszę usunąć przepisy z czosnkiem, ponieważ jestem uczulony i zastąpić go czymś innym. Proszę także utworzyć listę zakupów dla przepisów, biorąc pod uwagę, że już mam kurczaka, ziemniaki i marchewki w domu." - -Teraz masz nowy wynik, a mianowicie: - -```output -1. Pieczony Kurczak z Warzywami: -Składniki: -- 4 udka z kurczaka -- 2 ziemniaki, pokrojone w kostkę -- 2 marchewki, pokrojone w kostkę -- 2 łyżki oliwy z oliwek -- 1 łyżeczka suszonego tymianku -- 1 łyżeczka suszonego oregano -- Sól i pieprz do smaku - -2. Gulasz z Kurczaka i Ziemniaków: -Składniki: -- 2 łyżki oliwy z oliwek -- 1 cebula, posiekana -- 2 piersi z kurczaka, pokrojone w kostkę -- 2 ziemniaki, pokrojone w kostkę -- 2 marchewki, pokrojone w kostkę -- 1 łyżeczka suszonego oregano -- 1 łyżeczka suszonego tymianku -- 1 szklanka bulionu drobiowego -- Sól i pieprz do smaku - -3. Zapiekanka z Kurczaka i Ziemniaków: -Składniki: -- 2 łyżki oliwy z oliwek -- 2 piersi z kurczaka, pokrojone w kostkę -- 2 ziemniaki, pokrojone w kostkę -- 2 marchewki, pokrojone w kostkę -- 1 cebula, posiekana -- 1 łyżeczka suszonego oregano -- 1 łyżeczka suszonego tymianku -- 1 szklanka bulionu drobiowego -- Sól i pieprz do smaku - -4. Zupa z Kurczaka i Ziemniaków: -Składniki: -- 2 łyżki oliwy z oliwek -- 1 cebula, posiekana -- 2 piersi z kurczaka, pokrojone w kostkę -- 2 ziemniaki, pokrojone w kostkę -- 2 marchewki, pokrojone w kostkę -- 1 łyżeczka suszonego oregano -- 1 łyżeczka suszonego tymianku -- 4 szklanki bulionu drobiowego -- Sól i pieprz do smaku - -5. Hash z Kurczaka i Ziemniaków: -Składniki: -- 2 łyżki oliwy z oliwek -- 2 piersi z kurczaka, pokrojone w kostkę -- 2 ziemniaki, pokrojone w kostkę -- 2 marchewki, pokrojone w kostkę -- 1 cebula, posiekana -- 1 łyżeczka suszonego oregano - -Lista zakupów: -- Oliwa z oliwek -- Cebula -- Tymianek -- Oregano -- Sól -- Pieprz -``` - -To Twoje pięć przepisów, bez wspomnienia o czosnku, i masz również listę zakupów, biorąc pod uwagę to, co już masz w domu. - -## Ćwiczenie - zbuduj generator przepisów - -Teraz, gdy omówiliśmy scenariusz, napiszmy kod pasujący do zademonstrowanego scenariusza. Aby to zrobić, wykonaj następujące kroki: - -1. Użyj istniejącego pliku _app.py_ jako punktu wyjścia -1. Znajdź zmienną `prompt` i zmień jej kod na następujący: - - ```python - prompt = "Pokaż mi 5 przepisów na danie z następującymi składnikami: kurczak, ziemniaki i marchewki. Dla każdego przepisu wymień wszystkie użyte składniki" - ``` - - Jeśli teraz uruchomisz kod, powinieneś zobaczyć wynik podobny do: - - ```output - -Gulasz z Kurczakiem i Ziemniakami: 3 łyżki oleju, 1 cebula, posiekana, 2 ząbki czosnku, posiekane, 1 marchew, obrana i posiekana, 1 ziemniak, obrany i posiekany, 1 liść laurowy, 1 gałązka tymianku, 1/2 łyżeczki soli, 1/4 łyżeczki czarnego pieprzu, 1 1/2 szklanki bulionu drobiowego, 1/2 szklanki suchego białego wina, 2 łyżki posiekanej świeżej pietruszki, 2 łyżki niesolonego masła, 1 1/2 funta udek z kurczaka bez kości i skóry, pokrojonych na kawałki 1-calowe - -Pieczony Kurczak z Ziemniakami i Marchewkami: 3 łyżki oliwy z oliwek extra virgin, 1 łyżka musztardy Dijon, 1 łyżka posiekanego świeżego rozmarynu, 1 łyżka posiekanego świeżego tymianku, 4 ząbki czosnku, posiekane, 1 1/2 funta małych czerwonych ziemniaków, pokrojonych na ćwiartki, 1 1/2 funta marchewek, pokrojonych wzdłuż na ćwiartki, 1/2 łyżeczki soli, 1/4 łyżeczki czarnego pieprzu, 1 (4-funtowy) cały kurczak - -Zapiekanka z Kurczaka, Ziemniaków i Marchewek: spray do gotowania, 1 duża cebula, posiekana, 2 ząbki czosnku, posiekane, 1 marchew, obrana i starta, 1 ziemniak, obrany i starty, 1/2 łyżeczki suszonych liści tymianku, 1/4 łyżeczki soli, 1/4 łyżeczki czarnego pieprzu, 2 szklanki bulionu drobiowego beztłuszczowego, o niskiej zawartości sodu, 1 szklanka mrożonego groszku, 1/4 szklanki mąki uniwersalnej, 1 szklanka mleka 2% o zredukowanej zawartości tłuszczu, 1/4 szklanki startego sera parmezan - - -Obiad z Kurczaka i Ziemniaków w Jednym Garnku: 2 łyżki oliwy z oliwek, 1 funt udek z kurczaka bez kości i skóry, pokrojonych na kawałki 1-calowe, 1 duża cebula, posiekana, 3 ząbki czosnku, posiekane, 1 marchew, obrana i posiekana, 1 ziemniak, obrany i posiekany, 1 liść laurowy, 1 gałązka tymianku, 1/2 łyżeczki soli, 1/4 łyżeczki czarnego pieprzu, 2 szklanki bulionu drobiowego, 1/2 szklanki suchego białego wina - - -Curry z Kurczaka, Ziemniaków i Marchewek: 1 łyżka oleju roślinnego, 1 duża cebula, posiekana, 2 ząbki czosnku, posiekane, 1 marchew, obrana i posiekana, 1 ziemniak, obrany i posiekany, 1 łyżeczka mielonej kolendry, 1 łyżeczka mielonego kuminu, 1/2 łyżeczki mielonej kurkumy, 1/2 łyżeczki mielonego imbiru, 1/4 łyżeczki pieprzu cayenne, 2 szklanki bulionu drobiowego, 1/2 szklanki suchego białego wina, 1 (15-uncjowa) puszka ciecierzycy, odsączona i przepłukana, 1/2 szklanki rodzynek, 1/2 szklanki posiekanej świeżej kolendry - ``` - - > UWAGA, Twój LLM jest niedeterministyczny, więc możesz otrzymać różne wyniki za każdym razem, gdy uruchomisz program. - - Świetnie, zobaczmy, jak możemy poprawić rzeczy. Aby poprawić rzeczy, chcemy upewnić się, że kod jest elastyczny, więc składniki i liczba przepisów mogą być poprawione i zmienione. - -1. Zmieńmy kod w następujący sposób: - - ```python - no_recipes = input("Liczba przepisów (na przykład, 5): ") - - ingredients = input("Lista składników (na przykład, kurczak, ziemniaki i marchewki): ") - - # interpolacja liczby przepisów do promptu i składników - prompt = f"Pokaż mi {no_recipes} przepisów na danie z następującymi składnikami: {ingredients}. Dla każdego przepisu wymień wszystkie użyte składniki" - ``` - - Przetestowanie tego kodu mogłoby wyglądać tak: - - ```output - Liczba przepisów (na przykład, 5): 3 - Lista składników (na przykład, kurczak, ziemniaki i marchewki): mleko,truskawki - - -Koktajl mleczny z truskawkami: mleko, truskawki, cukier, ekstrakt waniliowy, kostki lodu - -Ciasto truskawkowe: mleko, mąka, proszek do pieczenia, cukier, sól, niesolone masło, truskawki, bita śmietana - -Mleko truskawkowe: mleko, truskawki, cukier, ekstrakt waniliowy - ``` - -### Ulepszenie przez dodanie filtra i listy zakupów - -Mamy teraz działającą aplikację zdolną do produkowania przepisów i jest elastyczna, ponieważ opiera się na wejściach od użytkownika, zarówno co do liczby przepisów, jak i używanych składników. - -Aby dalej ją ulepszyć, chcemy dodać następujące: - -- **Filtrowanie składników**. Chcemy być w stanie filtrować składniki, których nie lubimy lub na które jesteśmy uczuleni. Aby to osiągnąć, możemy edytować nasz istniejący prompt i dodać warunek filtrowania na jego końcu, w ten sposób: - - ```python - filter = input("Filtr (na przykład, wegetariański, wegański lub bezglutenowy): ") - - prompt = f"Pokaż mi {no_recipes} przepisów na danie z następującymi składnikami: {ingredients}. Dla każdego przepisu wymień wszystkie użyte składniki, bez {filter}" - ``` - - Powyżej, dodajemy `{filter}` na końcu promptu i przechwytujemy również wartość filtra od użytkownika. - - Przykładowe wejście przy uruchomieniu programu może teraz wyglądać tak: - - ```output - Liczba przepisów (na przykład, 5): 3 - Lista składników (na przykład, kurczak, ziemniaki i marchewki): cebula,mleko - Filtr (na przykład, wegetariański, wegański lub bezglutenowy): bez mleka - - 1. Francuska Zupa Cebulowa - - Składniki: - - -1 duża cebula, pokrojona - -3 szklanki bulionu wołowego - -1 szklanka mleka - -6 plastrów chleba francuskiego - -1/4 szklanki startego sera parmezan - -1 łyżka masła - -1 łyżeczka suszonego tymianku - -1/4 łyżeczki soli - -1/4 łyżeczki czarnego pieprzu - - Instrukcje: - - 1. W dużym garnku, podsmaż cebulę na maśle, aż się zezłoci. - 2. Dodaj bulion wołowy, mleko, tymianek, sól i pieprz. Doprowadź do wrzenia. - 3. Zmniejsz ogień i gotuj przez 10 minut. - 4. Umieść plastry chleba francuskiego na miseczkach do zupy. - 5. Nalej zupę na chleb. - 6. Posyp serem parmezan. - - 2. Zupa Cebulowa i Ziemniaczana - - Składniki: - - -1 duża cebula, posiekana - -2 szklanki ziemniaków, pokrojonych w kostkę - -3 szklanki bulionu warzywnego - -1 szklanka mleka - -1/4 łyżeczki czarnego pieprzu - - Instrukcje: - - 1. W dużym garnku, podsmaż cebulę na maśle, aż się zezłoci. - 2. Dodaj ziemniaki, bulion warzywny, mleko i pieprz. Doprowadź do wrzenia. - 3. Zmniejsz ogień i gotuj przez 10 minut. - 4. Podawaj gorącą. - - 3. Kremowa Zupa Cebulowa - - Składniki: - - -1 duża cebula, posiekana - -3 szklanki bulionu warzywnego - -1 szklanka mleka - -1/4 łyżeczki czarnego pieprzu - -1/4 szklanki mąki uniwersalnej - -1/2 szklanki startego sera parmezan - - Instrukcje: - - 1. W dużym garnku, podsmaż cebulę na maśle, aż się zezłoci. - 2. Dodaj bulion warzywny, mleko i pieprz. Doprowadź do wrzenia. - 3. Zmniejsz ogień i gotuj przez 10 minut. - 4. W małej misce, wymieszaj mąkę i ser parmezan, aż będzie gładkie. - 5. Dodaj do zupy i gotuj przez dodatkowe 5 minut, lub aż zupa zgęstnieje. - ``` - - Jak widać, wszelkie przepisy z mlekiem zostały odfiltrowane. Ale jeśli jesteś nietolerancyjny na laktozę, możesz chcieć filtrować również przepisy z serem, więc istnieje potrzeba bycia jasnym. - -- **Stworzenie listy zakupów**. Chcemy stworzyć listę zakupów, biorąc pod uwagę, co już mamy w domu. - - Dla tej funkcjonalności, moglibyśmy albo próbować rozwiązać wszystko w jednym prompcie, albo moglibyśmy podzielić to na dwa prompty. Spróbujmy tego drugiego podejścia. Tutaj sugerujemy dodanie dodatkowego promptu, ale aby to zadziałało, musimy dodać wynik poprzedniego promptu jako kontekst do późniejszego promptu. - - Znajdź część kodu, która drukuje wynik z pierwszego promptu i dodaj poniższy kod poniżej: - - ```python - old_prompt_result = completion.choices[0].message.content - prompt = "Utwórz listę zakupów dla wygenerowanych przepisów i proszę nie uwzględniaj składników, które już mam." - - new_prompt = f"{old_prompt_result} {prompt}" - messages = [{"role": "user", "content": new_prompt}] - completion = openai.Completion.create(engine=deployment_name, messages=messages, max_tokens=1200) - - # wydrukuj odpowiedź - print("Lista zakupów:") - print(completion.choices[0].message.content) - ``` - - Zwróć uwagę na następujące: - - 1. Konstruujemy nowy prompt, dodając wynik z pierwszego promptu do nowego promptu: - - ```python - new_prompt = f"{old_prompt_result} {prompt}" - ``` - - 1. Robimy nowe żądanie, ale również biorąc pod uwagę liczbę tokenów, o które prosiliśmy w pierwszym prompcie, więc tym razem mówimy, że `max_tokens` to 1200. - - ```python - completion = openai.Completion.create(engine=deployment_name, prompt=new_prompt, max_tokens=1200) - ``` - - Przeprowadzając ten kod, otrzymujemy teraz następujący wynik: - - ```output - Liczba przepisów (na przykład, 5): 2 - Lista składników (na przykład, kurczak, ziemniaki i marchewki): jabłko,mąka - Filtr (na przykład, wegetariański, wegański lub bezglutenowy): cukier - - - -Placki jabłkowo-mączne: 1 szklanka mąki, 1/2 łyżeczki proszku do pieczenia, 1/2 łyżeczki sody oczyszczonej, 1/4 łyżeczki soli, 1 łyżka cukru, 1 jajko, 1 szklanka maślanki lub kwaśnego mleka, 1/4 szklanki roztopionego masła, 1 jabłko Granny Smith, obrane i starte - -Frytki jabłkowe: 1-1/2 szklanki mąki, 1 łyżeczka proszku do pieczenia, 1/4 łyżeczki soli, 1/4 łyżeczki sody oczyszczonej, 1/4 łyżeczki gałki muszkatołowej, 1/4 łyżeczki cynamonu, 1/4 łyżeczki anyżu, 1/4 szklanki cukru, 1/4 szklanki tłuszczu roślinnego, 1/4 szklanki mleka, 1 jajko, 2 szklanki startych, obranych jabłek - Lista zakupów: - -Mąka, proszek do pieczenia, soda oczyszczona, sól, cukier, jajko, maślanka, masło, jabłko, gałka muszkatołowa, cynamon, anyż - ``` - - - -## Ulepszenie konfiguracji - -To, co mamy do tej pory, to kod, który działa, ale jest kilka poprawek, które powinniśmy wprowadzić, aby dalej ulepszyć rzeczy. Niektóre rzeczy, które powinniśmy zrobić, to: - -- **Oddzielenie sekretów od kodu**, takich jak klucz API. Sekrety nie należą do kodu i powinny być przechowywane w bezpiecznym miejscu. Aby oddzielić sekrety od kodu, możemy użyć zmiennych środowiskowych i bibliotek takich jak `python-dotenv` do ładowania ich z pliku. Oto jak to wyglądałoby w kodzie: - - 1. Utwórz plik `.env` o następującej treści: - - ```bash - OPENAI_API_KEY=sk-... - ``` - - > Uwaga, dla Azure, musisz ustawić następujące zmienne środowiskowe: - - ```bash - OPENAI_API_TYPE=azure - OPENAI_API_VERSION=2023-05-15 - OPENAI_API_BASE= - ``` - - W kodzie, załadowałbyś zmienne środowiskowe w ten sposób: - - ```python - from dotenv import load_dotenv - - load_dotenv() - - openai.api_key = os.environ["OPENAI_API_KEY"] - ``` - -- **Słowo o długości tokenów**. Powinniśmy rozważyć, ile tokenów potrzebujemy do wygenerowania tekstu, którego chcemy. Tokeny kosztują pieniądze, więc tam, gdzie to możliwe, powinniśmy starać się być ekonomicznymi z liczbą używanych tokenów. Na przykład, czy możemy sformułować prompt tak, abyśmy mogli użyć mniej tokenów? - - Aby zmienić używane tokeny, możesz użyć parametru `max_tokens`. Na przykład, jeśli chcesz użyć 100 tokenów, zrobiłbyś to: - - ```python - completion = client.chat.completions.create(model=deployment, messages=messages, max_tokens=100) - ``` - -- **Eksperymentowanie z temperaturą**. Temperatura to coś, o czym do tej pory nie wspomnieliśmy, ale jest ważnym kontekstem dla tego, jak działa nasz program. Im wyższa wartość temperatury, tym bardziej losowy będzie wynik. Odwrotnie, im niższa wartość temperatury, tym bardziej przewidywalny będzie wynik. Zastanów się, czy chcesz wariacji w swoim wyniku, czy nie. - - Aby zmienić temperaturę, możesz użyć parametru `temperature`. Na przykład, jeśli chcesz użyć temperatury 0,5, zrobiłbyś to: - - ```python - completion = client.chat.completions.create(model=deployment, messages=messages, temperature=0.5) - ``` - - > Uwaga, im bliżej 1.0, tym bardziej zróżnicowany wynik. - -## Zadanie - -Dla tego zadania, możesz wybrać, co zbudować. - -Oto kilka sugestii: - -- Dostosuj aplikację generatora przepisów, aby dalej ją ulepszyć. Pobaw się wartościami temperatury i promptami, aby zobaczyć, co możesz wymyślić. -- Zbuduj "kumpla do nauki". Ta aplikacja powinna być w stanie odpowiadać na pytania na temat, na przykład Pythona, mógłbyś mieć prompty takie jak "Co to jest określony temat w Pythonie?", lub mógłbyś mieć prompt, który mówi, pokaż mi kod dla określonego tematu itp. -- Bot historyczny, ożyw historię, poinstruuj bota, aby odgrywał określoną postać historyczną i zadawaj mu pytania o jego życie i czasy. - -## Rozwiązanie - -### Kumpel do nauki - -Poniżej znajduje się początkowy prompt, zobacz, jak możesz go użyć i dostosować do swoich upodobań. - -```text -- "Jesteś ekspertem od języka Python - - Zaproponuj lekcję dla początkujących w Pythonie w następującym formacie: - - Format: - - koncepcje: - - krótkie wyjaśnienie lekcji: - - ćwiczenie w kodzie z rozwiązaniami" -``` - -### Bot historyczny - -Oto kilka promptów, których możesz użyć: - -```text -- "Jesteś Abrahamem Lincolnem, powiedz mi o sobie w 3 zdaniach i odpowiedz używając gramatyki i słów, jakich Abraham by użył" -- "Jesteś Abrahamem Lincolnem, odpowiedz używając gramatyki i słów, jakich Abraham by użył: - - Opowiedz mi o swoich największych osiągnięciach, w 300 słowach" -``` - -## Sprawdzenie wiedzy - -Co robi koncepcja temperatury? - -1. Kontroluje, jak losowy jest wynik. -1. Kontroluje, jak duża jest odpowiedź. -1. Kontroluje, ile tokenów jest używanych. - -## 🚀 Wyzwanie - -Pracując nad zadaniem, spróbuj zmieniać temperaturę, spróbuj ustawić ją na 0, 0,5 i 1. Pamiętaj, że 0 jest najmniej zróżnicowane, a 1 najbardziej, jaka wartość działa najlepiej dla Twojej aplikacji? - -## Świetna Praca! Kontynuuj Naukę - -Po ukończeniu tej lekcji, sprawdź naszą [kolekcję materiałów edukacyjnych o Generatywnej AI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst), aby nadal podnosić swoją wiedzę o Generatywnej AI! - -Przejdź do Lekcji 7, gdzie przyjrzymy się, jak [budować aplikacje czatowe](../../../07-building-chat-applications/translations/pl/README.md?WT.mc_id=academic-105485-koreyst)! diff --git a/06-text-generation-apps/translations/pt-br/README.md b/06-text-generation-apps/translations/pt-br/README.md deleted file mode 100644 index 0053959cf8..0000000000 --- a/06-text-generation-apps/translations/pt-br/README.md +++ /dev/null @@ -1,666 +0,0 @@ -# Desenvolvendo Aplicativos de Geração de Texto - -[![Building Text Generation Applications](../../images/06-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson6-gh?WT.mc_id=academic-105485-koreyst) - -> _(Clique na imagem acima para assistir ao vídeo desta lição)_ - -Você viu até agora neste currículo que existem conceitos básicos como prompts e até mesmo uma disciplina inteira chamada "engenharia de prompts". Muitas ferramentas com as quais você pode interagir, como ChatGPT, Office 365, Microsoft Power Platform e muito mais, suportam o uso de prompts para realizar algo. - -Para que você adicione tal experiência a um aplicação, você precisa entender conceitos como prompts, conclusões e escolher uma biblioteca para trabalhar. É exatamente isso que você aprenderá neste capítulo. - -## Introdução - -Nesse capítulo, você aprenderá: - -- Aprender sobre a biblioteca openai e seus conceitos básicos. -- Criar uma aplicação de geração de texto usando openai. -- Entender como usar conceitos como prompt, temperatura e tokens para construir um aplicativo de geração de texto. - -## Objetivos de aprendizagem - -No final desta lição, você será capaz de: - -- Explicar o que é uma aplicação de geração de texto. -- Criar uma aplicação de geração de texto usando openai. -- Configurar sua aplicação para usar mais ou menos tokens e também alterar a temperatura, para uma saída variada. - -## O que é uma aplicação de geração de texto? - -Normalmente quando você desenvolve uma aplicaçaõ, ele tem algum tipo de interface como a seguinte: - -- Baseado em comando. Aplicações de console são aplicativos típicos onde você digita um comando e ele executa uma tarefa. Por exemplo, `git` é um aplicativo baseado em comando. -- Interface do usuário (UI). Alguns aplicativos têm interfaces gráficas do usuário (GUIs) onde você clica em botões, insere texto, seleciona opções e muito mais. - -### Console e Aplições de UI são limitadas - -Compare com um aplicativo baseado em comandos onde você digita um comando: - -- **É limitado**: Você não pode simplesmente digitar qualquer comando, apenas aqueles que o aplicativo suporta. -- **Específico de idioma**: Alguns aplicativos suportam vários idiomas, mas por padrão, o aplicativo é construído para um idioma específico, mesmo que você possa adicionar mais suporte a idiomas. - -### Benefícios de aplicativos de geração de texto - -Então, como uma aplicativo de geração de texto é diferente? - -Em um aplicativo de geração de texto, você tem mais flexibilidade, não está limitado a um conjunto de comandos ou a um idioma específico de entrada. Em vez disso, você pode usar linguagem natural para interagir com o aplicativo. Outro benefício é que, como você já está interagindo com uma fonte de dados que foi treinada em um vasto corpus de informações, ao contrário de um aplicativo tradicional que pode ser limitado ao que está em um banco de dados. - -### O que posso criar com um aplicativo de geração de texto? - -Existem muitas coisas que você pode construir. Por exemplo: - -- **Um chatbot**: Um chatbot que responde a perguntas sobre tópicos, como sua empresa e seus produtos, pode ser uma boa opção. -- **Assistente**: Modelos de linguagem são ótimos para coisas como resumir texto, obter insights a partir de texto, produzir texto como currículos e mais. -- **Assistente de código**: Dependendo do modelo de linguagem que você usa, é possível construir um assistente de código que o ajuda a escrever código. Por exemplo, você pode usar um produto como o GitHub Copilot, bem como o ChatGPT, para ajudá-lo a escrever código. - -## Como posso começar? - -Bem, você precisa encontrar uma maneira de integrar um modelo de linguagem grande (LLM), o que geralmente envolve as seguintes duas abordagens: - -- **Usar uma API**: Aqui, você está construindo solicitações web com seu prompt e obtendo texto gerado de volta. -- **Usar uma biblioteca**: As bibliotecas ajudam a encapsular as chamadas de API e facilitam o uso delas. - -## Bibliotecas/SDKs - -Existem algumas bibliotecas bem conhecidas para trabalhar com Grandes Modelos de Linguagem (LLMs), como: - -- **openai**: Esta biblioteca facilita a conexão com seu modelo e o envio de prompts. - -Em seguida, existem bibliotecas que operam em um nível mais alto, como: - -- **Langchain**: Langchain é bem conhecida e oferece suporte ao Python. -- **Semantic Kernel**: Semantic Kernel é uma biblioteca da Microsoft que oferece suporte às linguagens C#, Python e Java. - -## Primeiro aplicativo usando openai - -Vamos ver como podemos criar nosso primeiro aplicativo, quais bibliotecas precisamos, quanto é necessário e etc. - -### Instalando o openai - -Existem muitas bibliotecas por aí para interagir com o OpenAI ou o Azure OpenAI. É possível usar várias linguagens de programação, como C#, Python, JavaScript, Java e outras. Optamos por usar a biblioteca `openai` em Python, então vamos usar o `pip` para instalá-la. - -```bash -pip install openai -``` - -### Criando o Recurso - -Você precisa realizar as seguintes etapas: - -- Criar uma conta no Azure [https://azure.microsoft.com/free/](https://azure.microsoft.com/free/?WT.mc_id=academic-105485-koreyst). -- Obter acesso ao Azure Open AI. Vá para [https://learn.microsoft.com/azure/ai-services/openai/overview#how-do-i-get-access-to-azure-openai](https://learn.microsoft.com/azure/ai-services/openai/overview#how-do-i-get-access-to-azure-openai?WT.mc_id=academic-105485-koreyst) e solicite acesso. - - > [!OBSERVAÇÃO] - > Até o presente momento, você precisa solicitar acesso ao Azure Open AI. - -- Instale Python -- Ter criado um recurso de serviço Azure OpenAI. Consulte este guia para saber como [criar um recurso](https://learn.microsoft.com/azure/ai-services/openai/how-to/create-resource?pivots=web-portal?WT.mc_id=academic-105485-koreyst). - -### Localize a chave da API e o endpoint - -Neste ponto, você precisa informar à biblioteca `openai` qual chave de API usar. Para encontrar sua chave de API, vá para a seção "Chaves e Endpoint" de seu recurso Azure Open AI e copie o valor de "Chave 1". - -![Keys and Endpoint resource blade in Azure Portal](https://learn.microsoft.com/azure/ai-services/openai/media/quickstarts/endpoint.png?WT.mc_id=academic-105485-koreyst) - -Agora que você tem essas informações copiadas, vamos instruir as bibliotecas a usá-las. - -> [!OBSERVAÇÃO] -> Vale a pena separar sua chave API do seu código. Você pode fazer isso usando variáveis de ambiente. -> -> - Defina a variável de ambiente em: `OPENAI_API_TYPE` para a chave da sua API. -> `export OPENAI_API_KEY='sk-...'` - -### Configurando o recurso do Azure no código - -If you're using Azure Open AI, here's how you setup configuration: - -Se você estiver usando o Azure Open AI, veja como configurar: - -```python -openai.api_type = 'azure' -openai.api_key = os.environ["OPENAI_API_KEY"] -openai.api_version = '2023-05-15' -openai.api_base = os.getenv("API_BASE") -``` - -Aqui estamos definindo o seguinte: - -- `api_type` para `azure`. Isso diz à biblioteca para usar o Azure Open AI e não o OpenAI. -- `api_key`, esta é a sua chave API encontrada no Portal do Azure. -- `api_version`, esta é a versão da API que você deseja usar. No momento da escrita, a versão mais recente é `2023-05-15`. -- `api_base`, este é o endpoint da API. Você pode encontrá-lo no Portal do Azure ao lado de sua chave API. - -> [!OBSERVAÇÃO] > `os.getenv` é uma função que lê variáveis de ambiente. Você pode usá-lo para ler variáveis de ambiente como `OPENAI_API_KEY` e `API_BASE`. Defina essas variáveis de ambiente em seu terminal ou usando uma biblioteca como `dotenv`. - -## Gerando texto - -Uma maneira de gerar texto é usar a classe `Completion`. Aqui está um exemplo: - -```python -prompt = "Complete the following: Once upon a time there was a" - -completion = openai.Completion.create(model="davinci-002", prompt=prompt) -print(completion.choices[0].text) -``` - -No código acima, criamos um `completion object` e passamos o modelo que queremos usar e o prompt. Em seguida, imprimimos o texto gerado. - -### Chat completions - -Até agora, você viu como usamos `Completion` para gerar texto. Mas há outra classe chamada `ChatCompletion` que é mais adequada para chatbots. Aqui está um exemplo de uso: - -```python -import openai - -openai.api_key = "sk-..." - -completion = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=[{"role": "user", "content": "Hello world"}]) -print(completion.choices[0].message.content) -``` - -Aprenderemos mais sobre essa funcionalidade em um capítulo futuro. - -## Exercício - seu primeiro aplicativo de geração de texto - -Agora que aprendemos a configurar o openai, é hora de criar o seu primeiro aplicativo de geração de texto. Para criar seu aplicativo, siga estas etapas: - -1. Crie um ambiente virtual e instale o openai: - - ```bash - python -m venv venv - source venv/bin/activate - pip install openai - ``` - - > [!OBSERVAÇÃO] - > Se você estiver usando o Windows, digite `venv\Scripts\activate` em vez de `source venv/bin/activate`. - - > [!OBSERVAÇÃO] - > Localize sua chave Azure Open AI acessando [https://portal.azure.com/](https://portal.azure.com/?WT.mc_id=academic-105485-koreyst) e pesquise por `Open AI` e selecione o `recurso Open AI` e depois selecione `Chaves e Endpoint` e copie o valor `Chave 1`. - -1. Crie um arquivo _app.py_ e dê a ele o seguinte código: - - ```python - import openai - - openai.api_key = "" - - openai.api_type = 'azure' - openai.api_version = '2023-05-15' - openai.api_base = "" - deployment_name = "" - - # add your completion code - prompt = "Complete the following: Once upon a time there was a" - - # make completion - completion = openai.Completion.create(engine= deployment_name, model="davinci-002", prompt=prompt) - - # print response - print(completion.choices[0].text) - ``` - - > [!OBSERVAÇÃO] - > Se você estiver usando o Azure Open AI, precisará definir o `api_type` como `azure` e definir o `api_key` como sua chave Azure Open AI. - - Você deve ver uma saída como a seguinte: - - ```output - very unhappy _____. - - Once upon a time there was a very unhappy mermaid. - ``` - -## Diferentes tipos de prompts, para diferentes coisas - -Agora que você viu como gerar texto usando um prompt, você até tem um programa em execução que pode modificar e alterar para gerar diferentes tipos de texto. - -Prompts podem ser usados para todas as formas de tarefas. Por exemplo: - -- **Gerar um tipo de texto**: Por exemplo, você pode gerar um poema, perguntas para um quiz, etc. -- **Procurar informações**: Você pode usar prompts para procurar informações, como no exemplo a seguir: 'O que significa CORS no desenvolvimento web?'. -- **Gerar código**: Você pode usar prompts para gerar código, por exemplo, desenvolvendo uma expressão regular usada para validar e-mails ou até mesmo gerar um programa inteiro, como um aplicativo web? - -## Um caso de uso mais prático: um gerador de receitas - -Imagine que você tenha ingredientes em casa e quer cozinhar algo. Para isso, você precisa de uma receita. Uma maneira de encontrar receitas é usar um mecanismo de busca ou você poderia usar um LLM para fazer isso. - -Você poderia escrever um prompt assim: - -> "Me forneça 5 receitas para um prato com os seguintes ingredientes: frango, batatas e cenouras. Por receita, liste todos os ingredientes utilizados" - -Dado o prompt acima, você pode obter uma resposta semelhante a: - -```output -1. Frango Assado com Vegetais: - - Ingredientes: - - 4 coxas de frango - - 2 batatas, cortadas em cubos - - 2 cenouras, cortadas em cubos - - 2 colheres de sopa de azeite de oliva - - 2 dentes de alho, picados - - 1 colher de chá de tomilho seco - - 1 colher de chá de orégano seco - - Sal e pimenta a gosto - -2. Ensopado de Frango e Batata: - - Ingredientes: - - 2 colheres de sopa de azeite de oliva - - 1 cebola, picada - - 2 dentes de alho, picados - - 2 peitos de frango, cortados em cubos - - 2 batatas, cortadas em cubos - - 2 cenouras, cortadas em cubos - - 1 colher de chá de orégano seco - - 1 colher de chá de tomilho seco - - 1 xícara de caldo de galinha - - Sal e pimenta a gosto - -3. Assado de Frango e Batata: - - Ingredientes: - - 2 colheres de sopa de azeite de oliva - - 2 peitos de frango, cortados em cubos - - 2 batatas, cortadas em cubos - - 2 cenouras, cortadas em cubos - - 1 cebola, picada - - 2 dentes de alho, picados - - 1 colher de chá de orégano seco - - 1 colher de chá de tomilho seco - - 1 xícara de caldo de galinha - - Sal e pimenta a gosto - -4. Sopa de Frango e Batata: - - Ingredientes: - - 2 colheres de sopa de azeite de oliva - - 1 cebola, picada - - 2 dentes de alho, picados - - 2 peitos de frango, cortados em cubos - - 2 batatas, cortadas em cubos - - 2 cenouras, cortadas em cubos - - 1 colher de chá de orégano seco - - 1 colher de chá de tomilho seco - - 4 xícaras de caldo de galinha - - Sal e pimenta a gosto - -5. Hash de Frango e Batata: - - Ingredientes: - - 2 colheres de sopa de azeite de oliva - - 2 peitos de frango, cortados em cubos - - 2 batatas, cortadas em cubos - - 2 cenouras, cortadas em cubos - - 1 cebola, picada - - 2 dentes de alho, picados - - 1 colher de chá de orégano - -``` - -Essa saída é ótima, eu sei o quê cozinhar. Neste ponto, o que poderia ser útil são melhorias: - -- Filtre os ingredientes que não gosto ou sou alérgico. -- Me forneça uma lista de compras, caso eu não tenha todos os ingredientes em casa. - -Para os casos acima, vamos adicionar um prompt adicional: - -> "Por favor, remova receitas com alho, pois sou alérgico e substitua por outra coisa. Além disso, por favor, me forneça uma lista de compras para as receitas, considerando que já tenho frango, batatas e cenouras em casa." - -Agora você tem um novo resultado, a saber: - -```output -1. Frango Assado com Vegetais: - - Ingredientes: - - 4 coxas de frango - - 2 batatas, cortadas em cubos - - 2 cenouras, cortadas em cubos - - 2 colheres de sopa de azeite de oliva - - 1 colher de chá de tomilho seco - - 1 colher de chá de orégano seco - - Sal e pimenta a gosto - -2. Ensopado de Frango e Batata: - - Ingredientes: - - 2 colheres de sopa de azeite de oliva - - 1 cebola, picada - - 2 peitos de frango, cortados em cubos - - 2 batatas, cortadas em cubos - - 2 cenouras, cortadas em cubos - - 1 colher de chá de orégano seco - - 1 colher de chá de tomilho seco - - 1 xícara de caldo de galinha - - Sal e pimenta a gosto - -3. Frango e Batata Assados: - - Ingredientes: - - 2 colheres de sopa de azeite de oliva - - 2 peitos de frango, cortados em cubos - - 2 batatas, cortadas em cubos - - 2 cenouras, cortadas em cubos - - 1 cebola, picada - - 1 colher de chá de orégano seco - - 1 colher de chá de tomilho seco - - 1 xícara de caldo de galinha - - Sal e pimenta a gosto - -4. Sopa de Frango e Batata: - - Ingredientes: - - 2 colheres de sopa de azeite de oliva - - 1 cebola, picada - - 2 peitos de frango, cortados em cubos - - 2 batatas, cortadas em cubos - - 2 cenouras, cortadas em cubos - - 1 colher de chá de orégano seco - - 1 colher de chá de tomilho seco - - 4 xícaras de caldo de galinha - - Sal e pimenta a gosto - -5. Hash de Frango e Batata: - - Ingredientes: - - 2 colheres de sopa de azeite de oliva - - 2 peitos de frango, cortados em cubos - - 2 batatas, cortadas em cubos - - 2 cenouras, cortadas em cubos - - 1 cebola, picada - - 1 colher de chá de orégano - -Lista de Compras: -- Azeite de oliva -- Cebola -- Tomilho -- Orégano -- Sal -- Pimenta -``` - -Aqui estão as cinco receitas, sem mencionar alho, e também uma lista de compras considerando o que você já tem em casa. - -## Execírcio - crie um gerador de receitas - -Agora que temos um cenário, vamos escrever o código para corresponder ao cenário demonstrado. Para fazer isso, siga estas etapas: - -1. Use o arquivo _app.py_ existente como ponto de partida -1. Localize a variável `prompt` e altere seu código para o seguinte: - - ```python - prompt = "Me forneça 5 receitas de um prato com os seguintes ingredientes: frango, batata e cenoura. Por receita, liste todos os ingredientes usados" - ``` - - Se você executar o código agora, deverá ver uma saída semelhante a: - - ```output - - Ensopado de Frango com Batata e Cenoura: 3 colheres de sopa de azeite, 1 cebola picada, 2 dentes de alho picados, 1 cenoura descascada e picada, 1 batata descascada e picada, 1 folha de louro, 1 raminho de tomilho, 1/2 colher de chá de sal , 1/4 colher de chá de pimenta preta, 1 1/2 xícara de caldo de galinha, 1/2 xícara de vinho branco seco, 2 colheres de sopa de salsa fresca picada, 2 colheres de sopa de manteiga sem sal, 1 1/2 libra de coxas de frango desossadas e sem pele, cortadas em 1- pedaços de polegada - - - Frango Assado no Forno com Batata e Cenoura: 3 colheres de sopa de azeite extra-virgem, 1 colher de sopa de mostarda Dijon, 1 colher de sopa de alecrim fresco picado, 1 colher de sopa de tomilho fresco picado, 4 dentes de alho picados, 1 1/2 libra de batatas vermelhas pequenas, esquartejado, 1 1/2 libra de cenoura, cortada em quartos longitudinalmente, 1/2 colher de chá de sal, 1/4 colher de chá de pimenta preta, 1 (4 libras) de frango inteiro - - - Caçarola de frango, batata e cenoura: spray de cozinha, 1 cebola grande picada, 2 dentes de alho picados, 1 cenoura descascada e ralada, 1 batata descascada e ralada, 1/2 colher de chá de folhas secas de tomilho, 1/4 colher de chá sal, 1/4 colher de chá de pimenta preta, 2 xícaras de caldo de galinha desnatado e com baixo teor de sódio, 1 xícara de ervilhas congeladas, 1/4 xícara de farinha de trigo, 1 xícara de leite com baixo teor de gordura a 2%, 1/4 xícara de parmesão ralado queijo - - - Jantar de frango e batata em uma panela: 2 colheres de sopa de azeite, 1 quilo de coxas de frango desossadas e sem pele, cortadas em pedaços de 2,5 cm, 1 cebola grande picada, 3 dentes de alho picados, 1 cenoura descascada e picada, 1 batata, descascado e picado, 1 folha de louro, 1 raminho de tomilho, 1/2 colher de chá de sal, 1/4 colher de chá de pimenta preta, 2 xícaras de caldo de galinha, 1/2 xícara de vinho branco seco - - - Caril de Frango, Batata e Cenoura: 1 colher de sopa de óleo vegetal, 1 cebola grande picada, 2 dentes de alho picados, 1 cenoura descascada e picada, 1 batata descascada e picada, 1 colher de chá de coentro moído, 1 colher de chá de cominho moído, 1/2 colher de chá de açafrão em pó, 1/2 colher de chá de gengibre em pó, 1/4 colher de chá de pimenta caiena, 2 xícaras de caldo de galinha, 1/2 xícara de vinho branco seco, 1 lata (15 onças) de grão de bico, escorrido e enxaguado, 1/2 xícara de passas, 1/2 xícara de coentro fresco picado - ``` - - > [!OBSERVAÇÃO] - > seu LLM é não determinístico, então você pode obter resultados diferentes sempre que executar o programa. - - Ótimo! Vamos ver como podemos melhorar as coisas. Para melhorar as coisas, queremos ter certeza de que o código é flexível, para que os ingredientes e o número de receitas possam ser melhorados e alterados. - -1. Vamos alterar o código da seguinte maneira: - - ```python - no_recipes = input("No of recipes (for example, 5: ") - - ingredients = input("List of ingredients (for example, chicken, potatoes, and carrots: ") - - # interpolate the number of recipes into the prompt an ingredients - prompt = f"Show me {no_recipes} recipes for a dish with the following ingredients: {ingredients}. Per recipe, list all the ingredients used" - ``` - - Execute o código e teste, e vejamos o resultado: - - ```output - No of recipes (for example, 5: 3 - List of ingredients (for example, chicken, potatoes, and carrots: milk,strawberries - - -Strawberry milk shake: milk, strawberries, sugar, vanilla extract, ice cubes - -Strawberry shortcake: milk, flour, baking powder, sugar, salt, unsalted butter, strawberries, whipped cream - -Strawberry milk: milk, strawberries, sugar, vanilla extract - ``` - -### Melhore adicionando filtro e lista de compras - -Agora nós temos um aplicativo funcionando capaz de produzir receitas e é flexível, pois depende de entradas do usuário, tanto no número de receitas quanto nos ingredientes usados. - -Para melhorar ainda mais, queremos adicionar o seguinte: - -- **Filtrar ingredientes**: Queremos ser capazes de filtrar ingredientes que não gostamos ou somos alérgicos. Para realizar essa alteração, podemos editar nosso prompt existente e adicionar uma condição de filtro ao final, assim: - - ```python - filter = input("Filter (for example, vegetarian, vegan, or gluten-free: ") - - prompt = f"Show me {no_recipes} recipes for a dish with the following ingredients: {ingredients}. Per recipe, list all the ingredients used, no {filter}" - ``` - - Acima adicionamos `{filter}` ao final do prompt e também capturamos o valor do filtro do usuário. - - Um exemplo de entrada da execução do programa pode ser assim: - - ```output - No of recipes (for example, 5: 3 - List of ingredients (for example, chicken, potatoes, and carrots: onion,milk - Filter (for example, vegetarian, vegan, or gluten-free: no milk - - 1. French Onion Soup - - Ingredients: - - -1 large onion, sliced - -3 cups beef broth - -1 cup milk - -6 slices french bread - -1/4 cup shredded Parmesan cheese - -1 tablespoon butter - -1 teaspoon dried thyme - -1/4 teaspoon salt - -1/4 teaspoon black pepper - - Instructions: - - 1. In a large pot, sauté onions in butter until golden brown. - 2. Add beef broth, milk, thyme, salt, and pepper. Bring to a boil. - 3. Reduce heat and simmer for 10 minutes. - 4. Place french bread slices on soup bowls. - 5. Ladle soup over bread. - 6. Sprinkle with Parmesan cheese. - - 2. Onion and Potato Soup - - Ingredients: - - -1 large onion, chopped - -2 cups potatoes, diced - -3 cups vegetable broth - -1 cup milk - -1/4 teaspoon black pepper - - Instructions: - - 1. In a large pot, sauté onions in butter until golden brown. - 2. Add potatoes, vegetable broth, milk, and pepper. Bring to a boil. - 3. Reduce heat and simmer for 10 minutes. - 4. Serve hot. - - 3. Creamy Onion Soup - - Ingredients: - - -1 large onion, chopped - -3 cups vegetable broth - -1 cup milk - -1/4 teaspoon black pepper - -1/4 cup all-purpose flour - -1/2 cup shredded Parmesan cheese - - Instructions: - - 1. In a large pot, sauté onions in butter until golden brown. - 2. Add vegetable broth, milk, and pepper. Bring to a boil. - 3. Reduce heat and simmer for 10 minutes. - 4. In a small bowl, whisk together flour and Parmesan cheese until smooth. - 5. Add to soup and simmer for an additional 5 minutes, or until soup has thickened. - ``` - - Como você pode ver, todas as receitas com leite foram filtradas. Mas, se você for intolerante à lactose, talvez queira filtrar também as receitas com queijo, então é preciso ser claro. - -- **Produze uma lista de compras**. Queremos produzir uma lista de compras, considerando o que já temos em casa. - - Para esta funcionalidade, poderíamos tentar resolver tudo em um prompt ou poderíamos dividi-lo em dois prompts. Vamos tentar a última abordagem. Aqui estamos sugerindo adicionar um prompt adicional, mas para que isso funcione, precisamos adicionar o resultado do prompt anterior como contexto para o prompt posterior. - - ```python - old_prompt_result = completion.choices[0].text - prompt = "Produce a shopping list for the generated recipes and please don't include ingredients that I already have." - - new_prompt = f"{old_prompt_result} {prompt}" - completion = openai.Completion.create(engine=deployment_name, prompt=new_prompt, max_tokens=1200) - - # print response - print("Shopping list:") - print(completion.choices[0].text) - ``` - - Observe o seguinte: - - 1. Nós estamos criando um novo prompt adicionando o resultado do primeiro prompt ao novo prompt: - - ```python - new_prompt = f"{old_prompt_result} {prompt}" - ``` - - 1. Nós fizemos uma nova requisição, mas também considerando o número de tokens que solicitamos no primeiro prompt, então desta vez dizemos que `max_tokens` é 1200. - - ```python - completion = openai.Completion.create(engine=deployment_name, prompt=new_prompt, max_tokens=1200) - ``` - - Dando uma olhada neste código, chegamos agora à seguinte saída: - - ```output - No of recipes (for example, 5: 2 - List of ingredients (for example, chicken, potatoes, and carrots: apple,flour - Filter (for example, vegetarian, vegan, or gluten-free: sugar - - - - Apple and flour pancakes: 1 cup flour, 1/2 tsp baking powder, 1/2 tsp baking soda, 1/4 tsp salt, 1 tbsp sugar, 1 egg, 1 cup buttermilk or sour milk, 1/4 cup melted butter, 1 Granny Smith apple, peeled and grated - - - Apple fritters: 1-1/2 cups flour, 1 tsp baking powder, 1/4 tsp salt, 1/4 tsp baking soda, 1/4 tsp nutmeg, 1/4 tsp cinnamon, 1/4 tsp allspice, 1/4 cup sugar, 1/4 cup vegetable shortening, 1/4 cup milk, 1 egg, 2 cups shredded, peeled apples - - Shopping list: - - Flour, baking powder, baking soda, salt, sugar, egg, buttermilk, butter, apple, nutmeg, cinnamon, allspice - ``` - -## Melhorando a nossa configuração - -O que temos até agora é um código que funciona, mas há algumas alterações que devemos fazer para melhorar ainda mais as coisas. Algumas coisas que devemos fazer são: - -- **Separar `secrets` do código**, como a chave da API. Segredos não pertencem ao código e devem ser armazenados em um local seguro. Para separar segredos do código, podemos usar variáveis de ambiente e bibliotecas como `python-dotenv` para carregá-los de um arquivo. Veja como isso ficaria no código: - - 1. Crie um arquivo `.env` com o seguinte conteúdo: - - ```bash - OPENAI_API_KEY=sk-... - ``` - - > Observação: para o Azure, você precisa definir as seguintes variáveis de ambiente: - - ```bash - OPENAI_API_TYPE=azure - OPENAI_API_VERSION=2023-05-15 - OPENAI_API_BASE= - ``` - - No código, você carregaria as variáveis de ambiente assim: - - ```python - from dotenv import load_dotenv - - load_dotenv() - - openai.api_key = os.environ["OPENAI_API_KEY"] - ``` - -- **Uma palavra sobre o comprimento do token**. Devemos considerar quantos tokens precisamos para gerar o texto que queremos. Tokens custam dinheiro, então, sempre que possível, devemos tentar ser econômicos com o número de tokens que usamos. Por exemplo, podemos formular o prompt para que possamos usar menos tokens? - - Para alterar os tokens usados, você pode usar o parâmetro `max_tokens`. Por exemplo, se você quiser usar 100 tokens, você faria: - - ```python - completion = openai.Completion.create(model="davinci-002", prompt=prompt, max_tokens=100) - ``` - -- **Experimentando com a temperatura**. A temperatura é algo que não mencionamos até agora. Porém, é um contexto importante para o desempenho de nosso programa. Quanto maior o valor da temperatura, mais aleatório será o resultado. Por outro lado, quanto menor o valor da temperatura, mais previsível será o resultado. Considere se você deseja ou não variação na saída. - - Para alterar a temperatura, você pode usar o parâmetro `temperature`. Por exemplo, se você quiser usar uma temperatura de 0.5, você faria: - - ```python - completion = openai.Completion.create(model="davinci-002", prompt=prompt, temperature=0.5) - ``` - - > Observação: quanto mais próximo de 1.0, mais variada será a saída. - -## Tarefa - -Para esta tarefa, você pode escolher o que criar para um aplicativo. - -Aqui estão algumas sugestões: - -- Ajuste o aplicativo gerador de receitas para melhorá-lo ainda mais. Brinque com os valores de temperatura e os prompts para ver o que você pode criar. -- Crie um "companheiro de estudos". Este aplicativo deve ser capaz de responder a perguntas sobre um tópico. Por exemplo: Python. Você poderia ter prompts como: "O que é um certo tópico em Python?" ou poderia ter um prompt que diz: "Me mostre o código para um certo tópico", etc. - -- Bot de história, faça a história ganhar vida, instrua o bot a interpretar um certo personagem histórico e faça perguntas sobre sua vida e época. - -## Solução - -### Amigo de Estudo - -Abaixo está um prompt inicial, veja como você pode usá-lo e ajustá-lo ao seu gosto. - -```text -- "You're an expert on the Python language - - Suggest a beginner lesson for Python in the following format: - - Format: - - concepts: - - brief explanation of the lesson: - - exercise in code with solutions" -``` - -### Bot de História - -Aqui estão alguns prompts que você pode usar: - -```text -- "You are Abe Lincoln, tell me about yourself in 3 sentences, and respond using grammar and words like Abe would have used" -- "You are Abe Lincoln, respond using grammar and words like Abe would have used: - - Tell me about your greatest accomplishments, in 300 words" -``` - -## Verificação de Conhecimento - -What does the concept temperature do? - -O que o conceito de temperatura faz? - -1. Ele controla o quão aleatória é a saída. -2. Ele controla o quão grande é a resposta. -3. Ele controla quantos tokens são usados. - -Resposta: 1. Ele controla o quão aleatória é a saída. - -## 🚀 Desafio - -When working on the assignment, try to vary the temperature, try set it to 0, 0.5, and 1. Remember that 0 is the least varied and 1 is the most, what value works best for your app? - -Quando estiver trabalhando na tarefa, tente variar a temperatura, tente definir para 0, 0.5 e 1. Lembre-se de que 0 é o menos variado e 1 é o mais, qual valor funciona melhor para o seu aplicativo? - -## Excelente trabalho! Continue seu aprendizado - -Após concluir esta lição, confira nossa [coleção de aprendizado de IA generativa](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) para continuar a aprimorar seus conhecimentos sobre IA generativa! - -Vamos prosseguir para a Lição 7, onde veremos como [criar aplicativos de chat](../../../07-building-chat-applications/translations/pt-br/README.md?WT.mc_id=academic-105485-koreyst)! diff --git a/06-text-generation-apps/translations/tw/README.md b/06-text-generation-apps/translations/tw/README.md deleted file mode 100644 index 54d1bce166..0000000000 --- a/06-text-generation-apps/translations/tw/README.md +++ /dev/null @@ -1,656 +0,0 @@ -# 建構文本生成應用程式 - -[![建構文本生成應用程式](../../images/06-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson6-gh?WT.mc_id=academic-105485-koreyst) - -> _(點擊上方圖片以觀看本課的影片)_ - -你已經透過這個課程看到了核心概念,如提示,甚至還有一個叫做「提示工程」的整個學科。許多工具如ChatGPT、Office 365、Microsoft Power Platform等,都支持你使用提示來完成某些事情。 - -為了讓你將這樣的體驗添加到應用程式中,你需要了解提示、完成等概念,並選擇一個函式庫來使用。這正是你在本章中將學到的內容。 - -## 簡介 - -在本章中,你將: - -- 了解 openai 函式庫及其核心概念。 -- 使用 openai 建構一個文字產生應用程式。 -- 了解如何使用提示、溫度和代幣等概念來建構一個文字產生應用程式。 - -## 學習目標 - -在本課程結束時,你將能夠: - -- 解釋什麼是文字生成應用程式。 -- 使用 openai 建立一個文字生成應用程式。 -- 配置你的應用程式以使用更多或更少的 tokens,並且改變溫度,以獲得多樣化的輸出。 - -## 什麼是文字生成應用程式? - -通常當你建構一個應用程式時,它會有某種介面,如下所示: - -- 基於命令。控制台應用程式是典型的應用程式,你輸入一個命令,它就會執行一個任務。例如,`git` 是一個基於命令的應用程式。 -- 使用者介面 (UI)。有些應用程式有圖形使用者介面 (GUI),你可以點擊按鈕、輸入文字、選擇選項等。 - -### 控制台和 UI 應用程式是有限的 - -將其與基於命令的應用程式進行比較,在那裡你輸入一個命令: - -- **它有限制**。你不能隨便輸入任何命令,只能輸入應用程式支援的命令。 -- **特定語言**。有些應用程式支援多種語言,但預設情況下應用程式是為特定語言建構的,即使你可以添加更多語言支援。 - -### 文字生成應用程式的好處 - -那麼文本生成應用程式有什麼不同呢? - -在一個文本生成應用中,你有更多的靈活性,你不會被限制於一組命令或特定的輸入語言。相反,你可以使用自然語言與應用互動。另一個好處是,因為你已經在與一個經過大量資訊訓練的數據源互動,而傳統應用可能會被限制於資料庫中的內容。 - -### 我可以用文字生成應用程式建構什麼? - -有許多事情你可以建構。例如: - -- **聊天機器人**。一個回答有關主題問題的聊天機器人,比如你的公司及其產品,可能是一個很好的匹配。 -- **助手**。LLM 在總結文本、從文本中獲取見解、生成像簡歷這樣的文本等方面非常出色。 -- **程式碼助手**。根據你使用的語言模型,你可以建構一個幫助你編寫程式碼的程式碼助手。例如,你可以使用像 GitHub Copilot 以及 ChatGPT 這樣的產品來幫助你編寫程式碼。 - -## 我該如何開始? - -嗯,你需要找到一種方式來整合 LLM,這通常涉及以下兩種方法: - -- 使用 API。在這裡,你正在使用提示來構建網路請求並獲取生成的文本。 -- 使用函式庫。函式庫有助於封裝 API 呼叫並使其更易於使用。 - -## 函式庫/SDKs - -有一些知名的函式庫可用於處理 LLM,例如: - -- **openai**,此函式庫讓連接到您的模型並發送提示變得容易。 - -然後有一些函式庫在更高層次上運作,例如: - -- **Langchain**。Langchain 眾所周知並且支援 Python。 -- **Semantic Kernel**。Semantic Kernel 是 Microsoft 的一個函式庫,支援 C#、Python 和 Java 語言。 - -## 第一個使用 openai 的應用程式 - -讓我們看看如何建構我們的第一個應用程式,需要哪些函式庫,需要多少等等。 - -### 安裝 openai - -有許多函式庫可以與 OpenAI 或 Azure OpenAI 互動。也可以使用多種程式語言,如 C#、Python、JavaScript、Java 等。我們選擇使用 `openai` Python 函式庫,因此我們將使用 `pip` 來安裝它。 - -```bash -pip install openai -``` - -### 建立資源 - -你需要執行以下步驟: - -- 在 Azure 上建立帳戶 [https://azure.microsoft.com/free/](https://azure.microsoft.com/free/?WT.mc_id=academic-105485-koreyst)。 -- 獲取 Azure OpenAI 的存取權。前往 [https://learn.microsoft.com/azure/ai-services/openai/overview#how-do-i-get-access-to-azure-openai](https://learn.microsoft.com/azure/ai-services/openai/overview#how-do-i-get-access-to-azure-openai?WT.mc_id=academic-105485-koreyst) 並請求存取權。 - - > [!NOTE] - > 在撰寫本文時,您需要申請存取 Azure OpenAI。 - -- 安裝 Python -- 已建立 Azure OpenAI 服務資源。請參閱此指南了解如何[建立資源](https://learn.microsoft.com/azure/ai-services/openai/how-to/create-resource?pivots=web-portal?WT.mc_id=academic-105485-koreyst)。 - -### 找到 API 金鑰和端點 - -此時,你需要告訴你的 `openai` 函式庫要使用哪個 API 金鑰。要找到你的 API 金鑰,請前往 Azure OpenAI 資源的 "Keys and Endpoint" 部分並複製 "Key 1" 值。 - -![金鑰和端點資源頁面在 Azure Portal 中](https://learn.microsoft.com/azure/ai-services/openai/media/quickstarts/endpoint.png?WT.mc_id=academic-105485-koreyst) - -現在你已經複製了這些資訊,讓我們指示函式庫使用它。 - -> [!NOTE] -> 值得將您的 API 金鑰與程式碼分開。您可以使用環境變數來做到這一點。 -> -> - 將環境變數 `OPENAI_API_KEY` 設定為您的 API 金鑰。 -> `export OPENAI_API_KEY='sk-...'` - -### 設定配置 Azure - -如果你正在使用 Azure OpenAI,以下是設定配置的方法: - -```python -openai.api_type = 'azure' -openai.api_key = os.environ["OPENAI_API_KEY"] -openai.api_version = '2023-05-15' -openai.api_base = os.getenv("API_BASE") -``` - -以上我們設定以下內容: - -- `api_type` 設為 `azure`。這告訴函式庫使用 Azure OpenAI 而非 OpenAI。 -- `api_key`,這是你在 Azure Portal 中找到的 API 金鑰。 -- `api_version`,這是你想使用的 API 版本。在撰寫本文時,最新的版本是 `2023-05-15`。 -- `api_base`,這是 API 的端點。你可以在 Azure Portal 中的 API 金鑰旁找到。 - -> [!NOTE] > `os.getenv` 是一個讀取環境變數的函式。你可以使用它來讀取像是 `OPENAI_API_KEY` 和 `API_BASE` 的環境變數。在你的終端機中設定這些環境變數或使用像 `dotenv` 這樣的函式庫。 - -## 產生文字 - -生成文本的方法是使用 `Completion` 類別。以下是一個範例: - -```python -prompt = "Complete the following: Once upon a time there was a" - -completion = openai.Completion.create(model="davinci-002", prompt=prompt) -print(completion.choices[0].text) -``` - -在上述程式碼中,我們建立一個完成物件並傳入我們想要使用的模型和提示。然後我們列印產生的文字。 - -### 聊天完成 - -到目前為止,你已經看到我們如何使用 `Completion` 來產生文本。但還有另一個更適合聊天機器人的類別,稱為 `ChatCompletion`。以下是使用它的範例: - -```python -import openai - -openai.api_key = "sk-..." - -completion = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=[{"role": "user", "content": "Hello world"}]) -print(completion.choices[0].message.content) -``` - -更多關於此功能的資訊在即將到來的章節中。 - -## 練習 - 您的第一個文本生成應用程序 - -現在我們已經學會如何設定和配置 openai,是時候建構你的第一個文字產生應用了。要建構你的應用,請按照以下步驟操作: - -1. 建立虛擬環境並安裝 openai: - - ```bash - python -m venv venv - source venv/bin/activate - pip install openai - ``` - - > [!NOTE] - > 如果你使用的是 Windows,請輸入 `venv\Scripts\activate` 而不是 `source venv/bin/activate`。 - - > [!NOTE] - > 前往 [https://portal.azure.com/](https://portal.azure.com/?WT.mc_id=academic-105485-koreyst) 並搜尋 `Open AI`,選擇 `Open AI resource`,然後選擇 `Keys and Endpoint` 並複製 `Key 1` 的值來找到你的 Azure OpenAI 金鑰。 - -1. 建立一個 _app.py_ 文件並給它以下程式碼: - - ```python - import openai - - openai.api_key = "" - - openai.api_type = 'azure' - openai.api_version = '2023-05-15' - openai.api_base = "" - deployment_name = "" - - # 添加你的完成程式碼 - prompt = "Complete the following: Once upon a time there was a" - messages = [{"role": "user", "content": prompt}] - - # 進行完成 - completion = client.chat.completions.create(model=deployment, messages=messages) - - # 打印回應 - print(completion.choices[0].message.content) - ``` - - > [!NOTE] - > 如果你使用的是 Azure OpenAI,你需要將 `api_type` 設置為 `azure` 並將 `api_key` 設置為你的 Azure OpenAI 金鑰。 - - 你應該會看到如下輸出: - - ```output - very unhappy _____. - - Once upon a time there was a very unhappy mermaid. - ``` - -## 不同類型的提示,用於不同的事情 - -現在你已經看到了如何使用提示生成文本。你甚至有一個正在執行的程式碼,可以修改和更改以生成不同類型的文本。 - -提示可以用於各種任務。例如: - -- **生成一種類型的文本**。例如,你可以生成一首詩、測驗的問題等。 -- **查找資訊**。你可以使用提示來查找資訊,例如以下範例'在網頁開發中,CORS 是什麼意思?'。 -- **生成程式碼**。你可以使用提示來生成程式碼,例如開發用於驗證電子郵件的正則表達式,或者為什麼不生成整個程式,例如一個網頁應用程式? - -## 更實用的使用案例: 秘訣產生器 - -想像一下你在家裡有食材,並且你想做些料理。為此,你需要一個秘訣。一種找到秘訣的方法是使用搜尋引擎,或者你可以使用 LLM 來完成。 - -你可以這樣寫一個提示: - -> "給我 5 個使用以下食材的菜餚秘訣: 雞肉、馬鈴薯和胡蘿蔔。每個秘訣列出所有使用的食材" - -根據上述提示,你可能會得到類似的回應: - -```output -1. 烤雞和蔬菜: -材料: -- 4 塊雞腿 -- 2 個馬鈴薯,切成塊 -- 2 根胡蘿蔔,切成塊 -- 2 湯匙橄欖油 -- 2 瓣大蒜,切碎 -- 1 茶匙乾百里香 -- 1 茶匙乾牛至 -- 鹽和胡椒,適量 - -2. 雞肉和馬鈴薯燉菜: -材料: -- 2 湯匙橄欖油 -- 1 個洋蔥,切丁 -- 2 瓣大蒜,切碎 -- 2 塊雞胸肉,切成塊 -- 2 個馬鈴薯,切成塊 -- 2 根胡蘿蔔,切成塊 -- 1 茶匙乾牛至 -- 1 茶匙乾百里香 -- 1 杯雞湯 -- 鹽和胡椒,適量 - -3. 雞肉和馬鈴薯烤盤: -材料: -- 2 湯匙橄欖油 -- 2 塊雞胸肉,切成塊 -- 2 個馬鈴薯,切成塊 -- 2 根胡蘿蔔,切成塊 -- 1 個洋蔥,切丁 -- 2 瓣大蒜,切碎 -- 1 茶匙乾牛至 -- 1 茶匙乾百里香 -- 1 杯雞湯 -- 鹽和胡椒,適量 - -4. 雞肉和馬鈴薯湯: -材料: -- 2 湯匙橄欖油 -- 1 個洋蔥,切丁 -- 2 瓣大蒜,切碎 -- 2 塊雞胸肉,切成塊 -- 2 個馬鈴薯,切成塊 -- 2 根胡蘿蔔,切成塊 -- 1 茶匙乾牛至 -- 1 茶匙乾百里香 -- 4 杯雞湯 -- 鹽和胡椒,適量 - -5. 雞肉和馬鈴薯雜燴: -材料: -- 2 湯匙橄欖油 -- 2 塊雞胸肉,切成塊 -- 2 個馬鈴薯,切成塊 -- 2 根胡蘿蔔,切成塊 -- 1 個洋蔥,切丁 -- 2 瓣大蒜,切碎 -- 1 茶匙乾牛至 -``` - -這個結果很棒,我知道要煮什麼。此時,可能有用的改進是: - -- 過濾掉我不喜歡或過敏的食材。 -- 產生購物清單,以防我家裡沒有所有食材。 - -對於上述情況,讓我們添加一個額外的提示: - -> "請移除含有大蒜的秘訣,因為我對大蒜過敏,並用其他東西替代。另外,請為這些秘訣製作一個購物清單,考慮到我家裡已經有雞肉、馬鈴薯和胡蘿蔔。" - -現在你有一個新結果,即: - -```output -1. 烤雞和蔬菜: -食材: -- 4 隻雞腿 -- 2 個馬鈴薯,切成塊 -- 2 根胡蘿蔔,切成塊 -- 2 湯匙橄欖油 -- 1 茶匙乾百里香 -- 1 茶匙乾牛至 -- 鹽和胡椒,適量 - -2. 雞肉和馬鈴薯燉菜: -食材: -- 2 湯匙橄欖油 -- 1 個洋蔥,切丁 -- 2 塊雞胸肉,切成塊 -- 2 個馬鈴薯,切成塊 -- 2 根胡蘿蔔,切成塊 -- 1 茶匙乾牛至 -- 1 茶匙乾百里香 -- 1 杯雞湯 -- 鹽和胡椒,適量 - -3. 雞肉和馬鈴薯烤盤: -食材: -- 2 湯匙橄欖油 -- 2 塊雞胸肉,切成塊 -- 2 個馬鈴薯,切成塊 -- 2 根胡蘿蔔,切成塊 -- 1 個洋蔥,切丁 -- 1 茶匙乾牛至 -- 1 茶匙乾百里香 -- 1 杯雞湯 -- 鹽和胡椒,適量 - -4. 雞肉和馬鈴薯湯: -食材: -- 2 湯匙橄欖油 -- 1 個洋蔥,切丁 -- 2 塊雞胸肉,切成塊 -- 2 個馬鈴薯,切成塊 -- 2 根胡蘿蔔,切成塊 -- 1 茶匙乾牛至 -- 1 茶匙乾百里香 -- 4 杯雞湯 -- 鹽和胡椒,適量 - -5. 雞肉和馬鈴薯雜燴: -食材: -- 2 湯匙橄欖油 -- 2 塊雞胸肉,切成塊 -- 2 個馬鈴薯,切成塊 -- 2 根胡蘿蔔,切成塊 -- 1 個洋蔥,切丁 -- 1 茶匙乾牛至 - -購物清單: -- 橄欖油 -- 洋蔥 -- 百里香 -- 牛至 -- 鹽 -- 胡椒 -``` - -這就是你的五個秘訣,沒有提到大蒜,並且你還有一個購物清單,考慮到你家裡已經有的東西。 - -## 練習 - 建構一個秘訣產生器 - -現在我們已經演示了一個場景,讓我們寫程式碼來匹配演示的場景。要做到這一點,請按照以下步驟操作: - -1. 使用現有的 _app.py_ 文件作為起點 -1. 找到 `prompt` 變數並將其程式碼更改為以下內容: - - ```python - prompt = "Show me 5 recipes for a dish with the following ingredients: chicken, potatoes, and carrots. Per recipe, list all the ingredients used" - ``` - - 如果你現在執行程式碼,你應該會看到類似以下的輸出: - - ```output - -Chicken Stew with Potatoes and Carrots: 3 tablespoons oil, 1 onion, chopped, 2 cloves garlic, minced, 1 carrot, peeled and chopped, 1 potato, peeled and chopped, 1 bay leaf, 1 thyme sprig, 1/2 teaspoon salt, 1/4 teaspoon black pepper, 1 1/2 cups chicken broth, 1/2 cup dry white wine, 2 tablespoons chopped fresh parsley, 2 tablespoons unsalted butter, 1 1/2 pounds boneless, skinless chicken thighs, cut into 1-inch pieces - -Oven-Roasted Chicken with Potatoes and Carrots: 3 tablespoons extra-virgin olive oil, 1 tablespoon Dijon mustard, 1 tablespoon chopped fresh rosemary, 1 tablespoon chopped fresh thyme, 4 cloves garlic, minced, 1 1/2 pounds small red potatoes, quartered, 1 1/2 pounds carrots, quartered lengthwise, 1/2 teaspoon salt, 1/4 teaspoon black pepper, 1 (4-pound) whole chicken - -Chicken, Potato, and Carrot Casserole: cooking spray, 1 large onion, chopped, 2 cloves garlic, minced, 1 carrot, peeled and shredded, 1 potato, peeled and shredded, 1/2 teaspoon dried thyme leaves, 1/4 teaspoon salt, 1/4 teaspoon black pepper, 2 cups fat-free, low-sodium chicken broth, 1 cup frozen peas, 1/4 cup all-purpose flour, 1 cup 2% reduced-fat milk, 1/4 cup grated Parmesan cheese - - -One Pot Chicken and Potato Dinner: 2 tablespoons olive oil, 1 pound boneless, skinless chicken thighs, cut into 1-inch pieces, 1 large onion, chopped, 3 cloves garlic, minced, 1 carrot, peeled and chopped, 1 potato, peeled and chopped, 1 bay leaf, 1 thyme sprig, 1/2 teaspoon salt, 1/4 teaspoon black pepper, 2 cups chicken broth, 1/2 cup dry white wine - - -Chicken, Potato, and Carrot Curry: 1 tablespoon vegetable oil, 1 large onion, chopped, 2 cloves garlic, minced, 1 carrot, peeled and chopped, 1 potato, peeled and chopped, 1 teaspoon ground coriander, 1 teaspoon ground cumin, 1/2 teaspoon ground turmeric, 1/2 teaspoon ground ginger, 1/4 teaspoon cayenne pepper, 2 cups chicken broth, 1/2 cup dry white wine, 1 (15-ounce) can chickpeas, drained and rinsed, 1/2 cup raisins, 1/2 cup chopped fresh cilantro - ``` - - > 注意,你的 LLM 是非確定性的,所以每次執行程式時可能會得到不同的結果。 - - 很好,讓我們看看如何改進。為了改進,我們希望確保程式碼是靈活的,以便可以改進和更改食材和食譜數量。 - -1. 讓我們以以下方式更改程式碼: - - ```python - no_recipes = input("No of recipes (for example, 5: ") - - ingredients = input("List of ingredients (for example, chicken, potatoes, and carrots: ") - - # interpolate the number of recipes into the prompt an ingredients - prompt = f"Show me {no_recipes} recipes for a dish with the following ingredients: {ingredients}. Per recipe, list all the ingredients used" - ``` - - 測試執行程式碼,可能看起來像這樣: - - ```output - No of recipes (for example, 5: 3 - List of ingredients (for example, chicken, potatoes, and carrots: milk,strawberries - - -Strawberry milk shake: milk, strawberries, sugar, vanilla extract, ice cubes - -Strawberry shortcake: milk, flour, baking powder, sugar, salt, unsalted butter, strawberries, whipped cream - -Strawberry milk: milk, strawberries, sugar, vanilla extract - ``` - -### 改進:新增篩選和購物清單 - -我們現在有一個可運作的應用程式,能夠產生秘訣,並且它很靈活,因為它依賴於使用者的輸入,不僅是秘訣的數量,還有使用的成分。 - -為了進一步改進它,我們想添加以下內容: - -- **篩選食材**。我們希望能夠篩選出我們不喜歡或過敏的食材。為了完成這個變更,我們可以編輯現有的提示,並在其末尾添加一個篩選條件,如下所示: - - ```python - filter = input("篩選(例如,素食,純素,或無麩質: ") - - prompt = f"給我{no_recipes}道菜的食譜,包含以下食材: {ingredients}。每個食譜列出所有使用的食材,不包含{filter}" - ``` - - 上述程式碼中,我們在提示的末尾添加了`{filter}`,並且從用戶那裡獲取篩選值。 - - 現在,執行程式的範例輸入可以如下所示: - - ```output - 食譜數量(例如,5: 3 - 食材列表(例如,雞肉,馬鈴薯和胡蘿蔔: 洋蔥,牛奶 - 篩選(例如,素食,純素,或無麩質: 不含牛奶 - - 1. 法式洋蔥湯 - - 食材: - - -1個大洋蔥,切片 - -3杯牛肉湯 - -1杯牛奶 - -6片法國麵包 - -1/4杯磨碎的帕瑪森起司 - -1湯匙黃油 - -1茶匙乾百里香 - -1/4茶匙鹽 - -1/4茶匙黑胡椒 - - 做法: - - 1. 在大鍋中,用黃油將洋蔥炒至金黃色。 - 2. 加入牛肉湯、牛奶、百里香、鹽和胡椒。煮沸。 - 3. 降低火候,煮10分鐘。 - 4. 將法國麵包片放在湯碗中。 - 5. 將湯舀在麵包上。 - 6. 撒上帕瑪森起司。 - - 2. 洋蔥和馬鈴薯湯 - - 食材: - - -1個大洋蔥,切碎 - -2杯馬鈴薯,切丁 - -3杯蔬菜湯 - -1杯牛奶 - -1/4茶匙黑胡椒 - - 做法: - - 1. 在大鍋中,用黃油將洋蔥炒至金黃色。 - 2. 加入馬鈴薯、蔬菜湯、牛奶和胡椒。煮沸。 - 3. 降低火候,煮10分鐘。 - 4. 熱食。 - - 3. 奶油洋蔥湯 - - 食材: - - -1個大洋蔥,切碎 - -3杯蔬菜湯 - -1杯牛奶 - -1/4茶匙黑胡椒 - -1/4杯通用麵粉 - -1/2杯磨碎的帕瑪森起司 - - 做法: - - 1. 在大鍋中,用黃油將洋蔥炒至金黃色。 - 2. 加入蔬菜湯、牛奶和胡椒。煮沸。 - 3. 降低火候,煮10分鐘。 - 4. 在小碗中,將麵粉和帕瑪森起司攪拌均勻,直到光滑。 - 5. 加入湯中,繼續煮5分鐘,或直到湯變稠。 - ``` - - 如你所見,任何含有牛奶的食譜都被篩選掉了。但是,如果你對乳糖不耐,你可能還想篩選掉含有起司的食譜,因此需要明確說明。 - -- **生成購物清單**。我們希望生成購物清單,考慮到我們家裡已經有的食材。 - - 對於這個功能,我們可以嘗試在一個提示中解決所有問題,或者我們可以將其分成兩個提示。讓我們嘗試後者的方法。這裡我們建議添加一個額外的提示,但為了使其工作,我們需要將前一個提示的結果作為上下文添加到後一個提示中。 - - 找到程式碼中打印出第一個提示結果的部分,並在其下方添加以下程式碼: - - ```python - old_prompt_result = completion.choices[0].message.content - prompt = "為生成的食譜生成購物清單,請不要包括我已經有的食材。" - - new_prompt = f"{old_prompt_result} {prompt}" - messages = [{"role": "user", "content": new_prompt}] - completion = openai.Completion.create(engine=deployment_name, messages=messages, max_tokens=1200) - - # 打印回應 - print("購物清單:") - print(completion.choices[0].message.content) - ``` - - 注意以下幾點: - - 1. 我們通過將第一個提示的結果添加到新提示中來構建一個新提示: - - ```python - new_prompt = f"{old_prompt_result} {prompt}" - ``` - - 1. 我們發出一個新請求,但也考慮到我們在第一個提示中請求的 token 數量,所以這次我們說 `max_tokens` 是1200。 - - ```python - completion = openai.Completion.create(engine=deployment_name, prompt=new_prompt, max_tokens=1200) - ``` - - 試用這段程式碼,我們現在得到以下輸出: - - ```output - 食譜數量(例如,5: 2 - 食材列表(例如,雞肉,馬鈴薯和胡蘿蔔: 蘋果,麵粉 - 篩選(例如,素食,純素,或無麩質: 糖 - - - -蘋果和麵粉煎餅: 1杯麵粉,1/2茶匙泡打粉,1/2茶匙小蘇打,1/4茶匙鹽,1湯匙糖,1個雞蛋,1杯酪乳或酸奶,1/4杯融化的黃油,1個格蘭尼史密斯蘋果,去皮並磨碎 - -蘋果油炸圈餅: 1-1/2杯麵粉,1茶匙泡打粉,1/4茶匙鹽,1/4茶匙小蘇打,1/4茶匙肉豆蔻,1/4茶匙肉桂,1/4茶匙五香粉,1/4杯糖,1/4杯植物油,1/4杯牛奶,1個雞蛋,2杯磨碎的去皮蘋果 - 購物清單: - -麵粉,泡打粉,小蘇打,鹽,糖,雞蛋,酪乳,黃油,蘋果,肉豆蔻,肉桂,五香粉 - ``` - -## 改善你的設定 - -我們目前擁有的是可以運作的程式碼, 但我們應該做一些調整來進一步改進。一些我們應該做的事情是: - -- **將秘密從程式碼中分離**,例如 API 金鑰。秘密不應該存在於程式碼中,應該儲存在安全的位置。要將秘密從程式碼中分離,我們可以使用環境變數和像 `python-dotenv` 這樣的函式庫從文件中載入它們。以下是程式碼中的做法: - - 1. 建立一個 `.env` 文件,內容如下: - - ```bash - OPENAI_API_KEY=sk-... - ``` - - > 注意,對於 Azure,你需要設定以下環境變數: - - ```bash - OPENAI_API_TYPE=azure - OPENAI_API_VERSION=2023-05-15 - OPENAI_API_BASE= - ``` - - 在程式碼中,你可以這樣載入環境變數: - - ```python - from dotenv import load_dotenv - - load_dotenv() - - openai.api_key = os.environ["OPENAI_API_KEY"] - ``` - -- **關於 token 長度的一句話**。我們應該考慮需要多少 token 來生成我們想要的文本。token 是要花錢的,所以在可能的情況下,我們應該嘗試節省使用的 token 數量。例如,我們能否調整提示語句以使用更少的 token? - - 要更改使用的 token 數量,你可以使用 `max_tokens` 參數。例如,如果你想使用 100 個 token,你可以這樣做: - - ```python - completion = client.chat.completions.create(model=deployment, messages=messages, max_tokens=100) - ``` - -- **嘗試調整 temperature**。temperature 是我們到目前為止還沒有提到的,但它對我們程式的表現有重要影響。temperature 值越高,輸出就越隨機。相反,temperature 值越低,輸出就越可預測。考慮你是否希望輸出有變化。 - - 要改變 temperature,你可以使用 `temperature` 參數。例如,如果你想使用 0.5 的 temperature,你可以這樣做: - - ```python - completion = client.chat.completions.create(model=deployment, messages=messages, temperature=0.5) - ``` - - > 注意,越接近 1.0,輸出越多樣化。 - -## 作業 - -在這個作業中,你可以選擇要建構什麼。 - -以下是一些建議: - -- 調整秘訣產生器應用程式以進一步改進。嘗試不同的溫度值和提示,看看你能想出什麼。 -- 建立一個「學習夥伴」。這個應用程式應該能夠回答關於某個主題的問題,例如 Python,你可以有類似「Python 中的某個主題是什麼?」的提示,或者你可以有一個提示說,顯示某個主題的程式碼等。 -- 歷史機器人,讓歷史重現,指示機器人扮演某個歷史人物,並詢問它關於其生活和時代的問題。 - -## 解決方案 - -### 學習夥伴 - -以下是一個入門提示,看看你如何使用它並根據自己的喜好進行調整。 - -```text -- "你是 Python 語言的專家 - - 建議一個適合初學者的 Python 課程,格式如下: - - 格式: - - 概念: - - 課程簡要說明: - - 帶解答的程式碼練習" -``` - -### 歷史機器人 - -以下是一些你可以使用的提示: - -```text -- "你是 Abe Lincoln,用三句話告訴我你自己,並使用 Abe 會使用的語法和詞彙來回答" -- "你是 Abe Lincoln,使用 Abe 會使用的語法和詞彙來回答: - - 用 300 字告訴我你最大的成就" -``` - -## 知識檢查 - -概念溫度是做什麼的? - -1. 它控制輸出的隨機程度。 -1. 它控制回應的大小。 -1. 它控制使用的標記數量。 - -## 🚀 挑戰 - -在完成作業時,嘗試變更溫度,嘗試將其設為 0、0.5 和 1。記住,0 是變化最小的,1 是變化最大的,哪個值最適合你的應用程式? - -## 很棒的工作!繼續學習 - -完成本課程後,請查看我們的[生成式 AI 學習集合](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst)以繼續提升您的生成式 AI 知識! - -前往第7課,我們將探討如何[建構聊天應用程式](../../../07-building-chat-applications/translations/tw/README.md?WT.mc_id=academic-105485-koreyst)! - diff --git a/07-building-chat-applications/translations/cn/README.md b/07-building-chat-applications/translations/cn/README.md deleted file mode 100644 index 9748ccabca..0000000000 --- a/07-building-chat-applications/translations/cn/README.md +++ /dev/null @@ -1,194 +0,0 @@ -# 第七章:创建聊天应用 - -[![Building Generative AI-Powered Chat Applications](../../images/07-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lessons7-gh?WT.mc_id=academic-105485-koreyst) - -> _(点击该图片看本章导学视频)_ - -通过之前的学习,我们了解了如何构建文本生成应用程序,接下来让我们看看聊天应用程序是如何实现的 - -聊天应用程序已融入我们的日常生活,提供的不仅仅是一种随意交谈的方式。 已经成为客户服务、技术支持甚至复杂的咨询系统不可或缺的一部分。 您可能已经从聊天应用程序获得了一些帮助。 随着我们将生成式人工智能等更先进的技术集成到这些平台中,复杂性随之增加,挑战也随之增加。 - -我们需要回答的一些问题是: - -- **构建应用程序** 我们如何针对特定场景高效构建并无缝集成这些人工智能驱动的应用程序? -- **有效监控** 部署后,我们如何监控并确保应用程序在功能方面遵守[负责任的人工智能六项原则](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-105485-koreyst)? - -随着我们进一步进入自动化和无缝人机交互的时代,了解生成式人工智能如何改变聊天应用程序的范围、深度和适应性变得至关重要。 本课程将研究支持这些复杂系统的架构的各个方面,深入研究针对特定场景进行微调的方法,并评估和确保负责任的人工智能部署相关的指标和注意事项。 - -## 本章概述 - -在本章中,您将学习到: - -- 有效构建和集成聊天应用程序的技术。 -- 如何对应用程序进行定制和微调。 -- 有效监控聊天应用程序的策略和注意事项。 - -## 学习目标 - -在完成本章的学习,您将能够: - -- 描述构建聊天应用程序并将其集成到现有系统中的注意事项。 -- 针对特定场景定制聊天应用程序。 -- 确定关键指标和注意事项,以有效监控和维护人工智能聊天应用程序的质量。 -- 确保聊天应用程序负责任地使用人工智能。 - -## 将生成式人工智能集成到聊天应用程序中 - -通过生成式人工智能提升聊天应用程序不仅是为了让它们变得更智能,也是为了让它们变得更聪明。 这是关于优化其架构、性能和用户界面以提供优质的用户体验。 这涉及研究架构基础、API 集成和用户界面注意事项。 本章旨在为您提供一个全面的路线图,用于导航这些复杂的环境,无论您是将它们插入现有系统还是将它们构建为独立平台。 - -读完本节后,您将具备高效构建和合并聊天应用程序所需的专业知识。 - -### 聊天机器人还是聊天应用程序? - -在我们深入构建聊天应用程序之前,让我们将“传统聊天机器人”与“生成式人工智能驱动的人工智能”进行比较,它们具有不同的角色和功能。 传统聊天机器人的主要目的是自动执行特定的对话任务,例如回答常见问题或跟踪包裹。 它通常由基于规则的逻辑或复杂的人工智能算法控制。 相比之下,人工智能驱动的聊天应用程序是一个更加广泛的环境,旨在促进各种形式的数字通信,例如用户之间的文本、语音和视频聊天。 其定义特征是集成了生成式人工智能模型,该模型可以模拟细致入微的拟人对话,并根据各种输入和上下文提示生成响应。 生成式人工智能驱动的聊天应用程序可以参与开放领域的讨论,适应不断变化的对话环境,甚至产生创造性或复杂的对话。 - -下表概述了主要差异和相似之处,以帮助我们了解它们在数字通信中的独特作用。 - -| 传统聊天机器人 | 生成式人工智能驱动的人工智能 | -| ---------------------------- | ------------------------------ | -| 以任务为中心、基于预定义规则 | 情境感知 | -| 集成到大型的行业系统中 | 可以托管一个或多个聊天机器人 | -| 通过编程实现 | 结合生成式人工智能模型 | -| 专业相对固化的交互 | 能够进行更开放关于专业领域讨论 | - -### 结合成熟的 SDK 和 API 构建生成式人工智能驱动的人工智能 - -在构建聊天应用程序时,重要的第一步是评估已有的内容。 基于多种原因,使用 SDK 和 API 构建聊天应用程序是一种有利的策略。 通过集成成熟的 SDK 和 API,可以战略性地定位您的应用程序,以实现长期成功,并解决可扩展性和维护问题。 - -- **加快开发过程并减少开销**:依靠预构建的功能而不是自己构建它们的昂贵过程,可以让您专注于您可能发现更重要的应用程序的其他方面,例如业务逻辑。 -- **更好的性能**:从头开始构建功能时,您最终会问自己“它如何扩展?这个应用程序是否能够处理突然涌入的用户?” 维护功能好的 SDK 和 API 通常针对这些问题内置了解决方案。 -- **更容易维护**:更新和改进更易于管理,因为大多数 API 和 SDK 在发布新版本时只需要更新库。 -- **获得尖端技术**:利用经过微调和在广泛数据集上训练的模型为您的应用程序提供自然语言功能。 - -访问 SDK 或 API 的功能通常涉及获取使用所提供服务的许可,这通常是通过使用唯一 key 或身份验证 token 来实现的。 我们将使用 OpenAI Python library 来探索它是什么样子。 您也可以在本章的[notebook](../../python/oai-assignment.ipynb?WT.mc_id=academic-105485-koreyst) 中自行尝试。 - -```python -import os -from openai import OpenAI - -API_KEY = os.getenv("OPENAI_API_KEY","") - -client = OpenAI( - api_key=API_KEY - ) - -chat_completion = client.chat.completions.create(model="gpt-3.5-turbo", messages=[{"role": "user", "content": "Suggest two titles for an instructional lesson on chat applications for generative AI."}]) -``` - -上面的示例使用 GPT-3.5 Turbo 模型来完成提示,但请注意,API 密钥是在执行此操作之前设置的。 如果未设置 key,您将收到以下错误。 - -```output -AuthenticationError: No API key provided. You can set your API key in code using 'openai.api_key = ', or you can set the environment variable OPENAI_API_KEY=). If your API key is stored in a file, you can point the openai module at it with 'openai.api_key_path = '. You can generate API keys in the OpenAI web interface. See https://platform.openai.com/account/api-keys for details. -``` - -## 用户体验(UX) - -一般用户体验原则适用于聊天应用程序,但由于涉及机器学习组件,这里有一些额外考虑因素,这就变得特别重要。 - -- **解决模糊性的机制**:生成式人工智能模型偶尔会生成模糊的答案。 如果用户遇到此问题,允许用户要求进行澄清可能会有所帮助。 -- **上下文保留**:先进的生成式人工智能模型能够记住对话中的上下文,这可能是用户体验的必要资产。 赋予用户控制和管理上下文的能力可以改善用户体验,但会带来保留敏感用户信息的风险。 考虑这些信息的存储时间(例如引入保留策略)可以平衡上下文需求和隐私。 -- **个性化**:人工智能模型具有学习和适应能力,为用户提供个性化体验。 通过用户个人资料等功能定制用户体验,不仅让用户感到亲切,而且还有助于他们得到特定答案,创造更高效、令人满意的交互。 - -个性化的一个例子是 OpenAI 的 ChatGPT 中的“自定义指令”设置。 它允许您提供有关您自己的信息,这些信息可能是您的提示的重要背景。 以下是自定义指令的示例。 - -![Custom Instructions Settings in ChatGPT](../../images/custom-instructions.png?WT.mc_id=academic-105485-koreyst) - -“配置文件”提示 ChatGPT 在链接列表上创建课程计划。 请注意,ChatGPT 可以按照用户的特点获得更深入的课程计划。 - -![A prompt in ChatGPT for a lesson plan about linked lists](../../images/lesson-plan-prompt.png?WT.mc_id=academic-105485-koreyst) - -### 微软的 LLMs 系统消息框架 - -[微软指引](https://learn.microsoft.com/azure/ai-services/openai/concepts/system-message#define-the-models-output-format?WT.mc_id=academic-105485-koreyst) 用于在 LLM 生成响应时编写有效的系统消息,分为 4 个区域: - -1. 定义模型的适用对象及其功能和限制。 -2. 定义模型的输出格式。 -3. 提供展示模型预期行为的具体示例。 -4. 提供额外的行为护栏。 - -### 辅助功能 - -无论用户是否有视觉、听觉、运动或认知障碍,设计良好的聊天应用程序都应该可供所有人使用。 以下列表详细列出了旨在增强各种用户障碍的可访问性的特定功能。 - -- **针对视觉障碍的功能**:高对比度主题和可调整大小的文本、屏幕阅读器兼容性。 -- **针对听觉障碍的功能**:文本转语音和语音转文本功能、音频通知的视觉提示。 -- **针对运动障碍的功能**:键盘导航支持、语音命令。 -- **认知障碍功能**:简化的语言选项。 - -## 特定领域语言模型的定制和微调 - -想象一下,一个聊天应用程序可以理解您公司的行话并预测其用户群通常有的特定查询。 有几种方法值得一提: - -- **利用 DSL 模型**。 DSL 代表领域特定语言。 您可以利用在特定领域训练的所谓 DSL 模型来了解其概念和场景。 -- **应用微调**。 微调是使用特定数据进一步训练模型的过程。 - -## 定制:使用 DSL - -利用特定于领域的语言模型(DSL 模型)可以通过提供专门的、上下文相关的交互来增强用户参与度。 它是一个经过训练或微调的模型,可以理解和生成与特定领域、行业或主题相关的文本。 使用 DSL 模型的选项多种多样,从头开始训练到通过 SDK 和 API 使用预先存在的模型。 另一种选择是微调,其中涉及采用现有的预训练模型并将其适应特定领域。 - -## 定制:应用微调 - -当预训练模型在专门领域或特定任务中达不到要求时,通常会考虑微调。 - -例如,医疗查询很复杂并且需要大量上下文。 当医疗专业人员诊断患者时,它会基于多种因素,例如生活方式或既往病史,甚至可能依赖最近的医学期刊来验证他们的诊断。 在这种微妙的场景中,通用的人工智能聊天应用程序不可能成为可靠的来源。 - -### 场景:医疗应用\*\* - -考虑一个聊天应用程序,旨在通过提供治疗指南、药物相互作用或最新研究结果的快速参考来帮助医生。 - -通用模型可能足以回答基本的医学问题或提供一般建议,但可能会遇到以下问题: - -- **高度具体或复杂的案例**。 例如,神经科医生可能会询问应用程序:“目前治疗儿科患者耐药性癫痫的最佳实践是什么?” -- **缺乏最新进展**。 通用模型可能很难提供包含神经学和药理学最新进展的当前答案。 - -在此类情况下,使用专门的医疗数据集对模型进行微调可以显着提高其更准确、更可靠地处理这些复杂的医疗查询的能力。 这需要访问大型且相关的数据集,这些数据集代表了需要解决的特定领域的挑战和问题。 - -## 高质量 AI 驱动的聊天体验的注意事项 - -本节概述了“高质量”聊天应用程序的标准,其中包括捕获可操作的指标以及遵守负责任地利用人工智能技术的框架。 - -### 关键指标 - -为了保持应用程序的高质量性能,跟踪关键指标和注意事项至关重要。 这些测量不仅可以确保应用程序的功能,还可以评估人工智能模型和用户体验的质量。 下面的列表涵盖了需要考虑的基本、人工智能和用户体验指标。 - -| 指标 | 定义 | 开发人员需要 | -| -------------------- | ------------------------------------------------ | ----------------------------------------------------- | -| **正常运行时间** | 衡量应用程序运行和用户访问的时间。 | 您将如何最大限度地减少停机时间? | -| **响应时间** | 应用程序回复用户查询所花费的时间。 | 如何优化查询处理以缩短响应时间? | -| **精确** | 真阳性预测占阳性预测总数的比率 | 您将如何验证模型的精度? | -| **召回率(灵敏度)** | 真阳性预测与实际阳性数量的比率 | 您将如何衡量和提高召回率? | -| **F1 得分** | 精确率和召回率的调和平均值,平衡两者之间的权衡。 | 您的目标 F1 分数是多少? 您将如何平衡精确度和召回率? | -| **困惑** | 衡量模型预测的概率分布与数据实际分布的吻合程度。 | 您将如何最大程度地减少困惑? | -| **用户满意度指标** | 衡量用户对应用程序的感知。 通常通过调查捕获。 | 您多久收集一次用户反馈? 在此基础上你将如何适应? | -| **错误率** | 模型在理解或输出方面出错的比率。 | 您采取了哪些策略来降低错误率? | -| **再培训周期** | 更新模型以纳入新数据和见解的频率。 | 您多久重新训练一次模型? 是什么触发了再培训周期? | -| **异常检测** | 用于识别不符合预期行为的异常模式的工具和技术。 | 您将如何应对异常情况? | - -### 在聊天应用程序中实施负责任的人工智能实践 - -Microsoft 的 Responsible AI 方法确定了指导 AI 开发和使用的六项原则。 以下是聊天开发人员应该考虑的原则、定义以及聊天开发人员应该考虑的事项以及为什么他们应该认真对待它们。 - -| 原则 | 微软的定义 | 聊天开发人员的注意事项 | 为什么它很重要 | -| -------------- | ------------------------------------------ | ---------------------------------------------- | -------------------------------------------------------- | -| 公平 | 人工智能系统应该公平对待所有人。 | 确保聊天应用程序不会根据用户数据进行歧视。 | 在用户之间建立信任和包容性; 避免法律后果。 | -| 可靠性和安全性 | 人工智能系统应该可靠、安全地运行。 | 实施测试和故障保护以最大限度地减少错误和风险。 | 确保用户满意度并防止潜在危害。 | -| 隐私与安全 | 人工智能系统应该安全并尊重隐私。 | 实施强有力的加密和数据保护措施。 | 保护敏感的用户数据并遵守隐私法。 | -| 包容性 | 人工智能系统应该赋予每个人力量并吸引人们。 | 设计适合不同受众且易于使用的 UI/UX。 | 确保更广泛的人可以有效地使用该应用程序。 | -| 透明度 | 人工智能系统应该是可以理解的。 | 为人工智能响应提供清晰的文档和推理。 | 如果用户能够理解决策的制定方式,他们就更有可能信任系统。 | -| 问责制 | 人们应该对人工智能系统负责。 | 建立清晰的审核和改进人工智能决策的流程。 | 允许持续改进并在出现错误时采取纠正措施。 | - -## 作业 - -请查看[作业](../../python?WT.mc_id=academic-105485-koreyst),它将引导您完成一系列练习,从运行第一个聊天提示到对文本进行分类和总结等等。 - -## Great Work! Continue the Journey - -Want to learn more about creating chat applications with Generative AI? Go to the [continued learning page](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) to find other great resources on this topic. - -Head over to Lesson 8 to see how you can start [building search applications](/08-building-search-applications/README.md?WT.mc_id=academic-105485-koreyst)! - -## 继续学习 - -想要了解有关创建聊天应用的更多信息? 转至[进阶学习的页面](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) 查找有关此主章节的其他学习资源。 - -前往第八章,我们将学习[构建搜索应用程序](../../../08-building-search-applications/translations/cn/README.md?WT.mc_id=academic-105485-koreyst) diff --git a/07-building-chat-applications/translations/ja-jp/README.md b/07-building-chat-applications/translations/ja-jp/README.md deleted file mode 100644 index 6b0375acf9..0000000000 --- a/07-building-chat-applications/translations/ja-jp/README.md +++ /dev/null @@ -1,222 +0,0 @@ -# 生成 AI を利用したチャット・アプリケーションの構築 - -[![Building Generative AI-Powered Chat Applications](../..//images/07-lesson-banner.png?WT.mc_id=academic-105485-yoterada)](https://aka.ms/gen-ai-lessons7-gh?WT.mc_id=academic-105485-koreyst) - -> _(上記の画像をクリックすると、レッスン・ビデオを表示します)_ - -テキスト生成アプリの構築方法を見てきたところで、次にチャット・アプリケーションについて考えてみましょう。 - -チャットアプリケーションは私たちの日常生活に溶け込み、単なるカジュアルな会話の手段以上のものを提供しています。それらはカスタマー・サービスやテクニカル・サポート、さらには高度なアドバイザリー・システムの重要な部分を担っています。皆様も最近、チャットアプリケーションを通じて何らかの支援を受けた経験があるかもしれません。これらのプラットフォームに生成 AI などの先端技術を組み込むと、その複雑さは増し、それに伴い課題も増えてきます。 - -解答が必要な質問は下記の通りです。 - -- **アプリの構築** 特定のユースケースに対して、これらの AI を活用したアプリケーションを効率的に構築し、シームレスに統合するにはどうすればよいのでしょうか? -- **モニタリング** 一度デプロイした後、アプリケーションが機能面と[責任のある AI の六つの原則](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-105485-yoterada)の準拠という観点から、高品質で稼働している状態をどのようにして監視し、検証できるでしょうか? - -自動化が進み、人間と機械が連続でやり取りする時代に突入する中で、生成 AI がチャット・アプリケーションの範囲、深さ、そして適応力をどう変化させるのかを理解するのが重要です。このレッスンでは、これらの複雑なシステムを支えるアーキテクチャを検討し、ドメイン(業種・業界)固有のタスクに合わせてそれらを微調整する方法を考えます。さらに、責任ある AI のデプロイを確実にするための指標と検討内容を学びます。 - -## はじめに - -このレッスンでは、下記の内容について説明します。 - -- チャット・アプリケーションを効率よく実装し、統合するためのテクニック -- アプリケーションにカスタマイズと微調整を適用する方法 -- チャット・アプリケーションを効果的に監視するための戦略と考慮点 - -## 学習目標 - -このレッスンを修了すると、下記を理解できます: - -- チャット・アプリケーションを実装し、既存のシステムに統合する際の考慮点を説明する -- 特定のユースケースに合わせてチャット・アプリケーションをカスタマイズする -- AI を活用したチャット・アプリケーションの品質を効果的に監視し、維持するために重要な指標と考慮点を特定する -- 責任ある AI の原則をチャット・アプリケーションで適用する方法を確認する - -## 生成 AI をチャット・アプリケーションに統合する - -生成 AI を用いたチャット・アプリケーションは、ただ単にチャットアプリケーションをスマートにするだけではありません。アーキテクチャ、パフォーマンス、ユーザー・インターフェースを最適化し、質の高いユーザー・エクスペリエンスを提供できるようになります。これは、アーキテクチャの基盤、API 統合、ユーザー・インターフェースにおける検討事項の調査も含みます。このセクションでは、これらの複雑な領域を、既存のシステムに取り込むか、もしくはスタンドアロンのプラットフォームとして構築するかにかかわらず、効率的に進めるための包括的なロードマップを提供します。 - -このセクションを終了すると、チャットアプリケーションを効率的に実装し、統合するための専門知識を身につけられます。 - -### チャットボットとチャットアプリケーション、どちらが適している? - -チャット・アプリケーションの実装に取り組む前に、「チャット・ボット」と「AI 搭載チャット・アプリケーション」を比較し、それぞれが果たす役割と機能の違いについて理解しましょう。チャット・ボットの主な目的は、FAQ への回答や荷物の追跡など、特定の会話タスクの自動化です。これは通常、ルール・ベースのロジックや複雑な AI アルゴリズムによって制御されます。それとは対照的に 「生成 AI を搭載したチャットアプリケーション」は、利用者との間でテキスト、音声、ビデオチャットなど、さまざまな形式のデジタル・コミュニケーションを可能にする、より広範囲な対話環境を提供します。その特徴は、微妙なニュアンスを持つ人間のような会話をシミュレートします。そして、さまざまな入力と文脈の手がかりを元に回答を生成する、生成 AI モデルを統合したアプリケーションです。生成 AI を搭載したチャット・アプリケーションは、特定のトピックや領域に限定せず、あらゆる種類のトピックや質問に対応します。そして会話が進むにつれて変化するトピックや状況変化にも対応でき、さらには創造的な対話や複雑な対話も生み出せます。 - -下記の表に、デジタルコミュニケーションにおける、各役割を把握する為の主な違いと共通点をまとめています。 - -| チャット・ボット | 生成 AI を搭載したチャットアプリケーション | -| ------------------------------ | ------------------------------------------------------------------- | -| タスク中心でルールベース | 文脈(コンテキスト)を理解する | -| 大規模システムへの統合が多い | 1 つまたは複数のチャット・ボットをホスト可能 | -| プログラムされた機能に限定 | 生成 AI モデルを搭載 | -| 専門的で構造化された対話を行う | オープン・ドメインでの議論が可能 (特定のトピックや領域に限定しない) | - -### SDK と API を活用した既存機能の利用 - -チャット・アプリケーションを開発する際、すでに利用可能なライブラリの有無と評価が大切です。チャットアプリケーションを SDK と API で構築すると、さまざまな利点があるため、有効な戦略と言えます。アプリケーションを戦略的に長期的な成功に導くためには、十分に文書化された SDK と API の使用が効果的で、スケーラビリティやメンテナンスの課題に対する対応も可能にします。 - -- **開発プロセスの迅速化とオーバーヘッドの削減**: 高コストの自作機能構築(車輪の再発明)ではなく、既存のライブラリを利用すると、ビジネスロジックなど、より重要と考えるアプリケーションやビジネス・ロジックの開発に集中できます。 -- **パフォーマンスの向上**: 機能を一から構築する場合、最終的に「どのように拡張するのか?このアプリケーションは突然の利用者増加に対応できるのか?」と自分で考えなければなりません。適切にメンテナンスされた SDK と API を利用すると、こうした問題に対する解決策も提供してくれます。 -- **メンテナンスの容易さ**: ほとんどの API と SDK で、新バージョンがリリースされた際、ライブラリを更新するだけで済むため、アップデートや改善が容易になります。 -- **最先端技術へのアクセス**: 大規模なデータセットでファイン・チューニングやトレーニングされたモデルを活用すると、アプリケーションに自然言語処理の能力を追加できます。 - -SDK や API の機能を利用するためには、通常、提供されるサービスの使用許可を取得する必要があります。これは、一意のキーや認証トークンを使って行われます。OpenAI Python ライブラリを使って、これがどのように行われるのか確認してみましょう。また、このレッスン用の [OpenAI のノートブック](../../python/oai-assignment.ipynb?WT.mc_id=academic-105485-yoterada)や [Azure OpenAI Services のノートブック](../../python/aoai-assignment.ipynb?WT.mc_id=academic-105485-yoterada)を使って、自分で試せます。 - -```python -import os -from openai import OpenAI - -API_KEY = os.getenv("OPENAI_API_KEY","") - -client = OpenAI( - api_key=API_KEY - ) - -chat_completion = client.chat.completions.create(model="gpt-3.5-turbo", messages=[{"role": "user", "content": "生成 AI のチャット・アプリケーションに関するトレーニング・タイトルを2つ提案してください。"}]) -``` - -上記の例では、GPT-3.5 Turbo モデルを使用してプロンプトを作成していますが、その前に API キーを設定している点にご注意ください。キーを設定しなかった場合は、下記のエラーが表示されます。 - -```output -AuthenticationError: No API key provided. -You can set your API key in code using 'openai.api_key = ', -or you can set the environment variable OPENAI_API_KEY=). -If your API key is stored in a file, you can point the openai module -at it with 'openai.api_key_path = '. -You can generate API keys in the OpenAI web interface. -See https://platform.openai.com/account/api-keys for details. -``` - -## ユーザーエクスペリエンス (UX) - -一般的な UX の原則は、チャット・アプリケーション開発にも適用されますが、機械学習の要素が加わるため、追加で特に重要な検討事項がいくつかあります。 - -- **曖昧さへの対処方法**: 生成 AI モデルは、曖昧な回答を生成する場合があります。その際、詳細な情報を問い合わせできる機能を提供すると、利便性が高まります。 -- **文脈(コンテキスト)の保持**: 高度な生成 AI モデルは、会話の文脈(会話履歴)を記憶する能力を持っており、ユーザー・エクスペリエンスにとって必要な要素になります。利用者に文脈を制御し管理する能力を与えると、ユーザー・エクスペリエンスは向上しますが、それと同時に、機密性の高い利用者情報を保持するリスクも生じます。この情報をどの位の期間保持するべきか、例えば保持期間のポリシーを導入するなどの検討が必要です。これにより文脈の必要性とプライバシーのバランスを保てます。 -- **パーソナライゼーション**: 学習して適応する能力を備えた AI モデルは、利用者に対して個別にカスタマイズした利用者体験を提供できます。ユーザー・プロファイルを通じて利用者体験をカスタマイズできるようにすると、利用者は自分が AI に理解されていると感じると同時に、利用者に適した回答結果を得るのが容易になり、さらに効率的で満足度の高い対話が可能になります。 - -パーソナライゼーションの一例として、OpenAI の ChatGPT では「Custom Instructions(カスタム指示)」設定があります。これは、プロンプトに重要なコンテキストとなる自身の情報を提供できる機能です。下記に Custom Instructions(カスタム指示)の例を示します。 - -![Custom Instructions Settings in ChatGPT](../../images/custom-instructions.png?WT.mc_id=academic-105485-yoterada) - -> [!TIP] -> 訳者追記 -> システムの問い> ChatGPT がより適切な回答を提供するために、あなたに関する情報を教えてください? -> -> 利用者の入力> 私は、大規模な上場ソフトウェア企業で上級職に就いています。2008 年からテクノロジーの専門家として活動しており、ソフトウェアエンジニアリングの修士号を持っており、熟練したプログラマーです。また、パートタイムでコンピュータサイエンスの教授も務めています。 -> -> システムの問い> ChatGPT にどのように回答してほしいですか? -> -> 利用者の入力> ジャスミンと呼んでください。ChatGPT はいかなるトピックに対しても意見を述べます。 - -この「プロファイル」で、ChatGPT に Linked Lists(連結リスト)の学習計画を作成するように指示しています。ChatGPT は、利用者の過去の経験や経歴に基づいて、より詳細な学習計画が必要だと判断している点にご注意ください。 - -![A prompt in ChatGPT for a lesson plan about linked lists](../../images/lesson-plan-prompt.png?WT.mc_id=academic-105485-yoterada) - -> [!TIP] -> 訳者追記 -> 利用者の入力> 連結リストの学習計画を作成してください -> -> 回答> もちろんです、ジャスミン!あなたのテクノロジーとコンピュータサイエンス教育のバックグラウンドを考慮すると、基本を超えた詳細な学習計画を望まれていると思います。下記に、コンピュータサイエンスにおける連結リストを教えるための学習計画を提案します。 -> -> 学習計画:連結リストの理解と実装 -> -> 所要時間 -> 1.5 時間 -> -> 目標 -> このレッスンの終わりまでに、生徒は連結リストの概念を理解し、プログラミング言語でそれを実装し、連結リストを用いて問題を解決できるようになる。 - -### 大規模言語モデル用の Microsoft のシステム・メッセージ・フレームワーク - -Microsoft は、大規模言語モデル(LLM)からの回答を生成する際に、効果的なシステムメッセージを作成するための[ガイダンス](https://learn.microsoft.com/azure/ai-services/openai/concepts/system-message#define-the-models-output-format?WT.mc_id=academic-105485-yoterada)を提供しています。これは以下の 4 つの領域に分類できます: - -1. モデルのプロファイル、機能、制限を定義する -2. モデルの出力形式を定義する -3. モデルの意図した動作を示す、具体例を提供する -4. 安全性と動作に関する追加のガードレールを定義する - -### アクセシビリティについて - -視覚や聴覚、運動能力、認知能力に関してご不自由のある方も、きちんと設計されたチャット・アプリケーションを利用できるように実装する必要があります。下記に、各利用者に対応するためにアクセシビリティを強化する機能をリストアップしました。 - -- 視覚にご不自由がある方向けの機能:ハイ・コントラストのテーマや、文字サイズの変更が可能なテキスト、スクリーンリーダーとの互換性 -- 聴覚にご不自由がある方向けの機能:テキストから音声へ、音声からテキストへの変換機能、音声通知に対する視覚的な手助け -- 運動機能にご不自由がある方向けの機能:キーボードによるナビゲーションのサポート、音声コマンド -- 認知機能にご不自由がある方向けの機能:簡易化された言語オプション - -## ドメイン固有言語モデルのカスタマイズとファイン・チューニング - -会社の専門用語を理解し、お客様が一般的に抱く特定の質問に回答するチャット・アプリケーションを想像してみてください。そのためのアプローチとして、以下の二つが挙げられます。 - -- **DSL モデルの活用**:DSL はドメイン固有言語を意味します。ドメインの概念やシナリオを理解するために、特定のドメイン向けにトレーニングした DSL モデルを活用できます。 -- **ファインチューニングの適用**:ファイン・チューニングとは、特定のデータを用いてモデルをさらに訓練するプロセスです。 - -## カスタマイズ : DSL の使用 - -ドメイン固有言語モデル(DSL モデル)を活用し、専門用語で文脈に即した内容で AI と対話できれば、利用者の関心を高められます。DSL モデルは、特定の分野、業界、または主題に関連するテキストを理解したり生成するために、訓練またはファイン・チューニングされたモデルです。DSL モデルの利用方法には、ゼロから自分で訓練する方法から、SDK や API を通じて既存のモデルを利用する方法まで様々です。また、既存の事前に訓練済みモデルを取得して、それを特定のドメインに適応させるためにファイン・チューニングするのも選択肢の一つです。 - -## カスタマイズ:ファイン・チューニングの適用 - -ファイン・チューニングは、事前訓練済みのモデルが特殊なドメインや特定のタスクに対応できない場合に検討します。 - -例えば、医療に関する問い合わせは複雑で、多くの文脈が必要です。医療専門家が患者を診断する際には、ライフスタイルや過去の病歴など様々な要素に基づいて、さらに診断内容を裏付けるために最新の医学論文を調べる場合もあります。このような細かいニュアンスが求められるような場面においては、一般用の AI チャット・アプリケーションは信頼を得る情報源として期待できません。 - -### シナリオ: 医療アプリケーション - -治療ガイドライン、薬物服用の影響、最新の研究結果などを素早く参照できるように、医療従事者を支援するチャット・アプリケーションを考えてみましょう。 - -通常のモデルは、基本的な医学の問い合わせに答えたり、一般的なアドバイスを提供するのには十分かもしれません。しかし、以下のような状況では対応が難しいかもしれません。 - -- **非常に特殊もしくは複雑なケース**:たとえば、ある神経科医が、「薬剤耐性を示す小児のてんかん治療における現在推奨されるプラクティスは何ですか?」とアプリケーションに尋ねる場合があります。 -- **最新の情報が反映されていない**:一般的なモデルは、神経学や薬理学の最新の研究結果を取り入れた最新の回答を提供するのが、難しい場合もあります。 - -このような場合、専門的な医療データセットを用いてモデルをファイン・チューニングすると、こうした複雑な医療問題に対する回答内容の正確性と信頼性を著しく高められます。そのためには、取り組むべき専門分野の課題や疑問点を反映した、大規模で関連性の高いデータ・セットが必要です。 - -## 高品質な AI 駆動のチャット体験に必要な検討事項 - -このセクションでは、「高品質」なチャット・アプリケーションの基準を説明します。そのためには、実用的な指標(メトリクス)の取得方法や、責任ある AI の原則を取り入れたフレームワークの利用も含まれます。 - -### 重要な指標(メトリクス) - -アプリケーションを高品質で高いパフォーマンスを維持するためには、重要な指標(メトリクス)と検討事項を把握する必要があります。これらの測定は、アプリケーションの機能性を保証するだけでなく、AI モデルとユーザー・エクスペリエンスの品質を評価するためにも必要です。下記に、基本的なメトリクス、AI に関するメトリクス、ユーザー・エクスペリエンスに関するメトリクスを検討するためのリストを示します。 - -| メトリック | 定義 | チャット開発者の検討事項 | -| ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | -| **アップタイム** | アプリケーションが稼働し、利用者が利用可能な時間を計測します | ダウンタイムをどのようにして最小限に抑えられますか? | -| **応答時間** | アプリケーションが利用者からの問い合わせに応答するまでの時間 | クエリ処理をどのように最適化し、応答時間を改善できますか? | -| **Precision(精度)** | 真陽性予測の割合を、陽性予測の総数で割ったもの 

(訳者による追記:モデルで提供される正しい出力の数 (真陽性) と、陽性サンプルの総数 (真陽性+偽陽性) を比較 [ご参考:What Is a Confusion Matrix in Machine Learning?](https://plat.ai/blog/confusion-matrix-in-machine-learning/)) | モデルの精度をどのように確認しますか? | -| **Recall (再現率) (Sensitivity)** | 真陽性予測の数を実際の真の数で割った比率

(訳者による追記:真の値の総数に対する、正しく分類された陽性サンプル(TP)の数の比率として計算 [ご参考:What Is a Confusion Matrix in Machine Learning?](https://plat.ai/blog/confusion-matrix-in-machine-learning/)) |   Recall をどのように測定し、改善しますか? | -| **F1 スコア** | 精度と再現率の調和平均で、両者のバランスを示します

(訳者による追記:
F1 = 2*((Precision*Recall)/(Precision+Recall))
F スコアまたは F メジャーは、テストの精度の尺度です。これは、テストの精度と再現率から計算され、精度は真陽性の結果の数を、正しく識別されなかったものを含むすべての陽性結果の数で割った値であり、再現率は、真陽性の結果の数を、陽性として識別されたすべてのサンプルの数で割った値です。) | 目指す F1 スコアは何ですか?精度と再現率のバランスをどのように調整しますか? | -| **Perplexity** | モデルが予測した確率分布が、データの実際の分布とどれだけ一致しているかを計測します。

(訳者追記:
[ご参考: Wikipedia パープレキシティ](https://ja.wikipedia.org/wiki/%E3%83%91%E3%83%BC%E3%83%97%E3%83%AC%E3%82%AD%E3%82%B7%E3%83%86%E3%82%A3)) | Perplexity をどのように最小限に抑えますか? | -| **利用者満足度指標** | アプリケーションに対する利用者の評価を計測します。主にアンケートを通じて収集します | ユーザーフィードバックはどのくらいの頻度で収集しますか?それに基づいてどのように改善策を立てますか? | -| **エラー発生率** | モデルが理解や出力で間違いを犯す割合 | エラー発生率を減らすための戦略は何ですか? | -| **再トレーニングサイクル** | 新しいデータや知見を取り入れてモデルを更新する頻度 | どのくらいの頻度でモデルを再トレーニングしますか?再トレーニングサイクルを開始するトリガーは何ですか? | -| **異常検出** | 期待する動作に適合しない異常なパターンを識別するためのツールと手法 | 異常が発生した際にどのように対応しますか? | - -> [!TIP] -> 訳者追記:Precision(精度)、Recall (再現率)、F1 スコア、Perplexity は、機械学習の分野でよく使われるメトリクスです。これらのメトリクスの詳細については、[こちら](https://docs.microsoft.com/azure/machine-learning/how-to-understand-automated-ml#classification-metrics?WT.mc_id=academic-105485-yoterada)をご覧ください。 -> モデルのファイン・チューニングや再トレーニングを行わない場合は、こちらのメトリクスは不要です。その場合は、利用者満足度指標やエラー発生率など、アプリケーションのパフォーマンスを測定するメトリクスを重視してください。 - -### チャット・アプリケーションにおける責任ある AI の実践導入 - -Microsoft の責任ある AI への取り組みでは、AI の開発と利用を導く 6 つの原則を定義しています。下記に、それらの原則、定義、及びチャット開発者が検討べき事項と、その重要性について説明します。 - -| 原則 | Microsoft の定義 | チャット開発者の検討事項 | 重要な理由 | -| -------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------- | -| 公平性 | AI システムは全ての人を公平に扱うべきです | 利用者データに基づく差別がないようにチャットアプリケーションを設計します | 利用者間で信頼と包括性を築き、法的な問題を避けるためです | -| 信頼性と安全性 | AI システムは確実かつ安全に動作するべきです | エラーやリスクを最小限に抑えるためにテストとフェイルセーフを実装します | 利用者の満足度を確保し、潜在的な危険を防ぐためです | -| プライバシーとセキュリティ | AI システムは安全であり、プライバシーを尊重すべきです | 利用者データを保護するために強力な暗号化とデータ保護対策を実装します | 利用者の機密データを保護し、プライバシー法に準拠するためです | -| 包括性 | AI システムは全ての人に力を与え、人々を惹きつけるものでなければなりません | 多様な利用者がアクセスしやすく使いやすい UI/UX を設計します | 多くの人がアプリケーションを効果的に利用できるようにするためです | -| 透明性 | AI システムは理解しやすいように実装すべきです | AI の回答について明確なドキュメントと理由を提供します | 利用者は、意思決定がどのように行われるかを理解できれば、システムを信頼する可能性が高まります | -| 説明責任 | 人間は AI システムに対して説明責任を負うべきです | AI の意思決定をチェックし、改善するための明確なプロセスを確立する | ミスが発生した際、継続的な改善と修正措置を可能にするためです | - -## 課題 - -[課題](../../python?WT.mc_id=academic-105485-yoterada)をご覧ください。最初のチャット・プロンプトの実行から、テキストの分類や要約など、一連の演習を行えます。 - -## お疲れ様でした! 学習を続ける - -このレッスン修了後、[生成 AI 学習コレクション](https://aka.ms/genai-collection?WT.mc_id=academic-105485-yoterada) をチェックして、Generative AI の知識をレベルアップさせましょう。 - -レッスン 8 では、[検索アプリケーションの構築](../../../08-building-search-applications/translations/ja-jp/README.md?WT.mc_id=academic-105485-yoterada)方法を見ていきます。 diff --git a/07-building-chat-applications/translations/ko/README.md b/07-building-chat-applications/translations/ko/README.md deleted file mode 100644 index f1a945f4f8..0000000000 --- a/07-building-chat-applications/translations/ko/README.md +++ /dev/null @@ -1,184 +0,0 @@ -# 생성형 AI를 활용한 채팅 애플리케이션 구축 - -[![Generative AI를 활용한 채팅 애플리케이션 구축](../../images/07-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lessons7-gh?WT.mc_id=academic-105485-koreyst) - -> _(위의 이미지를 클릭하여 이 레슨의 비디오를 시청하세요)_ - -텍스트 생성 앱을 구축하는 방법을 살펴보았으니 이제 채팅 애플리케이션에 대해 알아보겠습니다. - -채팅 애플리케이션은 우리의 일상에 통합되어 있으며, 단순한 대화 수단 이상을 제공합니다. 고객 서비스, 기술 지원, 심지어 정교한 상담 시스템의 핵심 요소입니다. 얼마 전에도 채팅 애플리케이션으로부터 도움을 받은 적이 있을 것입니다. 우리가 이러한 플랫폼에 생성형 AI와 같은 고급 기술을 통합할수록 복잡성과 도전 과제도 증가합니다. - -다음과 같은 몇 가지 질문에 대답해야 합니다: - -- **앱 구축**. 특정 사용 사례에 대해 이 AI 기반 애플리케이션을 효율적으로 구축하고 원활하게 통합하는 방법은 무엇인가요? -- **모니터링**. 배포된 후에는 기능과 [책임 있는 AI의 여섯 가지 원칙](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-105485-koreyst)을 준수하는 채로 애플리케이션이 최고 수준의 품질로 작동하는지 어떻게 모니터링할 수 있을까요? - -자동화와 원활한 인간-기계 상호작용으로 정의되는 시대로 나아감에 따라, 생성형 AI가 채팅 애플리케이션의 범위, 깊이 및 적응성을 어떻게 변화시키는지 이해하는 것이 필수적입니다. 이 레슨에서는 이러한 복잡한 시스템을 지원하는 아키텍처의 측면을 조사하고, 도메인 특정 작업에 대해 세밀하게 조정하는 방법을 탐구하며, 책임 있는 AI 배포를 보장하기 위한 지표와 고려 사항을 평가할 것입니다. - -## 소개 - -이 레슨에서는 다음을 다룹니다: - -- 효율적으로 채팅 애플리케이션을 구축하고 통합하는 기술. -- 응용 프로그램에 맞게 사용자 정의 및 세부 조정하는 방법. -- 채팅 애플리케이션을 효과적으로 모니터링하고 유지하는 전략 및 고려 사항. - -## 학습 목표 - -이 레슨을 마치면 다음을 할 수 있습니다: - -- 기존 시스템에 채팅 애플리케이션을 구축하고 통합하기 위한 고려 사항을 설명할 수 있습니다. -- 특정 사용 사례에 대해 채팅 애플리케이션을 사용자 정의할 수 있습니다. -- AI 기반 채팅 애플리케이션의 품질을 효과적으로 모니터링하고 유지하기 위한 주요 지표 및 고려 사항을 식별할 수 있습니다. -- 채팅 애플리케이션이 AI를 책임있게 활용하도록 보장할 수 있습니다. - -## 생성형 AI를 채팅 애플리케이션에 통합하기 - -생성형 AI를 통해 채팅 애플리케이션을 개선하는 것은 단순히 더 똑똑하게 만드는 것에만 관련되지 않습니다. 품질 좋은 사용자 경험을 제공하기 위해 아키텍처, 성능 및 사용자 인터페이스를 최적화하는 것입니다. 이에는 아키텍처 기반, API 통합 및 사용자 인터페이스 고려 사항을 조사하는 것이 포함됩니다. 이 섹션은 기존 시스템에 플러그인으로 제공하거나 독립적인 플랫폼으로 구축하는 경우에도 이러한 복잡한 영역을 탐색하기 위한 포괄적인 로드맵을 제공합니다. - -이 섹션을 마치면 채팅 애플리케이션을 효율적으로 구축하고 통합하기 위해 필요한 전문 지식을 갖추게 될 것입니다. - -### 챗봇 또는 채팅 애플리케이션? - -채팅 애플리케이션을 구축하기 전에 '챗봇'과 'AI 기반 채팅 애플리케이션'을 비교해보겠습니다. 이들은 서로 다른 역할과 기능을 제공합니다. 챗봇의 주된 목적은 자주 묻는 질문에 대답하거나 소포를 추적하는 등 특정 대화 작업을 자동화하는 것입니다. 일반적으로 규칙 기반 논리나 복잡한 AI 알고리즘에 의해 제어됩니다. 반면, AI 기반 채팅 애플리케이션은 인간 사용자 간의 텍스트, 음성 및 비디오 채팅과 같은 다양한 형태의 디지털 커뮤니케이션을 원활하게 하는 더 넓은 환경을 제공합니다. 그 중요한 특징은 다양한 입력과 문맥적 단서를 기반으로 응답을 생성하는 생성형 AI 모델을 통합한다는 것입니다. 생성형 AI 기반 채팅 애플리케이션은 오픈 도메인 토론에 참여하고, 변화하는 대화적 문맥에 적응하며, 창의적이거나 복잡한 대화도 생성할 수 있습니다. - -아래 표는 디지털 커뮤니케이션에서 각각의 역할을 이해하기 위해 주요 차이점과 유사점을 개요로 제시합니다. - -| 챗봇 | 생성형 AI 기반 채팅 애플리케이션 | -| ----------------------------------- | -------------------------------------- | -| 작업 중심 및 규칙 기반 | 문맥 인식 | -| 주로 대규모 시스템에 통합됨 | 하나 또는 여러 챗봇을 호스팅할 수 있음 | -| 사전에 프로그래밍된 기능으로 제한됨 | 생성형 AI 모델 통합 | -| 전문화되고 구조화된 상호작용 | 열린 도메인으로 토론 가능 | - -### SDK 및 API를 활용한 사전 구축된 기능 활용 - -채팅 애플리케이션을 구축할 때, 이미 존재하는 것을 평가하는 것은 매우 유리한 전략입니다. 잘 문서화된 SDK 및 API를 통합함으로써, 애플리케이션을 장기적으로 성공시키고, 확장성 및 유지보수 문제를 해결할 수 있습니다. - -- **개발 프로세스를 가속화하고 오버헤드를 줄임**: 비용이 많이 드는 기능을 직접 구축하는 대신, 사전 구축된 기능을 활용함으로써 비즈니스 로직과 같이 더 중요한 애플리케이션의 다른 측면에 집중할 수 있습니다. -- **더 나은 성능**: 처음부터 기능을 구축할 때, "확장성은 어떻게 되는가? 이 애플리케이션은 갑작스런 사용자 증가에 대응할 수 있는가?"라는 질문을 하게 될 것입니다. 잘 관리되는 SDK 및 API는 이러한 문제에 대한 솔루션을 내장하고 있습니다. -- **보다 쉬운 유지보수**: 대부분의 API 및 SDK는 라이브러리의 업데이트만으로 업데이트 및 개선을 쉽게 관리할 수 있습니다. -- **최첨단 기술에 대한 접근**: 사전에 세밀하게 조정되고 광범위한 데이터셋으로 훈련된 모델을 활용함으로써 애플리케이션에 자연어 기능을 제공할 수 있습니다. - -SDK 또는 API의 기능에 액세스하려면 일반적으로 제공된 서비스를 사용할 수 있는 권한을 얻어야 합니다. 이는 일반적으로 고유한 키 또는 인증 토큰을 사용하여 이루어집니다. 우리는 OpenAI Python 라이브러리를 사용하여 이를 탐색해볼 것입니다. 또한 이 레슨을 위한 [OpenAI 노트북](../../python/oai-assigment-simple.ipynb?WT.mc_id=academic-105485-koreyst) 또는 [Azure OpenAI 서비스 노트북](../../python/oai-assignment.ipynb?WT.mc_id=academic-105485-koreys)에서 직접 시도해볼 수도 있습니다. - -```python -import os -import openai - -openai.api_key = os.getenv("OPENAI_API_KEY") - -chat_completion = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=[{"role": "user", "content": "Suggest two titles for an instructional lesson on chat applications for generative AI."}]) -``` - -위의 예제는 GPT-3.5 Turbo 모델을 사용하여 프롬프트를 완성하는 것을 보여줍니다. 그러나 주의할 점은 API 키를 설정하지 않으면 다음과 같은 오류가 발생합니다. - -```output -AuthenticationError: No API key provided. You can set your API key in code using 'openai.api_key = ', or you can set the environment variable OPENAI_API_KEY=). If your API key is stored in a file, you can point the openai module at it with 'openai.api_key_path = '. You can generate API keys in the OpenAI web interface. See https://platform.openai.com/account/api-keys for details. -``` - -## 사용자 경험 (UX) - -일반적인 UX 원칙은 채팅 애플리케이션에도 적용되지만, 기계 학습 구성 요소의 참여로 인해 특히 중요한 몇 가지 고려 사항이 있습니다. - -- **모호함에 대한 대응 메커니즘**: 생성형 AI 모델은 때로 모호한 답변을 생성할 수 있습니다. 사용자가 이러한 문제를 마주치면 해결을 요청할 수 있는 기능은 도움이 될 수 있습니다. -- **컨텍스트 보존**: 고급 생성형 AI 모델은 대화 내에서 컨텍스트를 기억할 수 있는 능력을 갖추고 있으며, 이는 사용자 경험에 필수적인 자산일 수 있습니다. 사용자가 컨텍스트를 제어하고 관리할 수 있는 기능은 사용자 경험을 향상시키지만, 민감한 사용자 정보를 보존하는 위험을 동반합니다. 이러한 정보를 얼마나 오래 저장할지에 대한 고려 사항, 예를 들어 보존 정책을 도입함으로써 컨텍스트의 필요성과 개인 정보 보호 사이의 균형을 맞출 수 있습니다. -- **개인화**: 학습하고 적응할 수 있는 AI 모델을 통해 사용자에게 맞춤화된 경험을 제공할 수 있습니다. 사용자 프로필과 같은 기능을 통해 사용자 경험을 맞춤화함으로써 사용자가 이해받는 느낌을 주고, 특정 답변을 찾는 데 도움을 줌으로써 더 효율적이고 만족스러운 상호작용을 가능하게 합니다. - -예를 들어, OpenAI의 ChatGPT에서 "사용자 정의 지침 (Custom instructions)" 설정은 개인화의 한 예입니다. 이 설정을 사용하면 프롬프트에 중요한 컨텍스트가 될 수 있는 자기 소개 정보를 제공할 수 있습니다. 다음은 사용자 정의 지침의 예입니다. - -![ChatGPT의 사용자 정의 지침 설정](../../images/custom-instructions.png?WT.mc_id=academic-105485-koreyst) - -이 "프로필"은 ChatGPT에게 연결 리스트에 대한 수업 계획을 생성하도록 요청합니다. ChatGPT는 사용자가 자신의 경험에 기반한 더 깊은 수업 계획을 원할 수 있다는 점을 고려합니다. - -![연결 리스트에 대한 수업 계획에 대한 ChatGPT의 프롬프트](../../images/lesson-plan-prompt.png?WT.mc_id=academic-105485-koreyst) - -### 대형 언어 모델을 위한 Microsoft의 시스템 메시지 프레임워크 - -[Microsoft는 LLM(대형 언어 모델)에서 응답을 생성할 때 효과적인 시스템 메시지 작성에 대한 지침](https://learn.microsoft.com/azure/ai-services/openai/concepts/system-message#define-the-models-output-format?WT.mc_id=academic-105485-koreyst)을 제공하고 있으며, 다음 4가지 영역으로 구분됩니다: - -1. 모델을 사용하는 대상, 기능 및 제한 사항 정의 -2. 모델의 출력 형식 정의 -3. 모델의 의도된 동작을 보여주는 구체적인 예시 제공 -4. 추가적인 동작 가이드라인 제공 - -### 접근성 - -시각, 청각, 운동, 인지 장애를 가진 사용자에게 잘 설계된 채팅 애플리케이션은 모두 사용할 수 있어야 합니다. 다음 목록은 다양한 사용자 장애에 대한 접근성을 향상시키기 위한 특정 기능을 설명합니다. - -- **시각 장애용 기능**: 고대비 테마와 크기 조절 가능한 텍스트, 스크린 리더 호환성. -- **청각 장애용 기능**: 텍스트 읽기 및 음성을 텍스트로 변환하는 기능, 오디오 알림을 위한 시각적 힌트. -- **운동 장애용 기능**: 키보드 탐색 지원, 음성 명령. -- **인지 장애용 기능**: 단순화된 언어 옵션. - -## 도메인별 언어 모델을 위한 맞춤화 및 세부 조정 - -회사의 전문 용어를 이해하고 사용자들이 일반적으로 가지는 특정 질문을 예상하는 채팅 애플리케이션을 상상해보세요. 여기에 언급할 가치가 있는 두 가지 접근 방식이 있습니다. - -- **DSL 모델 활용**: DSL은 도메인별 특정 언어를 의미합니다. 특정 도메인에 대한 DSL 모델을 활용하여 해당 도메인의 개념과 시나리오를 이해할 수 있습니다. -- **파인 튜닝 적용**: 파인 튜닝은 특정 데이터로 모델을 추가로 학습하는 과정입니다. - -## 맞춤화: DSL 사용 - -도메인별 언어 모델(DSL 모델)을 활용하면 전문적이고 문맥에 맞는 상호작용을 통해 사용자 참여를 높일 수 있습니다. 이는 특정 분야, 산업 또는 주제와 관련된 텍스트를 이해하고 생성하는 데 훈련되거나 세부 조정된 모델입니다. DSL 모델을 사용하는 옵션은 처음부터 훈련하는 것부터 SDK 및 API를 통해 기존 모델을 사용하는 것까지 다양합니다. 또 다른 옵션은 세부 조정으로, 기존 사전 훈련된 모델을 가져와 특정 도메인에 맞게 적응시키는 것입니다. - -## 맞춤화: 세부 조정 적용 - -세부 조정은 사전 훈련된 모델이 특정 도메인이나 특정 작업에서 부족한 경우에 고려됩니다. - -예를 들어, 의료 질문은 복잡하며 많은 문맥을 필요로 합니다. 의료 전문가가 환자를 진단할 때는 생활 방식이나 기존 질환과 같은 다양한 요소를 고려하며, 최신 의학 저널을 통해 진단을 검증하기도 합니다. 이러한 미묘한 시나리오에서는 일반적인 목적의 AI 채팅 애플리케이션이 신뢰할 수 있는 출처가 될 수 없습니다. - -### 시나리오: 의료 애플리케이션 - -의료 전문가를 지원하기 위해 설계된 채팅 애플리케이션을 고려해보세요. 이 애플리케이션은 치료 지침, 약물 상호작용 또는 최근 연구 결과에 대한 빠른 참고를 제공합니다. - -일반적인 목적의 모델은 기본적인 의료 질문에 대답하거나 일반적인 조언을 제공하는 데에는 적합할 수 있지만, 다음과 같은 상황에서는 어려움을 겪을 수 있습니다: - -- **매우 구체적이거나 복잡한 경우**: 예를 들어, 신경과 의사는 "소아 환자에서 약물 내성 간질에 대한 최신 관리 방법은 무엇인가요?"라고 애플리케이션에 물을 수 있습니다. -- **최신 개발에 대한 부족**: 일반적인 목적의 모델은 신경학과 약리학의 최신 개발을 반영한 현재 답변을 제공하는 데 어려움을 겪을 수 있습니다. - -이러한 경우, 전문 의료 데이터셋을 사용하여 모델을 세부 조정하면 복잡한 의료 문의에 대한 정확성과 신뢰성을 크게 향상시킬 수 있습니다. 이는 해당 도메인의 도전과 질문을 대표하는 대규모이고 관련성 있는 데이터셋에 액세스하는 것을 필요로 합니다. - -## 고품질 AI 기반 채팅 경험을 위한 고려 사항 - -이 섹션에서는 "고품질" 채팅 애플리케이션의 기준을 설명하며, 실행 가능한 지표를 수집하고 AI 기술을 책임있게 활용하는 프레임워크를 준수하는 것을 포함합니다. - -### 주요 지표 - -애플리케이션의 고품질 성능을 유지하기 위해 주요 지표와 고려 사항을 추적하는 것이 중요합니다. 이러한 측정은 애플리케이션의 기능뿐만 아니라 AI 모델의 품질과 사용자 경험을 평가하는 데 도움이 됩니다. 아래는 고려해야 할 기본, AI 및 사용자 경험 지표를 다루는 목록입니다. - -| 지표 | 정의 | 채팅 개발자를 위한 고려 사항 | -| ----------------------------------------- | ------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -| **가동 시간 (Uptime)** | 애플리케이션이 사용자에게 작동 가능하고 접근 가능한 시간을 측정합니다. | 다운타임을 최소화하기 위해 어떻게 할 것인가요? | -| **응답 시간 (Response Time)** | 애플리케이션이 사용자의 쿼리에 응답하는 데 걸리는 시간을 측정합니다. | 응답 시간을 개선하기 위해 쿼리 처리를 어떻게 최적화할 수 있을까요? | -| **정확도 (Precision)** | 전체 양성 예측 중 실제 양성 예측의 비율 | 모델의 정확도를 어떻게 검증할 것인가요? | -| **재현율 (Recall), 민감도 (Sensitivity)** | 실제 양성 중 양성 예측의 비율 | 재현율 (recall)을 어떻게 측정하고 개선할 것인가요? | -| **F1 점수** | 정밀도 (precision)와 재현율 (recall)의 조화 평균으로, 두 가지 사이의 균형을 맞춥니다. | 목표 F1 점수는 무엇이며, 정밀도와 재현율을 어떻게 균형있게 유지할 것인가요? | -| **Perplexity** | 모델이 예측한 확률 분포가 실제 데이터의 분포와 얼마나 일치하는지 측정합니다. | Perplexity를 최소화하기 위해 어떻게 할 것인가요? | -| **사용자 만족도 지표** | 사용자가 애플리케이션에 대한 인식을 측정합니다. 주로 설문 조사를 통해 수집됩니다. | 얼마나 자주 사용자 피드백을 수집할 것인가요? 이를 기반으로 어떻게 적응할 것인가요? | -| **오류율 (Error Rate)** | 모델이 이해하거나 출력하는 데 발생하는 오류의 비율 | 오류율을 줄이기 위한 전략은 무엇인가요? | -| **재학습 주기** | 새로운 데이터와 통찰력을 반영하기 위해 모델을 업데이트하는 빈도 | 모델을 얼마나 자주 재학습할 것인가요? 재학습 주기를 트리거하는 요소는 무엇인가요? | -| **이상 탐지** | 예상되는 동작과 일치하지 않는 비정상적인 패턴을 식별하기 위한 도구와 기법 | 이상 탐지에 어떻게 대응할 것인가요? | - -### 채팅 애플리케이션에서 책임 있는 AI 실천 방법 구현 - -Microsoft의 책임 있는 AI 접근 방식은 AI 개발과 사용을 안내하는 여섯 가지 원칙을 도출했습니다. 아래는 원칙, 정의 및 채팅 개발자가 고려해야 할 사항과 그 중요성입니다. - -| 원칙 | Microsoft의 정의 | 채팅 개발자를 위한 고려 사항 | 중요성 | -| --------------------- | ----------------------------------------------------- | ------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | -| 공정성 | AI 시스템은 모든 사람을 공정하게 대우해야 합니다. | 채팅 애플리케이션이 사용자 데이터를 기반으로 차별하지 않도록 보장합니다. | 사용자들 사이에서 신뢰와 포용성을 구축하며, 법적인 문제를 피할 수 있습니다. | -| 신뢰성과 안전성 | AI 시스템은 신뢰성 있고 안전하게 작동해야 합니다. | 테스트와 오류 방지를 구현하여 오류와 위험을 최소화합니다. | 사용자 만족도를 보장하고 잠재적인 피해를 방지합니다. | -| 개인 정보 보호와 보안 | AI 시스템은 안전하고 개인 정보를 존중해야 합니다. | 강력한 암호화와 데이터 보호 조치를 구현합니다. | 민감한 사용자 데이터를 보호하고 개인 정보 보호 법을 준수합니다. | -| 포용성 | AI 시스템은 모든 사람을 적극적으로 참여시켜야 합니다. | 다양한 대중을 위해 접근 가능하고 사용하기 쉬운 UI/UX를 디자인합니다. | 더 넓은 범위의 사람들이 효과적으로 애플리케이션을 사용할 수 있도록 보장합니다. | -| 투명성 | AI 시스템은 이해하기 쉬워야 합니다. | AI 응답에 대한 명확한 문서와 이유를 제공합니다. | 사용자는 결정 방식을 이해할 수 있을 때 시스템을 더 신뢰할 가능성이 높습니다. | -| 책임성 | 사람들은 AI 시스템에 대해 책임져야 합니다. | 감사 및 개선을 위한 명확한 프로세스를 수립합니다. | 실수가 발생한 경우 지속적인 개선과 수정 조치를 가능하게 합니다. | - -## 과제 - -[과제](../../python/aoai-assigment-simple.ipynb?WT.mc_id=academic-105485-koreyst)를 확인하세요. 이 과제에서는 첫 번째 채팅 프롬프트 실행부터 텍스트 분류 및 요약 등 다양한 연습을 진행합니다. - -## 수고하셨습니다! 계속해서 학습을 진행하세요 - -이 레슨을 완료한 후 [Generative AI Learning collection](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst)을 확인하여 Generative AI 지식을 계속해서 향상시킬 수 있습니다! - -[검색 애플리케이션 구축](../../../08-building-search-applications/translations/ko/README.md?WT.mc_id=academic-105485-koreyst)을 시작하는 방법을 알아보려면 레슨 8로 이동하세요! diff --git a/07-building-chat-applications/translations/pl/README.md b/07-building-chat-applications/translations/pl/README.md deleted file mode 100644 index 37663c0631..0000000000 --- a/07-building-chat-applications/translations/pl/README.md +++ /dev/null @@ -1,184 +0,0 @@ -# Budowanie Aplikacji Czatowych Opartych na Generatywnej Sztucznej Inteligencji - -[![Budowanie Aplikacji Czatowych Opartych na Generatywnej Sztucznej Inteligencji](../../images/07-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lessons7-gh?WT.mc_id=academic-105485-koreyst) - -> _(Kliknij powyższy obraz, aby obejrzeć wideo tej lekcji)_ - -Teraz, gdy zobaczyliśmy, jak możemy budować aplikacje generujące tekst, przyjrzyjmy się aplikacjom czatowym. - -Aplikacje czatowe stały się integralną częścią naszego codziennego życia, oferując więcej niż tylko środek do prowadzenia swobodnych rozmów. Są one nieodłącznymi elementami obsługi klienta, wsparcia technicznego, a nawet zaawansowanych systemów doradczych. Istnieje duże prawdopodobieństwo, że niedawno otrzymałeś pomoc od aplikacji czatowej. Wraz z integracją bardziej zaawansowanych technologii, takich jak generatywna sztuczna inteligencja, w te platformy, złożoność wzrasta, a wraz z nią wyzwania. - -Niektóre pytania, na które musimy znaleźć odpowiedzi, to: - -- **Budowanie aplikacji**. Jak efektywnie budować i bezproblemowo integrować te aplikacje wykorzystujące sztuczną inteligencję dla konkretnych przypadków użycia? -- **Monitorowanie**. Po wdrożeniu, jak możemy monitorować i zapewnić, że aplikacje działają na najwyższym poziomie jakości, zarówno pod względem funkcjonalności, jak i zgodności z [sześcioma zasadami odpowiedzialnej sztucznej inteligencji](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-105485-koreyst)? - -W miarę jak wkraczamy w erę zdefiniowaną przez automatyzację i bezproblemowe interakcje człowiek-maszyna, zrozumienie, jak generatywna sztuczna inteligencja przekształca zakres, głębię i adaptowalność aplikacji czatowych staje się niezbędne. Ta lekcja zbada aspekty architektury, które wspierają te złożone systemy, zagłębi się w metodologie ich dostosowywania do zadań specyficznych dla danej domeny oraz oceni metryki i względy związane z zapewnieniem odpowiedzialnego wdrażania sztucznej inteligencji. - -## Wprowadzenie - -Ta lekcja obejmuje: - -- Techniki efektywnego budowania i integrowania aplikacji czatowych. -- Jak stosować dostosowanie i fine-tuning do aplikacji. -- Strategie i rozważania dotyczące efektywnego monitorowania aplikacji czatowych. - -## Cele nauki - -Po zakończeniu tej lekcji będziesz w stanie: - -- Opisać rozważania dotyczące budowania i integrowania aplikacji czatowych z istniejącymi systemami. -- Dostosować aplikacje czatowe do konkretnych przypadków użycia. -- Zidentyfikować kluczowe metryki i rozważania w celu efektywnego monitorowania i utrzymania jakości aplikacji czatowych opartych na sztucznej inteligencji. -- Zapewnić, że aplikacje czatowe wykorzystują sztuczną inteligencję w odpowiedzialny sposób. - -## Integracja Generatywnej Sztucznej Inteligencji w Aplikacje Czatowe - -Podnoszenie poziomu aplikacji czatowych poprzez generatywną sztuczną inteligencję nie koncentruje się wyłącznie na tym, aby były one inteligentniejsze; chodzi o optymalizację ich architektury, wydajności i interfejsu użytkownika, aby zapewnić jakościowe doświadczenie użytkownika. Wymaga to zbadania podstaw architektonicznych, integracji API i rozważań dotyczących interfejsu użytkownika. Celem tej sekcji jest zaoferowanie kompleksowej mapy drogowej do nawigacji po tych złożonych krajobrazach, niezależnie od tego, czy włączasz je do istniejących systemów, czy budujesz je jako samodzielne platformy. - -Po zakończeniu tej sekcji będziesz wyposażony w wiedzę niezbędną do efektywnego konstruowania i włączania aplikacji czatowych. - -### Chatbot czy aplikacja czatowa? - -Zanim zagłębimy się w budowanie aplikacji czatowych, porównajmy 'chatboty' z 'aplikacjami czatowymi opartymi na sztucznej inteligencji', które pełnią odrębne role i funkcje. Głównym celem chatbota jest automatyzacja określonych zadań konwersacyjnych, takich jak odpowiadanie na często zadawane pytania lub śledzenie paczki. Zazwyczaj jest on regulowany przez logikę opartą na regułach lub złożone algorytmy sztucznej inteligencji. W przeciwieństwie do tego, aplikacja czatowa oparta na sztucznej inteligencji to znacznie bardziej rozbudowane środowisko zaprojektowane do ułatwiania różnych form komunikacji cyfrowej, takich jak czaty tekstowe, głosowe i wideo między ludzkimi użytkownikami. Jej cechą charakterystyczną jest integracja generatywnego modelu sztucznej inteligencji, który symuluje niuansowe, ludzkie rozmowy, generując odpowiedzi w oparciu o szeroką gamę danych wejściowych i wskazówek kontekstowych. Aplikacja czatowa oparta na generatywnej sztucznej inteligencji może angażować się w dyskusje otwartej domeny, dostosowywać się do zmieniających się kontekstów konwersacyjnych, a nawet tworzyć kreatywne lub złożone dialogi. - -Poniższa tabela przedstawia kluczowe różnice i podobieństwa, aby pomóc nam zrozumieć ich unikalne role w komunikacji cyfrowej. - -| Chatbot | Aplikacja Czatowa oparta na Generatywnej SI | -| ---------------------------------------------- | ------------------------------------------- | -| Skupiony na zadaniach i oparty na regułach | Świadomy kontekstu | -| Często zintegrowany z większymi systemami | Może obsługiwać jednego lub wiele chatbotów | -| Ograniczony do zaprogramowanych funkcji | Integruje generatywne modele SI | -| Wyspecjalizowane i ustrukturyzowane interakcje | Zdolny do dyskusji otwartej domeny | - -### Wykorzystanie gotowych funkcjonalności za pomocą SDK i API - -Przy budowaniu aplikacji czatowej świetnym pierwszym krokiem jest ocena tego, co już istnieje. Korzystanie z SDK i API do budowania aplikacji czatowych jest korzystną strategią z różnych powodów. Integrując dobrze udokumentowane SDK i API, strategicznie pozycjonujesz swoją aplikację na długoterminowy sukces, adresując problemy skalowalności i konserwacji. - -- **Przyspiesza proces rozwoju i zmniejsza nakłady**: Poleganie na gotowych funkcjonalnościach zamiast kosztownego procesu budowania ich samodzielnie pozwala skupić się na innych aspektach aplikacji, które mogą być dla Ciebie ważniejsze, takich jak logika biznesowa. -- **Lepsza wydajność**: Budując funkcjonalność od podstaw, w końcu zadasz sobie pytanie "Jak to się skaluje? Czy ta aplikacja jest w stanie obsłużyć nagły napływ użytkowników?" Dobrze utrzymywane SDK i API często mają wbudowane rozwiązania tych problemów. -- **Łatwiejsza konserwacja**: Aktualizacje i ulepszenia są łatwiejsze do zarządzania, ponieważ większość API i SDK wymaga jedynie aktualizacji biblioteki, gdy zostanie wydana nowsza wersja. -- **Dostęp do najnowocześniejszych technologii**: Wykorzystanie modeli, które zostały dostrojone i wytrenowane na obszernych zbiorach danych, zapewnia Twojej aplikacji możliwości przetwarzania języka naturalnego. - -Dostęp do funkcjonalności SDK lub API zazwyczaj wymaga uzyskania pozwolenia na korystanie z dostarczanych usług, co często odbywa się poprzez użycie unikalnego klucza lub tokenu uwierzytelniającego. Użyjemy Biblioteki Python OpenAI, aby zobaczyć, jak to wygląda. Możesz także spróbować samodzielnie w następującym [notatniku dla OpenAI](../../python/oai-assignment.ipynb?WT.mc_id=academic-105485-koreyst) lub [notatniku dla Usług Azure OpenAI](../../python/aoai-assignment.ipynb?WT.mc_id=academic-105485-koreys) do tej lekcji. - -```python -import os -from openai import OpenAI - -API_KEY = os.getenv("OPENAI_API_KEY","") - -client = OpenAI( - api_key=API_KEY - ) - -chat_completion = client.chat.completions.create(model="gpt-3.5-turbo", messages=[{"role": "user", "content": "Zaproponuj dwa tytuły dla instruktażowej lekcji o aplikacjach czatowych dla generatywnej SI."}]) -``` - -Powyższy przykład używa modelu GPT-3.5 Turbo do uzupełnienia promptu, ale zauważ, że klucz API jest ustawiony przed tym. Otrzymałbyś błąd, gdybyś nie ustawił klucza. - -## Doświadczenie Użytkownika (UX) - -Ogólne zasady UX mają zastosowanie do aplikacji czatowych, ale oto kilka dodatkowych rozważań, które stają się szczególnie ważne ze względu na zaangażowane komponenty uczenia maszynowego. - -- **Mechanizm do adresowania niejednoznaczności**: Generatywne modele SI czasami generują niejednoznaczne odpowiedzi. Funkcja, która pozwala użytkownikom prosić o wyjaśnienie, może być pomocna, jeśli napotkają ten problem. -- **Zapamiętywanie kontekstu**: Zaawansowane generatywne modele SI mają zdolność zapamiętywania kontekstu w ramach rozmowy, co może być niezbędnym atutem dla doświadczenia użytkownika. Danie użytkownikom możliwości kontrolowania i zarządzania kontekstem poprawia doświadczenie użytkownika, ale wprowadza ryzyko przechowywania wrażliwych informacji o użytkowniku. Rozważania dotyczące tego, jak długo te informacje są przechowywane, takie jak wprowadzenie polityki przechowywania, mogą zrównoważyć potrzebę kontekstu z prywatnością. -- **Personalizacja**: Dzięki zdolności do uczenia się i adaptacji, modele SI oferują zindywidualizowane doświadczenie dla użytkownika. Dostosowanie doświadczenia użytkownika poprzez funkcje takie jak profile użytkownika nie tylko sprawia, że użytkownik czuje się zrozumiany, ale także pomaga mu w poszukiwaniu konkretnych odpowiedzi, tworząc bardziej efektywną i satysfakcjonującą interakcję. - -Jednym z takich przykładów personalizacji są ustawienia "Instrukcje niestandardowe" w ChatGPT od OpenAI. Pozwala to na dostarczenie informacji o sobie, które mogą być ważnym kontekstem dla Twoich promptów. Oto przykład niestandardowej instrukcji. - -![Ustawienia Instrukcji Niestandardowych w ChatGPT](../../images/custom-instructions.png?WT.mc_id=academic-105485-koreyst) - -Ten "profil" skłania ChatGPT do stworzenia planu lekcji na temat list powiązanych. Zauważ, że ChatGPT bierze pod uwagę, że użytkownik może chcieć bardziej szczegółowego planu lekcji w oparciu o jej doświadczenie. - -![Prompt w ChatGPT dotyczący planu lekcji o listach powiązanych](../../images/lesson-plan-prompt.png?WT.mc_id=academic-105485-koreyst) - -### Struktura Komunikatów Systemowych Microsoft dla Dużych Modeli Językowych - -[Microsoft dostarczył wytyczne](https://learn.microsoft.com/azure/ai-services/openai/concepts/system-message#define-the-models-output-format?WT.mc_id=academic-105485-koreyst) dotyczące pisania efektywnych komunikatów systemowych podczas generowania odpowiedzi z LLM, podzielone na 4 obszary: - -1. Definiowanie dla kogo jest model, a także jego możliwości i ograniczenia. -2. Definiowanie formatu wyjściowego modelu. -3. Dostarczanie konkretnych przykładów, które demonstrują zamierzone zachowanie modelu. -4. Dostarczanie dodatkowych barier zachowania. - -### Dostępność - -Niezależnie od tego, czy użytkownik ma upośledzenia wzroku, słuchu, motoryki czy poznawcze, dobrze zaprojektowana aplikacja czatowa powinna być użyteczna dla wszystkich. Poniższa lista przedstawia konkretne funkcje mające na celu poprawę dostępności dla różnych upośledzeń użytkowników. - -- **Funkcje dla Osób z Upośledzeniem Wzroku**: Motywy o wysokim kontraście i tekst o zmiennym rozmiarze, kompatybilność z czytnikami ekranu. -- **Funkcje dla Osób z Upośledzeniem Słuchu**: Funkcje zamiany tekstu na mowę i mowy na tekst, wizualne wskazówki dla powiadomień dźwiękowych. -- **Funkcje dla Osób z Upośledzeniem Motoryki**: Wsparcie dla nawigacji klawiaturą, komendy głosowe. -- **Funkcje dla Osób z Upośledzeniem Poznawczym**: Opcje uproszczonego języka. - -## Dostosowanie i Fine-tuning dla Modeli Językowych Specyficznych dla Domeny - -Wyobraź sobie aplikację czatową, która rozumie żargon Twojej firmy i przewiduje konkretne zapytania, które często ma jej baza użytkowników. Istnieje kilka podejść wartych wspomnienia: - -- **Wykorzystanie modeli DSL**. DSL oznacza język specyficzny dla domeny. Możesz wykorzystać tak zwany model DSL wytrenowany w konkretnej domenie, aby zrozumieć jej koncepcje i scenariusze. -- **Zastosowanie fine-tuningu**. Fine-tuning to proces dalszego trenowania modelu za pomocą konkretnych danych. - -## Dostosowanie: Używanie DSL - -Wykorzystanie modeli języka specyficznego dla domeny (modele DSL) może zwiększyć zaangażowanie użytkowników, zapewniając wyspecjalizowane, kontekstowo istotne interakcje. Jest to model, który jest trenowany lub dostrajany, aby zrozumieć i generować tekst związany z konkretnym obszarem, branżą lub tematem. Opcje używania modelu DSL mogą się różnić od trenowania go od podstaw, po korzystanie z istniejących poprzez SDK i API. Inną opcją jest fine-tuning, który polega na wzięciu istniejącego wstępnie wytrenowanego modelu i dostosowaniu go do konkretnej domeny. - -## Dostosowanie: Zastosowanie fine-tuningu - -Fine-tuning jest często rozważany, gdy wstępnie wytrenowany model nie spełnia wymagań w wyspecjalizowanej domenie lub konkretnym zadaniu. - -Na przykład, zapytania medyczne są złożone i wymagają dużo kontekstu. Kiedy lekarz diagnozuje pacjenta, opiera się na różnych czynnikach, takich jak styl życia czy istniejące wcześniej schorzenia, a nawet może polegać na najnowszych czasopismach medycznych, aby zweryfikować swoją diagnozę. W tak niuansowych scenariuszach, ogólna aplikacja czatowa SI nie może być niezawodnym źródłem. - -### Scenariusz: aplikacja medyczna - -Rozważ aplikację czatową zaprojektowaną, aby pomóc pracownikom medycznym, zapewniając szybkie odniesienia do wytycznych leczenia, interakcji leków lub najnowszych wyników badań. - -Model ogólnego przeznaczenia może być odpowiedni do odpowiadania na podstawowe pytania medyczne lub udzielania ogólnych porad, ale może mieć trudności z następującymi kwestiami: - -- **Bardzo konkretne lub złożone przypadki**. Na przykład, neurolog może zapytać aplikację: "Jakie są obecnie najlepsze praktyki w zarządzaniu lekoopornymi epilepsjami u pacjentów pediatrycznych?" -- **Brak najnowszych postępów**. Model ogólnego przeznaczenia może mieć trudności z dostarczeniem aktualnej odpowiedzi, która uwzględnia najnowsze postępy w neurologii i farmakologii. - -W takich przypadkach dostrojenie modelu za pomocą wyspecjalizowanego zbioru danych medycznych może znacznie poprawić jego zdolność do obsługi tych złożonych zapytań medycznych bardziej dokładnie i niezawodnie. Wymaga to dostępu do dużego i odpowiedniego zbioru danych, który reprezentuje wyzwania i pytania specyficzne dla domeny, które muszą być zaadresowane. - -## Rozważania dla Wysokiej Jakości Doświadczenia Czatowego Opartego na SI - -Ta sekcja przedstawia kryteria dla "wysokiej jakości" aplikacji czatowych, które obejmują przechwytywanie przydatnych metryk i przestrzeganie ram, które odpowiedzialnie wykorzystują technologię SI. - -### Kluczowe Metryki - -Aby utrzymać wysoką jakość działania aplikacji, niezbędne jest śledzenie kluczowych metryk i rozważań. Te pomiary nie tylko zapewniają funkcjonalność aplikacji, ale także oceniają jakość modelu SI i doświadczenia użytkownika. Poniżej znajduje się lista, która obejmuje podstawowe metryki, metryki SI i doświadczenia użytkownika, które należy rozważyć. - -| Metryka | Definicja | Rozważania dla Dewelopera Czatu | -| ----------------------------------- | --------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | -| **Czas działania** | Mierzy czas, w którym aplikacja jest operacyjna i dostępna dla użytkowników. | Jak zminimalizujesz przestoje? | -| **Czas odpowiedzi** | Czas, jaki aplikacja potrzebuje, aby odpowiedzieć na zapytanie użytkownika. | Jak zoptymalizujesz przetwarzanie zapytań, aby poprawić czas odpowiedzi? | -| **Precyzja** | Stosunek prawdziwie pozytywnych przewidywań do całkowitej liczby pozytywnych przewidywań | Jak zwalidować precyzję swojego modelu? | -| **Recall (Czułość)** | Stosunek prawdziwie pozytywnych przewidywań do rzeczywistej liczby pozytywów | Jak zmierzysz i poprawisz czułość? | -| **Wskaźnik F1** | Średnia harmoniczna precyzji i czułości, która równoważy kompromis między nimi. | Jaki jest Twój docelowy wskaźnik F1? Jak zrównoważysz precyzję i czułość? | -| **Perplexity** | Mierzy, jak dobrze rozkład prawdopodobieństwa przewidziany przez model pasuje do rzeczywistego rozkładu danych. | Jak zminimalizujesz perplexity? | -| **Metryki satysfakcji użytkownika** | Mierzy percepcję aplikacji przez użytkownika. Często przechwytywane przez ankiety. | Jak często będziesz zbierać opinie użytkowników? Jak się dostosujesz w oparciu o nie? | -| **Częstość błędów** | Częstość, z jaką model popełnia błędy w zrozumieniu lub wynikach. | Jakie strategie masz na miejscu, aby zmniejszyć częstość błędów? | -| **Cykle ponownego trenowania** | Częstotliwość, z jaką model jest aktualizowany, aby uwzględnić nowe dane i spostrzeżenia. | Jak często będziesz ponownie trenować model? Co wyzwala cykl ponownego trenowania? | -| **Wykrywanie anomalii** | Narzędzia i techniki do identyfikacji niezwykłych wzorców, które nie są zgodne z oczekiwanym zachowaniem. | Jak zareagujesz na anomalie? | - -### Wdrażanie Praktyk Odpowiedzialnej SI w Aplikacjach Czatowych - -Podejście Microsoftu do Odpowiedzialnej SI zidentyfikowało sześć zasad, które powinny kierować rozwojem i wykorzystaniem SI. Poniżej znajdują się zasady, ich definicja oraz rzeczy, które deweloper czatu powinien rozważyć i dlaczego powinien je traktować poważnie. - -| Zasady | Definicja Microsoftu | Rozważania dla Dewelopera Czatu | Dlaczego To Jest Ważne | -| ----------------------------- | ------------------------------------------------------------ | ----------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | -| Sprawiedliwość | Systemy SI powinny traktować wszystkich ludzi sprawiedliwie. | Upewnij się, że aplikacja czatowa nie dyskryminuje na podstawie danych użytkownika. | Aby budować zaufanie i inkluzywność wśród użytkowników; unikać konsekwencji prawnych. | -| Niezawodność i Bezpieczeństwo | Systemy SI powinny działać niezawodnie i bezpiecznie. | Wdrażaj testy i zabezpieczenia, aby zminimalizować błędy i ryzyka. | Zapewnia satysfakcję użytkownika i zapobiega potencjalnym szkodom. | -| Prywatność i Bezpieczeństwo | Systemy SI powinny być bezpieczne i szanować prywatność. | Wdrażaj silne szyfrowanie i środki ochrony danych. | Aby chronić wrażliwe dane użytkowników i przestrzegać praw prywatności. | -| Inkluzywność | Systemy SI powinny wzmacniać wszystkich i angażować ludzi. | Projektuj UI/UX, które jest dostępne i łatwe w użyciu dla różnorodnych odbiorców. | Zapewnia, że szerszy zakres osób może efektywnie korzystać z aplikacji. | -| Przejrzystość | Systemy SI powinny być zrozumiałe. | Zapewnij jasną dokumentację i uzasadnienie dla odpowiedzi SI. | Użytkownicy bardziej ufają systemowi, jeśli rozumieją, jak podejmowane są decyzje. | -| Odpowiedzialność | Ludzie powinni być odpowiedzialni za systemy SI. | Ustanów jasny proces audytu i poprawy decyzji SI. | Umożliwia ciągłe udoskonalanie i środki korygujące w przypadku błędów. | - -## Zadanie - -Zobacz [zadanie](../../python?WT.mc_id=academic-105485-koreyst), które przeprowadzi Cię przez serię ćwiczeń od uruchomienia pierwszych promptów czatowych, po klasyfikację i podsumowywanie tekstu i więcej. Zauważ, że zadania są dostępne w różnych językach programowania! - -## Świetna Praca! Kontynuuj Podróż - -Po ukończeniu tej lekcji, sprawdź naszą [Kolekcję Edukacyjną Generatywnej SI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst), aby nadal podnosić swoją wiedzę o Generatywnej SI! - -Przejdź do Lekcji 8, aby zobaczyć, jak możesz zacząć [budować aplikacje wyszukiwania](../../../08-building-search-applications/translations/pl/README.md?WT.mc_id=academic-105485-koreyst)! diff --git a/07-building-chat-applications/translations/pt-br/README.md b/07-building-chat-applications/translations/pt-br/README.md deleted file mode 100644 index 43189205b4..0000000000 --- a/07-building-chat-applications/translations/pt-br/README.md +++ /dev/null @@ -1,197 +0,0 @@ -# Building Generative AI-Powered Chat Applications - -## Criando Aplicações Chat com IA Generativa - -[![Building Generative AI-Powered Chat Applications](../../images/07-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lessons7-gh?WT.mc_id=academic-105485-koreyst) - -> _(Clique na imagem acima para ver o vídeo da lição)_ - -Agora que vimos como podemos criar aplicativos de geração de texto, vamos dar uma olhada nos aplicativos de bate-papo. - -Aplicativos de chat (bate-papo) tornaram-se integrados em nossas vidas diárias, oferecendo mais do que apenas um meio de conversa casual. Eles são partes integrantes do atendimento ao cliente, suporte técnico e até mesmo sistemas de consultoria sofisticados. É provável que você tenha recebido alguma ajuda de um aplicativo de bate-papo não há muito tempo. À medida que integramos tecnologias mais avançadas, como a IA generativa, nessas plataformas, a complexidade aumenta e, com ela, os desafios. - -Algumas perguntas que precisamos responder são: - -- **Criação de um aplicativo**: Como podemos criar de forma eficiente e integrar de maneira transparente esses aplicativos impulsionados por IA para casos de uso específicos? - -- **Monitoramento**: Uma vez implantados, como podemos monitorar e garantir que os aplicativos estejam operando no mais alto nível de qualidade, tanto em termos de funcionalidade quanto na aderência aos [seis princípios de IA responsável](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-105485-koreyst)? - -À medida que avançamos para uma era definida pela automação e interações homem-máquina sem emendas, entender como a IA generativa transforma o escopo, a profundidade e a adaptabilidade dos aplicativos de chat torna-se essencial. Esta lição investigará os aspectos da arquitetura que suportam esses sistemas intricados, explorará as metodologias para ajustá-los para tarefas específicas de domínio e avaliará as métricas e considerações pertinentes para garantir a implantação responsável de IA. - -## Introdução - -Esta lição abrange: - -- Técnicas para criar e integrar eficientemente aplicativos de chat. -- Como aplicar personalização e ajuste fino a aplicativos. -- Estratégias e considerações para monitorar efetivamente aplicativos de chat. - -## Metas de Aprendizado - -Até o final desta lição, você será capaz de: - -- Descrever considerações para construir e integrar aplicativos de chat em sistemas existentes. -- Personalizar aplicativos de chat para casos de uso específicos. -- Identificar métricas-chave e considerações para monitorar e manter a qualidade de aplicativos de chat impulsionados por IA. -- Garantir que os aplicativos de chat utilizem a IA de maneira responsável. - -## Integrando IA Generativa em Aplicativos de Chat - -Elevar aplicativos de chat por meio de IA generativa não se concentra apenas em torná-los mais inteligentes; trata-se de otimizar sua arquitetura, desempenho e interface do usuário para oferecer uma experiência de usuário de qualidade. Isso envolve investigar as bases arquitetônicas, integrações de API e considerações de interface do usuário. Esta seção visa oferecer a você um roteiro abrangente para navegar por essas paisagens complexas, seja você integrando-os em sistemas existentes ou construindo-os como plataformas independentes. - -Ao final desta seção, você estará equipado com a experiência necessária para construir e incorporar eficientemente aplicativos de chat. - -### Chatbot ou Aplicação de Chat? - -Antes de nos aprofundarmos na criação de aplicativos de chat, vamos comparar 'chatbots' com 'aplicações de chat impulsionadas por IA', que desempenham papéis e funcionalidades distintas. O principal propósito de um chatbot é automatizar tarefas conversacionais específicas, como responder a perguntas frequentes ou rastrear um pacote. Normalmente, ele é governado por lógica baseada em regras ou algoritmos complexos de IA. Em contraste, uma aplicação de chat impulsionada por IA é um ambiente muito mais expansivo projetado para facilitar várias formas de comunicação digital, como chats de texto, voz e vídeo entre usuários humanos. Sua característica definidora é a integração de um modelo de IA generativa que simula conversas matizadas e semelhantes às humanas, gerando respostas com base em uma ampla variedade de entradas e indicações contextuais. Uma aplicação de chat impulsionada por IA generativa pode participar de discussões em domínio aberto, adaptar-se a contextos conversacionais em evolução e até mesmo produzir diálogos criativos ou complexos. - -A tabela abaixo destaca as principais diferenças e semelhanças para nos ajudar a entender seus papéis únicos na comunicação digital. - -| Chatbot | Aplicação de Chat Impulsionada por IA Generativa | -| ------------------------------------------- | ------------------------------------------------ | -| Focado em tarefas e baseado em regras | Consciente do contexto | -| Frequentemente integrado a sistemas maiores | Pode hospedar um ou vários chatbots | -| Limitado a funções programadas | Incorpora modelos de IA generativa | -| Interações especializadas e estruturadas | Capaz de discussões em domínio aberto | - -### Alavancando funcionalidades pré-criadas com SDKs e APIs - -Ao criar uma aplicação de chat, um ótimo primeiro passo é avaliar o que já está disponível. Utilizar SDKs e APIs para construir aplicações de chat é uma estratégia vantajosa por várias razões. Ao integrar SDKs e APIs bem documentados, você posiciona estrategicamente sua aplicação para o sucesso a longo prazo, abordando preocupações de escalabilidade e manutenção. - -- **Acelera o processo de desenvolvimento e reduz o overhead**: Contar com funcionalidades pré-construídas, em vez do processo caro de construí-las, permite que você se concentre em outros aspectos da sua aplicação que possam ser mais importantes, como a lógica de negócios. - -- **Melhor desempenho**: Ao construir funcionalidades do zero, eventualmente você se perguntará "Como ela escala? Esta aplicação é capaz de lidar com um aumento repentino de usuários?" SDKs e APIs bem mantidos frequentemente têm soluções embutidas para essas preocupações. - -- **Manutenção mais fácil**: Atualizações e melhorias são mais fáceis de gerenciar, pois a maioria das APIs e SDKs simplesmente requer uma atualização de biblioteca quando uma versão mais recente é lançada. - -- **Acesso a tecnologia de ponta**: Alavancar modelos que foram ajustados e treinados em conjuntos de dados extensivos proporciona à sua aplicação capacidades de linguagem natural. - -Acesso à funcionalidade de um SDK ou API geralmente envolve a obtenção de permissão para usar os serviços fornecidos, frequentemente por meio do uso de uma chave única ou token de autenticação. Utilizaremos a Biblioteca Python da OpenAI para explorar como isso é feito. Você também pode experimentar por conta própria no seguinte [notebook para OpenAI](../../python/oai-assigment-simple.ipynb?WT.mc_id=academic-105485-koreyst) ou [Notebook para Serviços Azure OpenAI](../../python/aoai-assignment.ipynb?WT.mc_id=academic-105485-koreys) para esta lição. - -```python -import os -from openai import OpenAI - -API_KEY = os.getenv("OPENAI_API_KEY","") - -client = OpenAI( - api_key=API_KEY - ) - -chat_completion = client.chat.completions.create(model="gpt-3.5-turbo", messages=[{"role": "user", "content": "Suggest two titles for an instructional lesson on chat applications for generative AI."}]) -``` - -No exemplo acima é usado o modelo GPT-3.5 Turbo para completar o prompt. Mas observe que a chave da API é definida antes de fazê-lo. Você receberia o seguinte erro se não definisse a chave. - -```output -AuthenticationError: No API key provided. You can set your API key in code using 'openai.api_key = ', or you can set the environment variable OPENAI_API_KEY=). If your API key is stored in a file, you can point the openai module at it with 'openai.api_key_path = '. You can generate API keys in the OpenAI web interface. See https://platform.openai.com/account/api-keys for details. -``` - -## Experiência do Usuário (UX) - -Os princípios gerais de UX se aplicam aos aplicativos de chat. Porém, aqui estão algumas considerações adicionais que se tornam particularmente importantes devido aos componentes de aprendizado de máquina envolvidos. - -- **Mecanismo para lidar com ambiguidade**: Modelos de IA generativa ocasionalmente geram respostas ambíguas. Uma funcionalidade que permite aos usuários solicitar esclarecimentos pode ser útil caso se deparem com esse problema. - -- **Retenção de contexto**: Modelos avançados de IA generativa têm a capacidade de lembrar o contexto dentro de uma conversa, o que pode ser um ativo necessário para a experiência do usuário. Dar aos usuários a capacidade de controlar e gerenciar o contexto melhora a experiência do usuário, mas introduz o risco de retenção de informações sensíveis do usuário. Considerações sobre por quanto tempo essas informações são armazenadas, como a introdução de uma política de retenção, podem equilibrar a necessidade de contexto contra a privacidade. - -- **Personalização**: Com a capacidade de aprender e se adaptar, os modelos de IA oferecem uma experiência individualizada para o usuário. Personalizar a experiência do usuário por meio de recursos como perfis de usuário não apenas faz com que o usuário se sinta compreendido, mas também auxilia na busca por respostas específicas, criando uma interação mais eficiente e satisfatória. - -Um exemplo de personalização é o ajuste de "Instruções Personalizadas" no ChatGPT da OpenAI. Ele permite que você forneça informações sobre si mesmo que podem ser um contexto importante para seus prompts. Aqui está um exemplo de uma instrução personalizada. - -![Custom Instructions Settings in ChatGPT](../../images/custom-instructions.png?WT.mc_id=academic-105485-koreyst) - -Esse prompt "perfil" faz com que o ChatGPT crie um plano de aula sobre listas vinculadas. Observe que o ChatGPT leva em consideração que o usuário pode querer um plano de aula mais aprofundado com base em sua experiência. - -![A prompt in ChatGPT for a lesson plan about linked lists](../../images/lesson-plan-prompt.png?WT.mc_id=academic-105485-koreyst) - -### Estrutura de Mensagens do Sistema da Microsoft para Grandes Modelos de Linguagem - -[Microsoft has provided guidance](https://learn.microsoft.com/azure/ai-services/openai/concepts/system-message#define-the-models-output-format?WT.mc_id=academic-105485-koreyst) para escrever mensagens de sistema eficazes ao gerar respostas de LLMs divididas em 4 áreas: - -1. Definindo para quem o modelo se destina, assim como suas capacidades e limitações. -2. Definindo o formato de saída do modelo. -3. Fornecendo exemplos específicos que demonstrem o comportamento pretendido do modelo. -4. Estabelecendo barreiras comportamentais adicionais. - -### Acessibilidade - -Seja o usuário portador de deficiência visual, auditiva, motora ou cognitiva, uma aplicação de chat bem projetada deve ser utilizável por todos. A lista a seguir detalha características específicas destinadas a aprimorar a acessibilidade para várias deficiências de usuários. - -- **Recursos para Deficiência Visual**: Temas de alto contraste e texto redimensionável, compatibilidade com leitores de tela. -- **Recursos para Deficiência Auditiva**: Funções de texto para fala e fala para texto, indicações visuais para notificações sonoras. -- **Recursos para Deficiência Motora**: Suporte à navegação por teclado, comandos de voz. -- **Recursos para Deficiência Cognitiva**: Opções de linguagem simplificada. - -## Customização e Ajuste Fino para Modelos de Linguagem Específicos de Domínio - -Imagine uma aplicação de chat que compreende o jargão da sua empresa e antecipa as consultas específicas que sua base de usuários comumente faz. Existem algumas abordagens que valem a pena mencionar: - -- **Alavancar modelos DSL**. DSL significa linguagem específica de domínio. Você pode aproveitar um modelo chamado DSL treinado em um domínio específico para entender seus conceitos e cenários. -- **Aplicar ajuste fino**. O ajuste fino é o processo de treinar ainda mais seu modelo com dados específicos. - -## Customização: Usando um DSL - -Aproveitar modelos de linguagem específicos de domínio (Modelos DSL) pode aprimorar o engajamento do usuário ao fornecer interações especializadas e contextualmente relevantes. É um modelo treinado ou ajustado para entender e gerar texto relacionado a um campo, indústria ou assunto específico. As opções para usar um modelo DSL podem variar desde treiná-lo do zero até usar modelos pré-existentes por meio de SDKs e APIs. Outra opção é o ajuste fino, que envolve pegar um modelo pré-treinado existente e adaptá-lo para um domínio específico. - -## Customização: Aplicar Ajuste Fino - -O ajuste fino é frequentemente considerado quando um modelo pré-treinado não atende a um domínio especializado ou tarefa específica. - -Por exemplo, consultas médicas são complexas e exigem muito contexto. Quando um profissional de saúde faz um diagnóstico, isso se baseia em uma variedade de fatores, como estilo de vida ou condições pré-existentes, e pode até depender de periódicos médicos recentes para validar o diagnóstico. Em cenários tão nuances, um aplicativo de chat de IA de propósito geral não pode ser uma fonte confiável. - -### Cenário: um aplicativo médico - -Considere um aplicativo de chat projetado para auxiliar profissionais de saúde, fornecendo referências rápidas a diretrizes de tratamento, interações medicamentosas ou descobertas recentes de pesquisas. - -Um modelo de propósito geral pode ser adequado para responder a perguntas médicas básicas ou fornecer conselhos gerais, mas pode ter dificuldades com o seguinte: - -- **Casos altamente específicos ou complexos**. Por exemplo, um neurologista pode perguntar ao aplicativo: "Quais são as melhores práticas atuais para o manejo da epilepsia resistente a medicamentos em pacientes pediátricos?" -- **Falta de avanços recentes**. Um modelo de propósito geral pode ter dificuldade em fornecer uma resposta atualizada que incorpore os avanços mais recentes em neurologia e farmacologia. - -Em casos como esses, o ajuste fino do modelo com um conjunto de dados médicos especializados pode melhorar significativamente sua capacidade de lidar com essas consultas médicas intrincadas de maneira mais precisa e confiável. Isso requer acesso a um conjunto de dados grande e relevante que represente os desafios e perguntas específicos do domínio que precisam ser abordados. - -## Considerações para uma Experiência de Chat Impulsionada por IA de Alta Qualidade - -Esta seção delineia os critérios para aplicações de chat consideradas "de alta qualidade", que incluem a captura de métricas acionáveis e a adesão a um framework que utiliza de forma responsável a tecnologia de IA. - -### Métricas-Chave - -Para manter o desempenho de alta qualidade de uma aplicação, é essencial acompanhar métricas-chave e considerações. Essas medições não apenas garantem a funcionalidade da aplicação, mas também avaliam a qualidade do modelo de IA e a experiência do usuário. Abaixo está uma lista que abrange métricas básicas, de IA e de experiência do usuário a serem consideradas. - -| Métrica | Definição | Considerações para o Desenvolvedor de Chat | -| ------------------------------------- | --------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | -| **Tempo de Atividade (Uptime)** | Mede o tempo em que a aplicação está operacional e acessível pelos usuários. | Como você irá minimizar o tempo de inatividade? | -| **Tempo de Resposta** | O tempo que a aplicação leva para responder a uma consulta do usuário. | Como você pode otimizar o processamento de consultas para melhorar o tempo de resposta? | -| **Precisão** | A razão entre previsões verdadeiras positivas e o número total de previsões positivas. | Como você irá validar a precisão do seu modelo? | -| **Revocação (Sensibilidade)** | A razão entre previsões verdadeiras positivas e o número real de positivos. | Como você irá medir e melhorar a revocação? | -| **Escore F1** | A média harmônica de precisão e revocação, que equilibra o compromisso entre ambos. | Qual é o seu Escore F1 alvo? Como você irá equilibrar precisão e revocação? | -| **Perplexidade** | Mede quão bem a distribuição de probabilidade prevista pelo modelo se alinha com a distribuição real dos dados. | Como você irá minimizar a perplexidade? | -| **Métricas de Satisfação do Usuário** | Mede a percepção do usuário em relação à aplicação. Frequentemente capturado por meio de pesquisas. | Com que frequência você irá coletar feedback do usuário? Como você irá se adaptar a isso? | -| **Taxa de Erro** | A taxa na qual o modelo comete erros na compreensão ou saída. | Quais estratégias você tem para reduzir as taxas de erro? | -| **Ciclos de Retreinamento** | A frequência com que o modelo é atualizado para incorporar novos dados e insights. | Com que frequência você irá retrainer o modelo? O que desencadeia um ciclo de retratamento? | -| **Detecção de Anomalias** | Ferramentas e técnicas para identificar padrões incomuns que não seguem o comportamento esperado. | Como você irá responder a anomalias? | -| | - -### Implementando Práticas de IA Responsável em Aplicações de Chat - -A abordagem da Microsoft para a IA Responsável identificou seis princípios que devem orientar o desenvolvimento e uso de IA. Abaixo estão os princípios, suas definições e o que um desenvolvedor de chat deve considerar e por que deve levar isso a sério. - -| Princípios | Definição pela Microsoft | Considerações para o Desenvolvedor de Chat | Por que é Importante | -| -------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------- | -| Justiça | Sistemas de IA devem tratar todas as pessoas de forma justa. | Garantir que a aplicação de chat não discrimine com base nos dados do usuário. | Construir confiança e inclusividade entre os usuários; evita ramificações legais. | -| Confiabilidade e Segurança | Sistemas de IA devem ter desempenho confiável e seguro. | Implementar testes e mecanismos de segurança para minimizar erros e riscos. | Garante satisfação do usuário e evita possíveis danos. | -| Privacidade e Segurança | Sistemas de IA devem ser seguros e respeitar a privacidade. | Implementar criptografia forte e medidas de proteção de dados. | Proteger dados sensíveis do usuário e cumprir leis de privacidade. | -| Inclusividade | Sistemas de IA devem capacitar todos e envolver as pessoas. | Projetar uma interface acessível e fácil de usar para diversos públicos. | Garante que uma variedade maior de pessoas possa usar a aplicação de forma eficaz. | -| Transparência | Sistemas de IA devem ser compreensíveis. | Fornecer documentação clara e justificativa para as respostas da IA. | Os usuários têm mais probabilidade de confiar em um sistema se puderem entender como são tomadas as decisões. | -| Responsabilidade | As pessoas devem ser responsáveis pelos sistemas de IA. | Estabelecer um processo claro para auditoria e melhoria das decisões de IA. | Possibilita melhorias contínuas e medidas corretivas em caso de erros. | - -## Tarefa - -Veja a [tarefa](../../python?WT.mc_id=academic-105485-koreyst) que o levará por uma série de exercícios, desde a execução de seus primeiros prompts de chat até a classificação e resumo de texto e muito mais. - -## Excelente Trabalho! Continue no Aprendizado! - -Depois de concluir esta lição, confira nossa [coleção de aprendizado de IA generativa](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) para continuar a aprimorar seus conhecimentos sobre IA generativa! - -Agora, vamos seguir para a Lição 8 para ver como você pode começar a [criar aplicativos de pesquisa](../../../08-building-search-applications/translations/pt-br/README.md?WT.mc_id=academic-105485-koreyst)! diff --git a/07-building-chat-applications/translations/tw/README.md b/07-building-chat-applications/translations/tw/README.md deleted file mode 100644 index 5052434aa0..0000000000 --- a/07-building-chat-applications/translations/tw/README.md +++ /dev/null @@ -1,185 +0,0 @@ -# 建構生成式 AI 驅動的聊天應用程式 - -[![建構生成式 AI 驅動的聊天應用程式](../../images/07-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lessons7-gh?WT.mc_id=academic-105485-koreyst) - -> _(點擊上方圖片以觀看本課的影片)_ - -現在我們已經了解如何建構文字生成應用程式,讓我們來看看聊天應用程式。 - -聊天應用程式已經融入我們的日常生活,不僅僅是提供隨意交談的方式。它們是客戶服務、技術支援,甚至是複雜諮詢系統的不可或缺部分。不久前你可能就從聊天應用程式中獲得了一些幫助。隨著我們將生成式 AI 等更先進的技術整合到這些平台中,複雜性增加了,挑戰也隨之增加。 - -一些我們需要回答的問題是: - -- **建構應用程式**. 我們如何有效地建構並無縫整合這些 AI 驅動的應用程式以滿足特定的使用案例? -- **監控**. 部署後,我們如何監控並確保應用程式在功能和遵循[負責任 AI 的六項原則](https://www.microsoft.com/ai/responsible-ai?WT.mc_id=academic-105485-koreyst)方面都能達到最高品質? - -隨著我們進一步進入由自動化和無縫人機互動定義的時代,了解生成式 AI 如何改變聊天應用程式的範圍、深度和適應性變得至關重要。本課程將探討支持這些複雜系統的架構方面,深入研究為特定領域任務微調它們的方法,並評估確保負責任 AI 部署相關的指標和考量。 - -## 簡介 - -本課程涵蓋: - -- 高效建構和整合聊天應用程式的技術。 -- 如何應用自訂和微調到應用程式。 -- 有效監控聊天應用程式的策略和考量。 - -## 學習目標 - -在這節課結束時,你將能夠: - -- 描述將聊天應用程式建構並整合到現有系統中的考量因素。 -- 自訂聊天應用程式以適應特定使用案例。 -- 確認關鍵指標和考量因素,以有效監控並維持 AI 驅動的聊天應用程式的品質。 -- 確保聊天應用程式負責任地利用 AI。 - -## 將生成式 AI 整合到聊天應用程式中 - -提升聊天應用程式透過生成式 AI 不僅僅是讓它們變得更智能;還在於最佳化它們的架構、性能和使用者介面,以提供高品質的使用者體驗。這涉及調查架構基礎、API 整合和使用者介面考量。本節旨在為您提供一個全面的路線圖,以便在這些複雜的領域中導航,無論您是將它們插入現有系統還是將它們建構為獨立平台。 - -到本節結束時,您將具備有效建構和整合聊天應用程式所需的專業知識。 - -### 聊天機器人或聊天應用程式? - -在我們深入建構聊天應用程式之前,讓我們比較一下「聊天機器人」和「AI 驅動的聊天應用程式」,它們具有不同的角色和功能。聊天機器人的主要目的是自動化特定的對話任務,例如回答常見問題或追蹤套件。它通常由基於規則的邏輯或複雜的 AI 演算法控制。相比之下,AI 驅動的聊天應用程式是一個更為廣泛的環境,旨在促進各種形式的數位通信,例如文字、語音和影片聊天。其定義特徵是整合了一個生成式 AI 模型,模擬細緻入微的類人對話,根據各種輸入和上下文線索生成回應。生成式 AI 驅動的聊天應用程式可以參與開放領域的討論,適應不斷變化的對話上下文,甚至產生創意或複雜的對話。 - -下表概述了關鍵差異和相似之處,以幫助我們了解它們在數位通信中的獨特角色。 - -| 聊天機器人 | 生成式 AI 驅動的聊天應用程式 | -| ------------------------------------- | -------------------------------------- | -| 任務導向和基於規則 | 情境感知 | -| 通常整合到更大的系統中 | 可以承載一個或多個聊天機器人 | -| 限於程式化的功能 | 包含生成式 AI 模型 | -| 專門且結構化的互動 | 能夠進行開放領域的討論 | - -### 利用 SDK 和 API 的內建功能 - -在建構聊天應用程式時,一個很好的第一步是評估現有的資源。使用 SDK 和 API 來建構聊天應用程式是一種有利的策略,原因有很多。通過整合文件完善的 SDK 和 API,你正在策略性地為你的應用程式定位長期成功,解決延展性和維護問題。 - -- **加速開發過程並減少開銷**: 依賴預建的功能而不是自行建構昂貴的過程,讓你可以專注於應用程式的其他方面,例如商業邏輯。 -- **更好的性能**: 當從頭開始建構功能時,你最終會問自己「它如何延展?這個應用程式能夠處理突然湧入的使用者嗎?」良好維護的 SDK 和 API 通常內建了這些問題的解決方案。 -- **更容易維護**: 更新和改進更容易管理,因為大多數 API 和 SDK 只需在新版本發布時更新函式庫。 -- **接觸尖端技術**: 利用經過微調和訓練的大量數據集的模型,為你的應用程式提供自然語言能力。 - -存取 SDK 或 API 的功能通常涉及獲取使用所提供服務的許可,這通常是通過使用唯一的金鑰或身份驗證令牌來實現的。我們將使用 OpenAI Python 函式庫來探索這看起來是什麼樣子的。你也可以在以下的 [OpenAI 筆記本](../../python/oai-assignment.ipynb?WT.mc_id=academic-105485-koreyst) 或 [Azure OpenAI Services 筆記本](../../python/aoai-assignment.ipynb?WT.mc_id=academic-105485-koreys) 中自行嘗試這一課程。 - -```python -import os -from openai import OpenAI - -API_KEY = os.getenv("OPENAI_API_KEY","") - -client = OpenAI( - api_key=API_KEY - ) - -chat_completion = client.chat.completions.create(model="gpt-3.5-turbo", messages=[{"role": "user", "content": "為生成式 AI 的聊天應用程式建議兩個教學課程標題。"}]) -``` - -上述範例使用 GPT-3.5 Turbo 模型來完成提示,但請注意在此之前已設定 API 金鑰。如果未設定金鑰,您將收到錯誤。 - -## 使用者體驗 (UX) - -一般的使用者體驗原則適用於聊天應用程式,但由於涉及機器學習元件,這裡有一些額外的考量變得特別重要。 - -- **解決歧義的機制**: 生成式 AI 模型偶爾會生成模糊的答案。允許用戶要求澄清的功能在遇到這個問題時會很有幫助。 -- **上下文保留**: 高級生成式 AI 模型具有記住對話上下文的能力,這對用戶體驗來說是必要的資產。讓用戶能夠控制和管理上下文可以改善用戶體驗,但也引入了保留敏感用戶資訊的風險。對於這些資訊存儲多長時間的考量,例如引入保留政策,可以在上下文需求與隱私之間取得平衡。 -- **個性化**: 具有學習和適應能力的 AI 模型為用戶提供了個性化的體驗。通過用戶檔案等功能定制用戶體驗,不僅讓用戶感到被理解,還有助於他們尋找特定答案,創造更高效和滿意的互動。 - -例如在 OpenAI 的 ChatGPT 中的"自訂指示"設定就是一個這樣的個人化範例。它允許你提供關於你自己的資訊,這些資訊可能是你的提示的重要背景。這裡是一個自訂指示的範例。 - -![Custom Instructions Settings in ChatGPT](../../images/custom-instructions.png?WT.mc_id=academic-105485-koreyst) - -這個「設定檔」提示ChatGPT建立一個關於鏈結串列的課程計劃。請注意,ChatGPT會考慮到使用者可能基於她的經驗需要更深入的課程計劃。 - -![在ChatGPT中關於鏈結串列課程計劃的提示](../../images/lesson-plan-prompt.png?WT.mc_id=academic-105485-koreyst) - -### 微軟的大型語言模型系統訊息框架 - -[Microsoft has provided guidance](https://learn.microsoft.com/azure/ai-services/openai/concepts/system-message#define-the-models-output-format?WT.mc_id=academic-105485-koreyst) for writing effective system messages when generating responses from LLMs broken down into 4 areas: - -1. 定義模型的目標對象,以及其能力和限制。 -2. 定義模型的輸出格式。 -3. 提供展示模型預期行為的具體範例。 -4. 提供額外的行為防護措施。 - -### 無障礙性 - -無論使用者是否有視覺、聽覺、運動或認知障礙,一個設計良好的聊天應用程式應該對所有人都可用。以下列表分解了旨在提高各種使用者障礙可及性的特定功能。 - -- **視障功能**: 高對比主題和可調整大小的文字,螢幕閱讀器相容性。 -- **聽障功能**: 文字轉語音和語音轉文字函式,音訊通知的視覺提示。 -- **肢體障礙功能**: 鍵盤導航支援,語音命令。 -- **認知障礙功能**: 簡化語言選項。 - -## 自訂和微調領域特定語言模型 - -想像一個聊天應用程式,它能理解你公司的行話並預測其用戶群常見的特定查詢。有幾種方法值得一提: - -- **利用DSL模型**。DSL代表領域專用語言。您可以利用在特定領域訓練的所謂DSL模型來理解其概念和情境。 -- **應用微調**。微調是使用特定資料進一步訓練模型的過程。 - -## 自訂: 使用 DSL - -利用領域專用語言模型(DSL Models)可以通過提供專業的、上下文相關的互動來增強用戶參與度。這是一種訓練或微調以理解和生成與特定領域、行業或主題相關文本的模型。使用DSL模型的選項可以從從頭開始訓練一個,到通過SDK和API使用現有的模型。另一個選項是微調,這涉及採用現有的預訓練模型並將其調整為特定領域。 - -## 自訂: 套用微調 - -微調通常在預訓練模型在專門領域或特定任務中表現不佳時考慮。 - -例如,醫療查詢非常複雜,需要大量的上下文。當醫療專業人員診斷患者時,會基於多種因素,如生活方式或既存病況,甚至可能依賴最近的醫學期刊來驗證其診斷。在這種細微的情況下,通用的 AI 聊天應用程式不能成為可靠的來源。 - -### 情境: 一個醫療應用程序 - -考慮一個聊天應用程式,旨在通過提供治療指南、藥物相互作用或最新研究結果的快速參考來協助醫療從業人員。 - -一個通用模型可能足以回答基本的醫療問題或提供一般建議,但可能在以下方面存在困難: - -- **高度特定或複雜的案例**。例如,神經科醫生可能會問應用程式:「目前管理兒童患者藥物抗性癲癇的最佳做法是什麼?」 -- **缺乏最新進展**。通用模型可能難以提供包含神經學和藥理學最新進展的當前答案。 - -在這些情況下,使用專門的醫療數據集對模型進行微調可以顯著提高其更準確和可靠地處理這些複雜醫療問題的能力。這需要訪問大量且相關的數據集,這些數據集代表了需要解決的特定領域挑戰和問題。 - -## 高品質 AI 驅動聊天體驗的考量因素 - -本節概述了「高品質」聊天應用程式的標準,包括捕捉可操作的指標和遵循負責任地利用 AI 技術的框架。 - -### 關鍵指標 - -為了維持應用程式的高品質效能,追蹤關鍵指標和考量因素是必不可少的。這些測量不僅確保應用程式的功能性,還評估 AI 模型和使用者體驗的品質。以下是一份涵蓋基本、AI 和使用者體驗指標的清單,供參考。 - -| Metric | Definition | Considerations for Chat Developer | -| ----------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- | -| **Uptime** | 測量應用程式運行和用戶可訪問的時間。 | 你將如何最大限度地減少停機時間? | -| **Response Time** | 應用程式回應用戶查詢所需的時間。 | 你如何優化查詢處理以改善回應時間? | -| **Precision** | 真陽性預測數量與總陽性預測數量的比率。 | 你將如何驗證模型的精確度? | -| **Recall (Sensitivity)** | 真陽性預測數量與實際陽性數量的比率。 | 你將如何測量和改善召回率? | -| **F1 Score** | 精確度和召回率的調和平均數,平衡兩者之間的權衡。 | 你的目標 F1 Score 是什麼?你將如何平衡精確度和召回率? | -| **Perplexity** | 測量模型預測的概率分佈與實際數據分佈的對齊程度。 | 你將如何減少困惑度? | -| **User Satisfaction Metrics** | 測量用戶對應用程式的感知。通常通過調查收集。 | 你將多頻繁地收集用戶反饋?你將如何根據反饋進行調整? | -| **Error Rate** | 模型在理解或輸出時犯錯的比率。 | 你有什麼策略來減少錯誤率? | -| **Retraining Cycles** | 模型更新以納入新數據和見解的頻率。 | 你將多頻繁地重新訓練模型?什麼會觸發重新訓練週期? | -| **Anomaly Detection** | 用於識別不符合預期行為的異常模式的工具和技術。 | 你將如何應對異常? | - -### 在聊天應用程式中實現負責任的 AI 實踐 - -Microsoft 的負責任 AI 方法已經確立了六項應該指導 AI 開發和使用的原則。以下是這些原則、它們的定義以及聊天開發者應該考慮的事項和為什麼他們應該認真對待這些事項。 - -| 原則 | 微軟的定義 | 聊天應用程式開發者的考量 | 為什麼這很重要 | -| ---------------------- | ----------------------------------------------------- | ---------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -| 公平性 | AI 系統應該公平對待所有人。 | 確保聊天應用程式不會基於用戶資料進行歧視。 | 建立用戶之間的信任和包容性;避免法律後果。 | -| 可靠性和安全性 | AI 系統應該可靠且安全地運行。 | 實施測試和故障保護以最小化錯誤和風險。 | 確保用戶滿意度並防止潛在的傷害。 | -| 隱私和安全 | AI 系統應該是安全的並尊重隱私。 | 實施強加密和資料保護措施。 | 保護敏感用戶資料並遵守隱私法規。 | -| 包容性 | AI 系統應該賦予每個人權力並讓人們參與。 | 設計對多元觀眾可訪問且易於使用的 UI/UX。 | 確保更廣泛的人群能有效使用應用程式。 | -| 透明性 | AI 系統應該是可理解的。 | 提供清晰的文件和 AI 回應的理由。 | 用戶更可能信任一個他們能理解決策過程的系統。 | -| 問責性 | 人們應該對 AI 系統負責。 | 建立明確的審計和改進 AI 決策的過程。 | 在出錯時能夠持續改進和採取糾正措施。 | - -## 作業 - -請參閱[assignment](../../python?WT.mc_id=academic-105485-koreyst)它將帶你完成一系列的練習,從執行你的第一個聊天提示,到分類和摘要文本等等。請注意,這些作業有不同的程式語言版本! - -## 很棒的工作!繼續這段旅程 - -完成本課程後,請查看我們的[生成式 AI 學習集合](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst)以繼續提升您的生成式 AI 知識! - -前往第8課,看看如何開始[建構搜尋應用程式](../../../08-building-search-applications/translations/tw/README.md?WT.mc_id=academic-105485-koreyst)! - diff --git a/08-building-search-applications/translations/cn/README.md b/08-building-search-applications/translations/cn/README.md deleted file mode 100644 index 58d663f616..0000000000 --- a/08-building-search-applications/translations/cn/README.md +++ /dev/null @@ -1,163 +0,0 @@ -# 第八章:创建搜索应用 - -[![Introduction to Generative AI and Large Language Models](../../images/08-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson8-gh?WT.mc_id=academic-105485-koreyst) - -LLMs 应用场景不仅仅是聊天机器人和文本生成。 还可以使用嵌入的方式来构建搜索应用程序。 嵌入是数据的数字表示,也称为向量,可用于数据的语义搜索。 - -在本章中,您将为“Our Startup”构建一个搜索应用程序。 我们的初创公司是一家非营利组织,为发展中国家的学生提供免费教育。 我们的初创公司拥有大量 YouTube 视频,学生可以使用这些视频来了解人工智能。 我们的初创公司希望构建一个搜索应用程序,允许学生通过输入问题来搜索 YouTube 视频。 - -例如,学生可能会输入“什么是 Jupyter Notebooks?” 或“什么是 Azure ML”,搜索应用程序将返回与该问题相关的 YouTube 视频列表,更好的是,搜索应用程序将返回视频中问题答案所在位置的链接 。 - -## 本章概述 - -在本章中,您将学习到: - -- 语义搜索与关键字搜索。 -- 什么是文本嵌入。 -- 创建文本嵌入索引。 -- 搜索文本嵌入索引。 - -## 学习目标 - -在完成本章的学习,您将能够: - -- 区分语义搜索和关键字搜索之间的区别。 -- 解释什么是文本嵌入。 -- 使用嵌入创建一个应用程序来搜索数据。 - -## 为什么要构建搜索应用? - -创建搜索应用将帮助您了解如何使用嵌入来搜索数据。 您还将学习如何构建可供学生快速查找信息的搜索应用程序。 - -本课程包括 Microsoft [AI Show](https://www.youtube.com/playlist?list=PLlrxD0HtieHi0mwteKBOfEeOYf0LJU4O1) YouTube 频道的 YouTube 记录的嵌入索引。 AI Show 是一个 YouTube 频道,向您介绍人工智能和机器学习。 嵌入索引包含截至 2023 年 10 月每个 YouTube 记录的嵌入。您将使用嵌入索引为“Our Startup”构建搜索应用程序。 搜索应用程序返回视频中问题答案所在位置的链接。 这是学生快速找到所需信息的好方法。 - -以下是问题“can you use rstudio with azure ml?”的语义查询示例。 查看 YouTube 网址,您会看到该网址包含一个时间戳,可将您带到视频中问题答案所在的位置。 - -![Semantic query for the question "can you use rstudio with Azure ML"](../../images/query-results.png?WT.mc_id=academic-105485-koreyst) - -## 什么是语义搜索? - -现在您可能想知道什么是语义搜索? 语义搜索是一种使用查询中单词的语义或含义来返回相关结果的搜索技术。 - -这是语义搜索的示例。 假设您想买一辆汽车,您可能会搜索“我的梦想汽车”,语义搜索会理解您并不是在“梦想”一辆车,而是想购买您的“理想”汽车。 语义搜索了解您的意图并返回相关结果。 另一种方法是“关键字搜索”,它会逐字搜索有关汽车的梦想,但通常会返回不相关的结果。 - -## 什么是文本嵌入? - -[文本嵌入](https://en.wikipedia.org/wiki/Word_embedding)是[自然语言处理](https://en.wikipedia.org/wiki/Natural_language_processing?WT.mc_id=academic-105485-koreyst)中使用的文本表示技术。 文本嵌入是文本的语义数字表示。 嵌入用于以机器易于理解的方式表示数据。 用于构建文本嵌入的模型有很多,在本章中,我们将重点关注使用 OpenAI 嵌入模型生成嵌入。 - -下面是一个示例,图像以下文本是 AI Show YouTube 频道上某一集的文字记录: - -```text -Today we are going to learn about Azure Machine Learning. -``` - -我们将文本传递给 OpenAI Embedding API,它将返回以下由 1536 个数字(也称为向量)组成的嵌入。 向量中的每个数字代表文本的不同方面。 为简洁起见,这里是向量中的前 10 个数字。 - -```python -[-0.006655829958617687, 0.0026128944009542465, 0.008792596869170666, -0.02446001023054123, -0.008540431968867779, 0.022071078419685364, -0.010703742504119873, 0.003311325330287218, -0.011632772162556648, -0.02187200076878071, ...] -``` - -## Embedding 索引是如何创建的? - -本章的嵌入索引是使用一系列 Python 脚本创建的。 您可以在本章的“scripts”文件夹中的 [README](../../scripts/README.md?WT.mc_id=academic-105485-koreyst) 中找到脚本和说明。 您无需运行这些脚本即可完成本章,因为我们为您提供了嵌入索引。 - -这些脚本执行以下操作: - -1. 下载 [AI Show](https://www.youtube.com/playlist?list=PLlrxD0HtieHi0mwteKBOfEeOYf0LJU4O1) 播放列表中每个 YouTube 视频的文字记录。 -2. 使用[OpenAI Functions](https://learn.microsoft.com/azure/ai-services/openai/how-to/function-calling?WT.mc_id=academic-105485-koreyst),尝试 从 YouTube 记录的前 3 分钟中提取演讲者姓名。 每个视频的演讲者姓名存储在名为 `embedding_index_3m.json` 的嵌入索引中。 -3. 然后将转录文本分成 **3 分钟的文本片段**。 该片段包含大约 20 个与下一个片段重叠的单词,以确保该片段的嵌入不会被切断并提供更好的搜索上下文。 -4. 然后,每个文本片段都会传递到 OpenAI Chat API,将文本总结为 60 个单词。 摘要也存储在嵌入索引 `embedding_index_3m.json` 中。 -5. 最后,将片段文本传递到 OpenAI Embedding API。 Embedding API 返回一个由 1536 个数字组成的向量,这些数字表示该段的语义含义。 该段与 OpenAI 嵌入向量一起存储在嵌入索引 `embedding_index_3m.json` 中。 - -### 向量数据库 - -为了简单起见,嵌入索引存储在名为 `embedding_index_3m.json` 的 JSON 文件中,并加载到 Pandas Dataframe 中。 但是,在生产中,嵌入索引将存储在向量数据库中,例如 [Azure Cognitive Search](https://learn.microsoft.com/training/modules/improve-search-results-vector-search?WT.mc_id=academic-105485-koreyst), [Redis](https://cookbook.openai.com/examples/vector_databases/redis/readme?WT.mc_id=academic-105485-koreyst), [Pinecone](https://cookbook.openai.com/examples/vector_databases/pinecone/readme), [Weaviate](https://cookbook.openai.com/examples/vector_databases/weaviate/readme?WT.mc_id=academic-105485-koreyst) - -## 理解余弦相似度 - -我们已经了解了文本嵌入,下一步是学习如何使用文本嵌入来搜索数据,特别是使用余弦相似度找到与给定查询最相似的嵌入。 - -### 什么是余弦相似度? - -余弦相似度是两个向量之间相似度的度量,您还会听到这被称为 `近邻搜索`。 要执行余弦相似度搜索,您需要使用 OpenAI Embedding API 对 _查询_ 文本进行 _向量化_。 然后计算查询向量与嵌入索引中每个向量之间的余弦相似度。 请记住,嵌入索引对于每个 YouTube 转录文本片段都有一个向量。 最后,按余弦相似度对结果进行排序,余弦相似度最高的文本片段与查询最相似。 - -从数学角度来看,余弦相似度测量投影在多维空间中的两个向量之间的角度的余弦。 这种测量是有益的,因为如果两个文档由于大小而相距欧几里得距离很远,它们之间的角度仍然较小,因此余弦相似度较高。 有关余弦相似度方程的更多信息,请参阅[余弦相似度](https://en.wikipedia.org/wiki/Cosine_similarity?WT.mc_id=academic-105485-koreyst)。 - -## 构建您的第一个搜索应用程序 - -接下来,我们将学习如何使用嵌入构建搜索应用程序。 搜索应用将允许学生通过输入问题来搜索视频。 搜索应用程序将返回与问题相关的视频列表。 搜索应用程序还将返回视频中问题答案所在位置的链接。 - -此解决方案是使用 Python 3.10 或更高版本在 Windows 11、macOS 和 Ubuntu 22.04 上构建和测试的。 您可以从 [python.org](https://www.python.org/downloads/?WT.mc_id=academic-105485-koreyst) 下载 Python。 - -## 作业 - 构建一个让学生能够使用的搜索应用程序 - -我们在本章开始时介绍了“Our Startup”。 现在是时候让学生为他们的评估构建搜索应用程序了。 - -您将创建用于构建搜索应用程序的 Azure OpenAI 服务。 您将创建以下 Azure OpenAI 服务。 你需要 Azure 订阅才能完成此任务。 - -### 启动 Azure Cloud Shell - -1. 登录[Azure 门户](https://portal.azure.com/?WT.mc_id=academic-105485-koreyst)。 -2. 选择 Azure 门户右上角的 Cloud Shell 图标。 -3. 选择 **Bash** 作为环境类型。 - -#### 创建资源组 - -> 通过指引我们使用美国东部名为“semantic-video-search”的资源组。 -> 您可以更改资源组的名称,更改资源的位置等 -> 检查[可用的模型](https://aka.ms/oai/models?WT.mc_id=academic-105485-koreyst)。 - -```shell -az group create --name semantic-video-search --location eastus -``` - -#### 创建 Azure OpenAI Service 资源 - -从 Azure Cloud Shell 运行以下命令来创建 Azure OpenAI Service 资源。 - -```shell -az cognitiveservices account create --name semantic-video-openai --resource-group semantic-video-search \ - --location eastus --kind OpenAI --sku s0 -``` - -#### Get the endpoint and keys for usage in this application - -#### 获取此应用程序中使用的 endpoint 和 keys - -从 Azure Cloud Shell 运行以下命令以获取 Azure OpenAI 服务资源的终 endpoint 和 keys - -```shell -az cognitiveservices account show --name semantic-video-openai \ - --resource-group semantic-video-search | jq -r .properties.endpoint -az cognitiveservices account keys list --name semantic-video-openai \ - --resource-group semantic-video-search | jq -r .key1 -``` - -#### 部署 OpenAI Embedding 模型 - -从 Azure Cloud Shell 运行以下命令来部署 OpenAI 嵌入模型。 - -```shell -az cognitiveservices account deployment create \ - --name semantic-video-openai \ - --resource-group semantic-video-search \ - --deployment-name text-embedding-ada-002 \ - --model-name text-embedding-ada-002 \ - --model-version "2" \ - --model-format OpenAI \ - --sku-capacity 100 --sku-name "Standard" -``` - -## 解决方案 - -在 GitHub Codespaces 中打开 [solution notebook](../../python/aoai-solution.ipynb?WT.mc_id=academic-105485-koreyst) 并按照 Jupyter Notebook 中的说明进行操作。 - -当您运行 notebook 时,系统将提示您输入查询。 输入框将如下所示: - -![Input box for the user to input a query](../../images/notebook-search.png?WT.mc_id=academic-105485-koreyst) - -## 继续学习 - -想要了解有关创建搜索应用的更多信息? 转至[进阶学习的页面](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) 查找有关此主章节的其他学习资源。 - -前往第九章,我们将学习[构建图像生成应用程序](../../../09-building-image-applications/translations/cn/README.md?WT.mc_id=academic-105485-koreyst) diff --git a/08-building-search-applications/translations/ja-jp/README.md b/08-building-search-applications/translations/ja-jp/README.md deleted file mode 100644 index 5c7d3e10ee..0000000000 --- a/08-building-search-applications/translations/ja-jp/README.md +++ /dev/null @@ -1,177 +0,0 @@ -# 検索アプリケーションの構築 - -[![Introduction to Generative AI and Large Language Models](../../images/08-lesson-banner.png?WT.mc_id=academic-105485-yoterada)](https://aka.ms/gen-ai-lesson8-gh?WT.mc_id=academic-105485-koreyst) - -LLM は、チャットボットやテキスト生成だけでなく、Embeddings を使った検索アプリケーションの実装も可能です。Embeddings とは、ベクトルと呼ばれるデータの数値表現で、データのセマンティック検索に活用できます。 - -今回のレッスンでは、教育スタートアップ向けの検索アプリケーションを作ります。スタートアップは、発展途上国の学生に無料教育を提供する非営利団体で、AI について学べる多数の YouTube ビデオを提供しています。そして今、学生が質問を入力するだけで YouTube 動画を検索できるアプリケーションの開発を行う予定です。 - -例えば、学生が「Jupyter Notebook とは何ですか?」や「Azure ML とは何ですか?」と質問すると、その質問に関連する YouTube 動画のリストを返します。さらに、その質問の回答が動画のどの部分にあるのかを示すリンクも示します。 - -## はじめに - -このレッスンでは、下記の内容について説明します。 - -- セマンティック検索とキーワード検索の違い -- テキスト埋め込みとは何か -- テキスト埋め込みインデックスの作成方法 -- テキスト埋め込みインデックスの検索方法 - -## 学習目標 - -このレッスンを修了すると、下記を理解できます: - -- セマンティック検索とキーワード検索の違いを理解し、説明できる -- テキスト埋め込みとは何かを理解し、説明できる -- データ検索に Embeddings を使用したアプリケーションを作成できる - -## なぜ検索アプリケーションを作るのでしょうか? - -実際に検索アプリケーションを作成すると、Embeddings を使用したデータの検索技術を習得できます。また、学生が情報を素早く見つけるための検索アプリケーションの作り方も学べます。 - -このレッスンでは、Microsoft の [AI Show](https://www.youtube.com/playlist?list=PLlrxD0HtieHi0mwteKBOfEeOYf0LJU4O1) という YouTube チャンネルから、YouTube の字幕を抜き出し、それを Embedding 検索用のインデックスとして利用する方法について紹介します。AI Show は、AI と機械学習について学べる YouTube チャンネルです。Embedding 用のインデックスは、2023 年 10 月までの各 YouTube にアップロードされた動画の字幕を含めています。この Embedding インデックスを使用して、スタートアップ用の検索アプリケーションを作ります。この検索アプリケーションは、質問の答えが動画のどの部分にあるかを示すリンクも返します。これは、学生が必要な情報を素早く見つけるのに非常に役立ちます。 - -下記は、「Azure ML で rstudio を使えますか?」という質問に対するセマンティック・クエリの例です。YouTube の URL を見てみると、URL には質問の答えがどの動画のどの部分にあるかを示すタイムスタンプが含まれています。 - -![Semantic query for the question "can you use rstudio with Azure ML"](../../images/query-results.png?WT.mc_id=academic-105485-yoterada) - -## セマンティック検索とは何でしょうか? - -セマンティック検索とは、検索クエリ内の単語の意味、つまりセマンティクスを利用して、関連性のある結果を返す検索手法を指します。 - -セマンティック検索の一例を挙げてみましょう。あなたが車を購入したいと考えている場合、「私が将来乗りたい夢の車」を検索したとします。この場合、セマンティック検索は、あなたが車について「夢」見ているわけではなく、「理想の車」を購入したいという意図を理解します。そして、その意図に関連する結果を返します。これに対して、「キーワード検索」は文字通りに車についての夢を検索し、結果として関連性のない情報を返す確立が高くなります。 - -## テキスト埋め込み (Embeddings) とは何でしょうか? - -[テキストの埋め込み (Embeddings)](https://en.wikipedia.org/wiki/Word_embedding?WT.mc_id=academic-105485-yoterada) は、[自然言語処理](https://en.wikipedia.org/wiki/Natural_language_processing?WT.mc_id=academic-105485-yoterada)において用いられるテキストの表現方法で、テキストの意味を数値表現したものです。この埋め込みは、機械が理解しやすいように数値データとして表現するために使用します。テキスト埋め込みを生成するための AI モデルは多数存在しますが、今回のレッスンでは OpenAI が提供する埋め込みモデルを使用し、埋め込みの作成方法も学びます。 - -ここで一例を挙げます。たとえば、AI Show の YouTube チャンネルのエピソードの一部を文字起こししたテキストがあるとします。 - -```text -今日は、Azure Machine Learning について学習します。 -``` - -このテキストを OpenAI の埋め込み API に渡すと、1536 個の数値ベクトルとして埋め込みデータが返ってきます。このベクトルの各数値は、テキストの異なる側面を表現しています。簡単に理解できるように、ベクトルの最初の 10 個の数値を以下に示します。 - -```text -[ --0.006655829958617687, 0.0026128944009542465, -0.008792596869170666, -0.02446001023054123, --0.008540431968867779, 0.022071078419685364, --0.010703742504119873, 0.003311325330287218,  --0.011632772162556648, -0.02187200076878071, -... -] -``` - -## 埋め込みインデックスはどのようにして作成するのでしょうか? - -このレッスンの埋め込みインデックスは、Python スクリプトを用いて作成しました。スクリプトとその使用方法は、このレッスンの `scripts` フォルダ内の [README](../../scripts/README.md?WT.mc_id=academic-105485-yoterada) に記載しています。埋め込みインデックスはすでに提供されているので、このレッスンを完了するためにこれらのスクリプトを実行する必要はありません。 - -スクリプト内部では下記の操作を行っています: - -1. [AI Show](https://www.youtube.com/playlist?list=PLlrxD0HtieHi0mwteKBOfEeOYf0LJU4O1) プレイリスト中の各 YouTube 動画の字幕をダウンロードします。 -2. [OpenAI の Function Calling](https://learn.microsoft.com/azure/ai-services/openai/how-to/function-calling?WT.mc_id=academic-105485-yoterada) を使用して、YouTube 字幕の最初から 3 分で発表者の名前を抽出します。各動画の発表者の名前は、`embedding_index_3m.json` という名前の埋め込みインデックスに保存します。 -3. その後、字幕テキストは「**3 分間のテキストブロック**」に分割します。各ブロックには、次のブロックから約 20 語を重複して含め、各ブロックの埋め込みが途切れないように、より良い検索コンテキストを提供します。 -4. 各テキストブロックを OpenAI の Chat API に渡し、テキストを 60 語に要約します。この要約結果も `embedding_index_3m.json` という埋め込みインデックスに保存します。 -5. 最後に、テキストブロックの内容を OpenAI の埋め込み API に渡します。埋め込み API は、ブロックの意味を表現する 1536 個の数値からなるベクトルを返します。テキストブロックと OpenAI の埋め込みベクトルは、`embedding_index_3m.json` という埋め込みインデックスに保存します。 - -### ベクトル・データベース - -今回レッスンをかんたんに進めるため、埋め込みインデックスは `embedding_index_3m.json` という名前の JSON ファイルに保存し、Pandas のデータフレームに読み込みます。しかし、実際の運用環境では、埋め込みインデックスは [Azure AI Search](https://learn.microsoft.com/training/modules/improve-search-results-vector-search?WT.mc_id=academic-105485-yoterada)、[Redis](https://cookbook.openai.com/examples/vector_databases/redis/readme?WT.mc_id=academic-105485-yoterada)、[Pinecone](https://cookbook.openai.com/examples/vector_databases/pinecone/readme?WT.mc_id=academic-105485-yoterada)、[Weaviate](https://cookbook.openai.com/examples/vector_databases/weaviate/readme?WT.mc_id=academic-105485-yoterada) などのベクトル・データベースに保存します。 - -## コサイン類似度について理解しましょう - -テキストの埋め込みについて学んだので、次にテキストの埋め込みを使ってデータを検索します。特にコサイン類似度を使って特定の問い合わせに対して最も類似した埋め込みを見つける方法を学びます。 - -### コサイン類似度とは何でしょうか? - -コサイン類似度は、2 つのベクトル間の類似性を測る指標で、これは「最近傍検索」とも呼ばれます。コサイン類似度検索を行うためには、まず OpenAI の埋め込み API を使って、ユーザから問い合わせされたテキストをベクトル化します。次に、問い合わせされたベクトルと、埋め込みインデックス内の各ベクトルとのコサイン類似度を計算します。埋め込みインデックスには、YouTube の字幕テキストブロックごとにベクトルが存在します。最後に、結果をコサイン類似度でソートします。コサイン類似度が最も高いテキストブロックが、問い合わせされた内容に最も近い内容を表しています。 - -数学的な観点から見ると、コサイン類似度は多次元空間に投影された 2 つのベクトル間の角度のコサインを測定します。この測定は有益で、2 つのドキュメントが大きさのためにユークリッド距離で離れていても、それらの間の角度が小さいため、コサイン類似度が高くなる可能性があります。コサイン類似度の方程式についての詳細は、[コサイン類似度](https://en.wikipedia.org/wiki/Cosine_similarity?WT.mc_id=academic-105485-yoterada)をご覧ください。 - -> [!TIP] -> 訳者追記 -> 訳者が日本語で説明している下記の記事もどうぞ参考にご覧ください。 -> [Azure OpenAI Embedding モデルを利用し最も関連性の高いドキュメントを見つける方法](https://qiita.com/yoshioterada/items/3e575828368bf3767532) - -## 初めての検索アプリケーションの構築 - -次に、埋め込みを使って検索アプリケーションを実装する方法を学びます。この検索アプリケーションでは、学生が質問を入力してビデオを検索できます。検索アプリケーションは、質問に関連するビデオのリストを返します。さらに、質問に対する回答を含むビデオへのリンクも返します。 - -このソリューションは、Python 3.10 以上を使用して Windows 11、macOS、Ubuntu 22.04 で作成・テストしました。Python は [python.org](https://www.python.org/downloads/?WT.mc_id=academic-105485-yoterada) からダウンロードできます。 - -## 課題 - 学生向けの検索アプリケーションを作る - -このレッスンの初めにスタートアップについて紹介しました。そしてこれから、学生が自分たちの評価を検索できるアプリケーションを作ります。 - -この課題では、検索アプリケーションを作るために Azure OpenAI Services を利用します。下記のように Azure OpenAI Services を作成します。この課題を完了するためには、Azure サブスクリプションが事前に必要です。 - -### Azure Cloud Shell  の起動 - -1. [Azure portal](https://portal.azure.com/?WT.mc_id=academic-105485-yoterada) にサインインします -2. Azure portal の右上隅にある Cloud Shell アイコンを選択します -3. 環境の種類として**Bash**を選択します - -#### リソースグループを作成する - -> この手順では、米国東部に "semantic-video-search" という名前のリソースグループを作成し使用します。 -> リソースグループの名前は変更可能ですが、リソースの場所を変更する場合は、 -> [モデルの可用性](https://aka.ms/oai/models?WT.mc_id=academic-105485-yoterada)から対象リージョンで利用可能かご確認ください。 - -> [!TIP] -> 訳者追記 -> 日本では jaapneast のリージョンで OpenAI の text-embedding-ada-002, gpt-35-turbo-0613 のモデルが利用可能です。仮に japaneast で利用できない場合は、他のリージョンで作成してください。 - -```shell -az group create --name semantic-video-search --location eastus -``` - -#### Azure OpenAI Service リソースを作成する - -Azure Cloud Shell から、下記のコマンドを実行して Azure OpenAI Service リソースを作成します。 - -```shell -az cognitiveservices account create --name semantic-video-openai --resource-group semantic-video-search \ - --location eastus --kind OpenAI --sku s0 -``` - -#### アプリケーションで使用するためのエンドポイントとキーを取得する - -Azure Cloud Shell から、下記のコマンドを実行して Azure OpenAI Service リソースのエンドポイントとキーを取得します。 - -```shell -az cognitiveservices account show --name semantic-video-openai \ - --resource-group semantic-video-search | jq -r .properties.endpoint -az cognitiveservices account keys list --name semantic-video-openai \ - --resource-group semantic-video-search | jq -r .key1 -``` - -#### OpenAI Embedding モデルをデプロイする - -Azure Cloud Shell から、下記のコマンドを実行して OpenAI Embedding モデルをデプロイします。 - -```shell -az cognitiveservices account deployment create \ - --name semantic-video-openai \ - --resource-group semantic-video-search \ - --deployment-name text-embedding-ada-002 \ - --model-name text-embedding-ada-002 \ - --model-version "2" \ - --model-format OpenAI \ - --sku-capacity 100 --sku-name "Standard" -``` - -## 解決策 - -GitHub Codespaces で[ソリューションのノートブック](../../python/aoai-solution.ipynb?WT.mc_id=academic-105485-yoterada)を開き、Jupyter Notebook の指示に従ってください。 - -ノートブックを実行すると、質問内容を入力するように求められます。入力ボックスは次のように表示されます。 - -![Input box for the user to input a query](../../images/notebook-search.png?WT.mc_id=academic-105485-yoterada) - -## お疲れ様でした! 学習を続ける - -このレッスン修了後、[生成 AI 学習コレクション](https://aka.ms/genai-collection?WT.mc_id=academic-105485-yoterada) をチェックして、Generative AI の知識をレベルアップさせましょう。 - -次のレッスン 9 では、[画像生成アプリケーションの構築](../../../09-building-image-applications/translations/ja-jp/README.md?WT.mc_id=academic-105485-yoterada)方法について学びます! diff --git a/08-building-search-applications/translations/ko/README.md b/08-building-search-applications/translations/ko/README.md deleted file mode 100644 index 853e798805..0000000000 --- a/08-building-search-applications/translations/ko/README.md +++ /dev/null @@ -1,160 +0,0 @@ -# 검색 애플리케이션 만들기 - -[![Introduction to Generative AI and Large Language Models](../../images/08-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson8-gh?WT.mc_id=academic-105485-koreyst) - -LLM(대형 언어 모델)은 챗봇과 텍스트 생성 이상의 기능을 가지고 있습니다. Embedding을 사용하여 검색 애플리케이션을 만들 수도 있습니다. Embedding은 데이터의 수치적 표현인 벡터로, 데이터의 의미 기반 검색에 사용할 수 있습니다. - -이 레슨에서는 교육 스타트업을 위한 검색 애플리케이션을 만들 것입니다. 우리 스타트업은 개발도상국의 학생들에게 무료 교육을 제공하는 비영리 기관입니다. 우리 스타트업은 학생들이 AI에 대해 배울 수 있는 많은 수의 YouTube 비디오를 보유하고 있습니다. 우리 스타트업은 학생들이 질문을 입력하여 YouTube 비디오를 검색할 수 있는 검색 애플리케이션을 만들고자 합니다. - -예를 들어, 학생이 'Jupyter Notebook이란 무엇인가?' 또는 'Azure ML이란 무엇인가?'라고 입력할 수 있고, 검색 애플리케이션은 해당 질문과 관련된 YouTube 비디오 목록을 반환하며, 더 나아가 검색 애플리케이션은 질문의 답변이 있는 비디오의 위치로 이동할 수 있는 링크를 반환할 것입니다. - -## 소개 - -이 레슨에서는 다음 내용을 다룰 것입니다: - -- 의미 기반 검색과 키워드 검색의 차이점. -- 텍스트 Embedding이란 무엇인가. -- 텍스트 Embedding 인덱스 생성. -- 텍스트 Embedding 인덱스 검색. - -## 학습 목표 - -이 레슨을 마친 후에는 다음을 할 수 있습니다: - -- 의미 기반 검색과 키워드 검색의 차이를 설명할 수 있습니다. -- 텍스트 Embedding이란 무엇인지 설명할 수 있습니다. -- Embedding을 사용하여 데이터를 검색하는 애플리케이션을 만들 수 있습니다. - -## 검색 애플리케이션을 만드는 이유 - -검색 애플리케이션을 만드는 것은 Embedding을 사용하여 데이터를 검색하는 방법을 이해하는 데 도움이 됩니다. 또한 학생들이 정보를 빠르게 찾을 수 있는 검색 애플리케이션을 만드는 방법을 배우게 될 것입니다. - -이 레슨에는 Microsoft [AI Show](https://www.youtube.com/playlist?list=PLlrxD0HtieHi0mwteKBOfEeOYf0LJU4O1) YouTube 채널의 YouTube 비디오 트랜스크립트의 Embedding 인덱스가 포함되어 있습니다. AI Show는 AI와 머신러닝에 대해 가르치는 YouTube 채널입니다. Embedding 인덱스에는 2023년 10월까지의 각 YouTube 트랜스크립트에 대한 Embedding이 포함되어 있습니다. 우리 스타트업을 위해 Embedding 인덱스를 사용하여 검색 애플리케이션을 만들 것입니다. 검색 애플리케이션은 질문의 답변이 있는 비디오의 위치로 이동할 수 있는 링크를 반환합니다. 이는 학생들이 필요한 정보를 빠르게 찾는 좋은 방법입니다. - -다음은 질문 'Azure ML에서 rstudio를 사용할 수 있나요?'에 대한 의미 기반 쿼리의 예입니다. YouTube URL을 확인해보면, 질문의 답변이 있는 비디오의 위치로 이동하는 타임스탬프가 URL에 포함되어 있습니다. - -![Semantic query for the question "can you use rstudio with Azure ML"](../../images/query-results.png?WT.mc_id=academic-105485-koreyst) - -## 의미 기반 검색이란 무엇인가요? - -이제 아마도 궁금해하실 것 같습니다. 의미 기반 검색이란 무엇일까요? 의미 기반 검색은 쿼리의 단어들의 의미, 즉 의미론을 활용하여 관련된 결과를 반환하는 검색 기술입니다. - -다음은 의미 기반 검색의 예시입니다. 예를 들어, 차를 구매하려고 한다고 가정해봅시다. '내 꿈의 차'라고 검색할 수 있습니다. 의미 기반 검색은 여러분이 차에 대해 '꿈을 꾸는' 것이 아니라 '이상적인' 차를 구매하려고 한다는 것을 이해합니다. 의미 기반 검색은 여러분의 의도를 이해하고 관련된 결과를 반환합니다. 반면에 '키워드 검색'은 차에 대한 꿈을 진정으로 검색하고 종종 관련 없는 결과를 반환합니다. - -## 텍스트 임베딩이란 무엇인가요? - -[텍스트 임베딩](https://en.wikipedia.org/wiki/Word_embedding?WT.mc_id=academic-105485-koreyst)은 [자연어 처리](https://en.wikipedia.org/wiki/Natural_language_processing?WT.mc_id=academic-105485-koreyst)에서 사용되는 텍스트 표현 기술입니다. 텍스트 임베딩은 텍스트의 의미론적인 수치적 표현입니다. 임베딩은 기계가 이해하기 쉬운 방식으로 데이터를 표현하는 데 사용됩니다. 텍스트 임베딩을 구축하기 위한 다양한 모델이 있지만, 이 레슨에서는 OpenAI 임베딩 모델을 사용하여 임베딩을 생성하는 방법에 초점을 맞출 것입니다. - -다음은 AI Show YouTube 채널의 에피소드 중 하나의 트랜스크립트에서 가져온 텍스트의 예시입니다: - -```text -오늘은 Azure Machine Learning에 대해 배우게 될 것입니다. -``` - -텍스트를 OpenAI Embedding API에 전달하면, 1536개의 숫자로 구성된 임베딩이 반환됩니다. 각 숫자는 텍스트의 다른 측면을 나타냅니다. 간결함을 위해, 임베딩의 첫 10개 숫자만 표시하면 아래와 같습니다. - -```python -[-0.006655829958617687, 0.0026128944009542465, 0.008792596869170666, -0.02446001023054123, -0.008540431968867779, 0.022071078419685364, -0.010703742504119873, 0.003311325330287218, -0.011632772162556648, -0.02187200076878071, ...] -``` - -## 임베딩 인덱스는 어떻게 생성되나요? - -이 레슨의 임베딩 인덱스는 일련의 Python 스크립트를 사용하여 생성되었습니다. 이 스크립트는 이 레슨의 `scripts` 폴더에 있는 [README](../../scripts/README.md?WT.mc_id=academic-105485-koreyst)와 함께 제공됩니다. 이 레슨을 완료하기 위해 이 스크립트를 실행할 필요는 없습니다. 왜냐하면 임베딩 인덱스가 이미 제공되기 때문입니다. - -이 스크립트는 다음과 같은 작업을 수행합니다: - -1. [AI Show](https://www.youtube.com/playlist?list=PLlrxD0HtieHi0mwteKBOfEeOYf0LJU4O1) 재생목록의 각 YouTube 비디오의 트랜스크립트를 다운로드합니다. -2. [OpenAI Functions](https://learn.microsoft.com/azure/ai-services/openai/how-to/function-calling?WT.mc_id=academic-105485-koreyst)를 사용하여 YouTube 트랜스크립트의 처음 3분에서 스피커 이름을 추출하려고 시도합니다. 각 비디오의 스피커 이름은 `embedding_index_3m.json`이라는 임베딩 인덱스에 저장됩니다. -3. 그런 다음 트랜스크립트 텍스트를 **3분 텍스트 세그먼트**로 분할합니다. 세그먼트에는 임베딩이 잘리지 않도록 하고 더 나은 검색 문맥을 제공하기 위해 다음 세그먼트에서 약 20개의 단어가 겹치도록 설계되었습니다. -4. 각 텍스트 세그먼트는 OpenAI Chat API에 전달되어 텍스트를 60단어로 요약합니다. 이 요약은 임베딩 인덱스 `embedding_index_3m.json`에도 저장됩니다. -5. 마지막으로, 세그먼트 텍스트는 OpenAI Embedding API에 전달됩니다. Embedding API는 세그먼트의 의미론적인 의미를 나타내는 1536개의 숫자 벡터를 반환합니다. 세그먼트와 OpenAI Embedding 벡터는 임베딩 인덱스 `embedding_index_3m.json`에 저장됩니다. - -### 벡터 데이터베이스 - -레슨의 간소화를 위해 임베딩 인덱스는 `embedding_index_3m.json`이라는 JSON 파일에 저장되고 Pandas 데이터프레임으로 로드됩니다. 그러나 실제 운영 환경에서는 임베딩 인덱스를 [Azure Cognitive Search](https://learn.microsoft.com/training/modules/improve-search-results-vector-search?WT.mc_id=academic-105485-koreyst), [Redis](https://cookbook.openai.com/examples/vector_databases/redis/readme?WT.mc_id=academic-105485-koreyst), [Pinecone](https://cookbook.openai.com/examples/vector_databases/pinecone/readme?WT.mc_id=academic-105485-koreyst), [Weaviate](https://cookbook.openai.com/examples/vector_databases/weaviate/readme?WT.mc_id=academic-105485-koreyst)와 같은 벡터 데이터베이스에 저장됩니다. - -## 코사인 유사도 이해하기 - -텍스트 임베딩에 대해 배웠으니, 다음 단계는 코사인 유사도를 사용하여 데이터를 검색하고 특정 쿼리에 가장 유사한 임베딩을 찾는 방법을 배우는 것입니다. - -### 코사인 유사도란 무엇인가요? - -코사인 유사도는 두 벡터 사이의 유사성을 측정하는 방법으로, 이를 `최근접 이웃 검색 (nearest neighbor search)`이라고도 합니다. 코사인 유사도 검색을 수행하려면 OpenAI Embedding API를 사용하여 _쿼리_ 텍스트를 _벡터화_ 해야 합니다. 그런 다음 쿼리 벡터와 임베딩 인덱스의 각 벡터 간의 _코사인 유사도_ 를 계산합니다. 기억하세요, 임베딩 인덱스에는 각 YouTube 트랜스크립트 텍스트 세그먼트에 대한 벡터가 있습니다. 마지막으로, 코사인 유사도에 따라 결과를 정렬하고, 코사인 유사도가 가장 높은 텍스트 세그먼트가 쿼리와 가장 유사합니다. - -수학적인 관점에서 코사인 유사도는 다차원 공간에 투영된 두 벡터 사이의 각도의 코사인을 측정합니다. 이 측정은 유용합니다. 왜냐하면 두 문서가 크기 때문에 유클리드 거리로 인해 멀리 떨어져 있을지라도, 그들 사이의 각도가 더 작고 따라서 코사인 유사도가 더 높을 수 있기 때문입니다. 코사인 유사도 방정식에 대한 자세한 정보는 [코사인 유사도](https://en.wikipedia.org/wiki/Cosine_similarity?WT.mc_id=academic-105485-koreyst)를 참조하세요. - -## 첫 번째 검색 애플리케이션 만들기 - -이제 임베딩을 사용하여 검색 애플리케이션을 만드는 방법을 배우겠습니다. 검색 애플리케이션은 학생들이 질문을 입력하여 비디오를 검색할 수 있게 해줍니다. 검색 애플리케이션은 질문과 관련된 비디오 목록을 반환합니다. 또한 검색 애플리케이션은 질문의 답변이 있는 비디오의 위치로 이동할 수 있는 링크를 반환합니다. - -이 솔루션은 Windows 11, macOS 및 Ubuntu 22.04에서 Python 3.10 이상을 사용하여 빌드 및 테스트되었습니다. Python은 [python.org](https://www.python.org/downloads/?WT.mc_id=academic-105485-koreyst)에서 다운로드할 수 있습니다. - -## 과제 - 학생들이 사용할 수 있도록 검색 애플리케이션 만들기 - -이 레슨의 시작에서 우리 스타트업을 소개했습니다. 이제 학생들이 자신의 평가를 위해 검색 애플리케이션을 만들 수 있도록 해야 합니다. - -이 과제에서는 검색 애플리케이션을 구축하는 데 사용될 Azure OpenAI 서비스를 생성합니다. 다음 Azure OpenAI 서비스를 생성해야 합니다. 이 과제를 완료하려면 Azure 구독이 필요합니다. - -### Azure Cloud Shell 시작하기 - -1. [Azure portal](https://portal.azure.com/?WT.mc_id=academic-105485-koreyst)에 로그인합니다. -2. Azure 포털의 오른쪽 상단에 있는 Cloud Shell 아이콘을 선택합니다. -3. 환경 유형으로 **Bash**를 선택합니다. - -#### 리소스 그룹 생성 - -> 이 안내에서는 동부 미국에 있는 "semantic-video-search"라는 리소스 그룹을 사용합니다. -> 리소스 그룹의 이름을 변경할 수 있지만, 리소스의 위치를 변경할 때는 [모델 가용성 테이블](https://aka.ms/oai/models?WT.mc_id=academic-105485-koreyst)을 확인하세요. - -```shell -az group create --name semantic-video-search --location eastus -``` - -#### Azure OpenAI 서비스 리소스 생성 - -Azure Cloud Shell에서 다음 명령을 실행하여 Azure OpenAI 서비스 리소스를 생성합니다. - -```shell -az cognitiveservices account create --name semantic-video-openai --resource-group semantic-video-search \ - --location eastus --kind OpenAI --sku s0 -``` - -#### 애플리케이션에서 사용할 엔드포인트와 키 가져오기 - -Azure Cloud Shell에서 다음 명령을 실행하여 Azure OpenAI 서비스 리소스의 엔드포인트와 키를 가져옵니다. - -```shell -az cognitiveservices account show --name semantic-video-openai \ - --resource-group semantic-video-search | jq -r .properties.endpoint -az cognitiveservices account keys list --name semantic-video-openai \ - --resource-group semantic-video-search | jq -r .key1 -``` - -#### OpenAI 임베딩 모델 배포 - -Azure Cloud Shell에서 다음 명령을 실행하여 OpenAI 임베딩 모델을 배포합니다. - -```shell -az cognitiveservices account deployment create \ - --name semantic-video-openai \ - --resource-group semantic-video-search \ - --deployment-name text-embedding-ada-002 \ - --model-name text-embedding-ada-002 \ - --model-version "2" \ - --model-format OpenAI \ - --sku-capacity 100 --sku-name "Standard" -``` - -## 해답 - -GitHub Codespaces에서 [해답 노트북](../../python/oai-solution.ipynb?WT.mc_id=academic-105485-koreyst)을 열고 Jupyter Notebook의 지침을 따르세요. - -노트북을 실행할 때, 쿼리를 입력하라는 메시지가 표시됩니다. 입력 상자는 다음과 같이 보일 것입니다: - -![사용자가 쿼리를 입력하는 입력 상자](../../images/notebook-search.png?WT.mc_id=academic-105485-koreyst) - -## 수고하셨습니다. 학습을 계속하세요! - -이 레슨을 완료한 후, [Generative AI 학습 컬렉션](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst)을 확인하여 Generative AI 지식을 더욱 향상시킬 수 있습니다! - -Lesson 9로 이동하여 [이미지 생성 애플리케이션 구축하기](../../../09-building-image-applications/translations/ko/README.md?WT.mc_id=academic-105485-koreyst)을 살펴보세요! diff --git a/08-building-search-applications/translations/pl/README.md b/08-building-search-applications/translations/pl/README.md deleted file mode 100644 index 05719a51eb..0000000000 --- a/08-building-search-applications/translations/pl/README.md +++ /dev/null @@ -1,163 +0,0 @@ -# Budowanie Aplikacji Wyszukiwania - -[![Wprowadzenie do Generatywnej SI i Dużych Modeli Językowych](../../images/08-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson8-gh?WT.mc_id=academic-105485-koreyst) - -> > _Kliknij powyższy obraz, aby obejrzeć wideo tej lekcji_ - -LLM-y to nie tylko chatboty i generowanie tekstu. Możliwe jest również budowanie aplikacji wyszukiwania przy użyciu Embeddingów. Embeddingi to numeryczne reprezentacje danych, znane również jako wektory, i mogą być używane do semantycznego wyszukiwania danych. - -W tej lekcji zbudujesz aplikację wyszukiwania dla naszego startupu edukacyjnego. Nasz startup to organizacja non-profit, która zapewnia darmową edukację uczniom w krajach rozwijających się. Nasz startup posiada dużą liczbę filmów na YouTube, których uczniowie mogą używać do nauki o SI. Nasz startup chce zbudować aplikację wyszukiwania, która pozwoli uczniom wyszukiwać filmy na YouTube wpisując pytanie. - -Na przykład, uczeń może wpisać 'Czym są notebooki Jupyter?' lub 'Czym jest Azure ML', a aplikacja wyszukiwania zwróci listę filmów na YouTube, które są istotne dla pytania, a co więcej, aplikacja wyszukiwania zwróci link do miejsca w filmie, gdzie znajduje się odpowiedź na pytanie. - -## Wprowadzenie - -W tej lekcji omówimy: - -- Wyszukiwanie semantyczne vs wyszukiwanie po słowach kluczowych. -- Czym są osadzenia tekstu (Text Embeddings). -- Tworzenie indeksu osadzeń tekstu. -- Przeszukiwanie indeksu osadzeń tekstu. - -## Cele nauki - -Po ukończeniu tej lekcji będziesz w stanie: - -- Rozróżnić wyszukiwanie semantyczne i wyszukiwanie po słowach kluczowych. -- Wyjaśnić, czym są osadzenia tekstu. -- Stworzyć aplikację wykorzystującą osadzenia do wyszukiwania danych. - -## Dlaczego budować aplikację wyszukiwania? - -Tworzenie aplikacji wyszukiwania pomoże Ci zrozumieć, jak używać osadzeń do wyszukiwania danych. Nauczysz się również, jak zbudować aplikację wyszukiwania, która może być używana przez uczniów do szybkiego znajdowania informacji. - -Lekcja zawiera indeks osadzeń transkrypcji z YouTube dla kanału Microsoft [AI Show](https://www.youtube.com/playlist?list=PLlrxD0HtieHi0mwteKBOfEeOYf0LJU4O1) na YouTube. AI Show to kanał YouTube, który uczy Cię o SI i uczeniu maszynowym. Indeks osadzeń zawiera osadzenia dla każdej transkrypcji z YouTube do października 2023 roku. Użyjesz indeksu osadzeń do zbudowania aplikacji wyszukiwania dla naszego startupu. Aplikacja wyszukiwania zwraca link do miejsca w filmie, gdzie znajduje się odpowiedź na pytanie. Jest to świetny sposób dla uczniów, aby szybko znaleźć potrzebne informacje. - -Poniżej znajduje się przykład zapytania semantycznego dla pytania 'czy można używać RStudio z Azure ML?'. Spójrz na adres URL YouTube, zobaczysz, że adres URL zawiera znacznik czasu, który przenosi Cię do miejsca w filmie, gdzie znajduje się odpowiedź na pytanie. - -![Zapytanie semantyczne dla pytania "czy można używać RStudio z Azure ML"](../../images/query-results.png?WT.mc_id=academic-105485-koreyst) - -## Czym jest wyszukiwanie semantyczne? - -Teraz możesz się zastanawiać, czym jest wyszukiwanie semantyczne? Wyszukiwanie semantyczne to technika wyszukiwania, która wykorzystuje semantykę, czyli znaczenie, słów w zapytaniu, aby zwrócić istotne wyniki. - -Oto przykład wyszukiwania semantycznego. Powiedzmy, że szukasz samochodu, możesz wyszukać 'samochód moich marzeń', wyszukiwanie semantyczne rozumie, że nie `marzysz` o samochodzie, ale raczej szukasz swojego `idealnego` samochodu. Wyszukiwanie semantyczne rozumie Twoją intencję i zwraca istotne wyniki. Alternatywą jest `wyszukiwanie po słowach kluczowych`, które dosłownie szukałoby marzeń o samochodach i często zwraca nieistotne wyniki. - -## Czym są osadzenia tekstu? - -[Osadzenia tekstu](https://en.wikipedia.org/wiki/Word_embedding?WT.mc_id=academic-105485-koreyst) to technika reprezentacji tekstu używana w [przetwarzaniu języka naturalnego](https://en.wikipedia.org/wiki/Natural_language_processing?WT.mc_id=academic-105485-koreyst). Osadzenia tekstu to semantyczne numeryczne reprezentacje tekstu. Osadzenia są używane do reprezentowania danych w sposób, który jest łatwy do zrozumienia dla maszyny. Istnieje wiele modeli do budowania osadzeń tekstu, w tej lekcji skupimy się na generowaniu osadzeń przy użyciu modelu osadzeń OpenAI. - -Oto przykład, wyobraź sobie, że następujący tekst znajduje się w transkrypcji z jednego z odcinków kanału AI Show na YouTube: - -```text -Dzisiaj dowiemy się o Azure Machine Learning. -``` - -Przekazalibyśmy tekst do API osadzeń OpenAI, a on zwróciłby następujące osadzenie składające się z 1536 liczb, czyli wektor. Każda liczba w wektorze reprezentuje inny aspekt tekstu. Dla zwięzłości, oto pierwsze 10 liczb w wektorze. - -```python -[-0.006655829958617687, 0.0026128944009542465, 0.008792596869170666, -0.02446001023054123, -0.008540431968867779, 0.022071078419685364, -0.010703742504119873, 0.003311325330287218, -0.011632772162556648, -0.02187200076878071, ...] -``` - -## Jak tworzony jest indeks osadzeń? - -Indeks osadzeń dla tej lekcji został utworzony za pomocą serii skryptów Pythona. Znajdziesz skrypty wraz z instrukcjami w pliku [README](../../scripts/README.md?WT.mc_id=academic-105485-koreyst) w folderze 'scripts` dla tej lekcji. Nie musisz uruchamiać tych skryptów, aby ukończyć tę lekcję, ponieważ indeks osadzeń jest dostarczony dla Ciebie. - -Skrypty wykonują następujące operacje: - -1. Pobierana jest transkrypcja dla każdego filmu na YouTube z playlisty [AI Show](https://www.youtube.com/playlist?list=PLlrxD0HtieHi0mwteKBOfEeOYf0LJU4O1). -2. Przy użyciu [funkcji OpenAI](https://learn.microsoft.com/azure/ai-services/openai/how-to/function-calling?WT.mc_id=academic-105485-koreyst), podejmowana jest próba wyodrębnienia nazwiska prelegenta z pierwszych 3 minut transkrypcji YouTube. Nazwisko prelegenta dla każdego filmu jest przechowywane w indeksie osadzeń o nazwie `embedding_index_3m.json`. -3. Tekst transkrypcji jest następnie dzielony na **3-minutowe segmenty tekstu**. Segment zawiera około 20 słów nakładających się z następnego segmentu, aby upewnić się, że osadzenie dla segmentu nie jest ucięte i aby zapewnić lepszy kontekst wyszukiwania. -4. Każdy segment tekstu jest następnie przekazywany do API czatu OpenAI w celu podsumowania tekstu w 60 słowach. Podsumowanie jest również przechowywane w indeksie osadzeń `embedding_index_3m.json`. -5. Wreszcie, segment tekstu jest przekazywany do API osadzeń OpenAI. API osadzeń zwraca wektor 1536 liczb, które reprezentują semantyczne znaczenie segmentu. Segment wraz z wektorem osadzenia OpenAI jest przechowywany w indeksie osadzeń `embedding_index_3m.json`. - -### Bazy danych wektorowych - -Dla uproszczenia lekcji, indeks osadzeń jest przechowywany w pliku JSON o nazwie `embedding_index_3m.json` i ładowany do DataFrame Pandas. Jednak w produkcji indeks osadzeń byłby przechowywany w bazie danych wektorowych, takiej jak [Azure Cognitive Search](https://learn.microsoft.com/training/modules/improve-search-results-vector-search?WT.mc_id=academic-105485-koreyst), [Redis](https://cookbook.openai.com/examples/vector_databases/redis/readme?WT.mc_id=academic-105485-koreyst), [Pinecone](https://cookbook.openai.com/examples/vector_databases/pinecone/readme?WT.mc_id=academic-105485-koreyst), [Weaviate](https://cookbook.openai.com/examples/vector_databases/weaviate/readme?WT.mc_id=academic-105485-koreyst), żeby wymienić tylko kilka. - -## Zrozumienie podobieństwa cosinusowego - -Dowiedzieliśmy się o osadzeniach tekstu, następnym krokiem jest nauczenie się, jak używać osadzeń tekstu do wyszukiwania danych, a w szczególności znajdowania najbardziej podobnych osadzeń do danego zapytania przy użyciu podobieństwa cosinusowego. - -### Czym jest podobieństwo cosinusowe? - -Podobieństwo cosinusowe to miara podobieństwa między dwoma wektorami, usłyszysz też o tym jako o `wyszukiwaniu najbliższego sąsiada`. Aby wykonać wyszukiwanie podobieństwa cosinusowego, musisz _zwektoryzować_ tekst _zapytania_ za pomocą API osadzeń OpenAI. Następnie obliczyć _podobieństwo cosinusowe_ między wektorem zapytania a każdym wektorem w indeksie osadzeń. Pamiętaj, indeks osadzeń ma wektor dla każdego segmentu tekstu transkrypcji YouTube. Na koniec posortuj wyniki według podobieństwa cosinusowego, a segmenty tekstu z najwyższym podobieństwem cosinusowym są najbardziej podobne do zapytania. - -Z matematycznego punktu widzenia, podobieństwo cosinusowe mierzy cosinus kąta między dwoma wektorami rzutowanymi w wielowymiarowej przestrzeni. Ten pomiar jest korzystny, ponieważ jeśli dwa dokumenty są oddalone od siebie w odległości euklidesowej ze względu na rozmiar, nadal mogą mieć mniejszy kąt między nimi, a zatem wyższe podobieństwo cosinusowe. Aby uzyskać więcej informacji o równaniach podobieństwa cosinusowego, zobacz [Podobieństwo cosinusowe](https://en.wikipedia.org/wiki/Cosine_similarity?WT.mc_id=academic-105485-koreyst). - -## Budowanie pierwszej aplikacji wyszukiwania - -Następnie dowiemy się, jak zbudować aplikację wyszukiwania przy użyciu osadzeń. Aplikacja wyszukiwania pozwoli uczniom wyszukiwać film wpisując pytanie. Aplikacja wyszukiwania zwróci listę filmów, które są istotne dla pytania. Aplikacja wyszukiwania zwróci również link do miejsca w filmie, gdzie znajduje się odpowiedź na pytanie. - -To rozwiązanie zostało zbudowane i przetestowane na Windows 11, macOS i Ubuntu 22.04 przy użyciu Pythona 3.10 lub nowszego. Możesz pobrać Pythona z [python.org](https://www.python.org/downloads/?WT.mc_id=academic-105485-koreyst). - -## Zadanie - budowanie aplikacji wyszukiwania, aby pomóc uczniom - -Przedstawiliśmy nasz startup na początku tej lekcji. Teraz nadszedł czas, aby umożliwić uczniom zbudowanie aplikacji wyszukiwania dla ich ocen. - -W tym zadaniu utworzysz usługi Azure OpenAI, które będą używane do zbudowania aplikacji wyszukiwania. Utworzysz następujące usługi Azure OpenAI. Będziesz potrzebować subskrypcji Azure, aby ukończyć to zadanie. - -### Uruchom Azure Cloud Shell - -1. Zaloguj się do [portalu Azure](https://portal.azure.com/?WT.mc_id=academic-105485-koreyst). -2. Wybierz ikonę Cloud Shell w prawym górnym rogu portalu Azure. -3. Wybierz **Bash** jako typ środowiska. - -#### Utwórz grupę zasobów - -> Dla tych instrukcji używamy grupy zasobów o nazwie "semantic-video-search" w regionie East US. -> Możesz zmienić nazwę grupy zasobów, ale przy zmianie lokalizacji zasobów -> sprawdź [tabelę dostępności modeli](https://aka.ms/oai/models?WT.mc_id=academic-105485-koreyst). - -```shell -az group create --name semantic-video-search --location eastus -``` - -#### Utwórz zasób Azure OpenAI Service - -Z Azure Cloud Shell uruchom następujące polecenie, aby utworzyć zasób Azure OpenAI Service. - -```shell -az cognitiveservices account create --name semantic-video-openai --resource-group semantic-video-search \ - --location eastus --kind OpenAI --sku s0 -``` - -#### Pobierz endpoint i klucze do użycia w tej aplikacji - -Z Azure Cloud Shell uruchom następujące polecenia, aby uzyskać endpoint i klucze dla zasobu Azure OpenAI Service. - -```shell -az cognitiveservices account show --name semantic-video-openai \ - --resource-group semantic-video-search | jq -r .properties.endpoint -az cognitiveservices account keys list --name semantic-video-openai \ - --resource-group semantic-video-search | jq -r .key1 -``` - -#### Wdróż model osadzeń OpenAI - -Z Azure Cloud Shell uruchom następujące polecenie, aby wdrożyć model osadzeń OpenAI. - -```shell -az cognitiveservices account deployment create \ - --name semantic-video-openai \ - --resource-group semantic-video-search \ - --deployment-name text-embedding-ada-002 \ - --model-name text-embedding-ada-002 \ - --model-version "2" \ - --model-format OpenAI \ - --sku-capacity 100 --sku-name "Standard" -``` - -## Rozwiązanie - -Otwórz [notatnik z rozwiązaniem](../../python/aoai-solution.ipynb?WT.mc_id=academic-105485-koreyst) w GitHub Codespaces i postępuj zgodnie z instrukcjami w Jupyter Notebook. - -Gdy uruchomisz notatnik, zostaniesz poproszony o wprowadzenie zapytania. Pole wprowadzania będzie wyglądać tak: - -![Pole wprowadzania dla użytkownika do wprowadzenia zapytania](../../images/notebook-search.png?WT.mc_id=academic-105485-koreyst) - -## Świetna Praca! Kontynuuj Naukę - -Po ukończeniu tej lekcji, sprawdź naszą [kolekcję materiałów edukacyjnych na temat Generatywnej SI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst), aby nadal podnosić swoją wiedzę o Generatywnej SI! - -Przejdź do Lekcji 9, gdzie przyjrzymy się, jak [budować aplikacje generujące obrazy](../../../09-building-image-applications/translations/pl/README.md?WT.mc_id=academic-105485-koreyst)! diff --git a/08-building-search-applications/translations/pt-br/README.md b/08-building-search-applications/translations/pt-br/README.md deleted file mode 100644 index adb29f3713..0000000000 --- a/08-building-search-applications/translations/pt-br/README.md +++ /dev/null @@ -1,167 +0,0 @@ -# Criando Aplicações de Busca - -[![Introduction to Generative AI and Large Language Models](../../images/08-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson8-gh?WT.mc_id=academic-105485-koreyst) - -Há muito mais nas LLMs do que chatbots e geração de texto. Também é possível criar aplicações de busca usando `Embeddings`. `Embeddings` são representações numéricas de dados, também conhecidas como vetores, e podem ser usados para busca semântica de dados. - -Nesta lição, você vai criar uma aplicação de busca para a nossa startup de educação. Nossa startup é uma organização sem fins lucrativos que fornece educação gratuita para estudantes em países em desenvolvimento. Nossa startup possui uma grande quantidade de vídeos no YouTube que os estudantes podem usar para aprender sobre IA. Nossa startup deseja criar uma aplicação de busca que permita aos estudantes procurar por um vídeo no YouTube digitando uma pergunta. - -Por exemplo, um estudante pode digitar: 'O que é Jupyter Notebooks?' ou 'O que é Azure ML' e a aplicação de busca retornará uma lista de vídeos do YouTube relevantes para a pergunta. E melhor ainda, a aplicação de busca retornará um link para o local no vídeo onde está localizada a resposta para a pergunta. - -## Introdução - -Nesta lição, vamos cobrir: - -- Busca semântica vs busca por palavras-chave. -- O que são Embeddings de Texto. -- Criando um Índice de Embeddings de Texto. -- Buscando em um Índice de Embeddings de Texto. - -## Metas de Aprendizado - -Após completar esta lição, você será capaz de: - -- Diferenciar entre busca semântica e busca por palavras-chave. -- Explicar o que são Embeddings de Texto. -- Criar uma aplicação usando Embeddings para buscar dados. - -## Por que criar uma aplicação de busca? - -Criar uma aplicação de busca ajudará você a entender como usar Embeddings para buscar dados. Você também aprenderá como construir uma aplicação de busca que pode ser usada por estudantes para encontrar informações rapidamente. - -A lição inclui um Índice de Embeddings dos transcritos do YouTube para o canal [AI Show](https://www.youtube.com/playlist?list=PLlrxD0HtieHi0mwteKBOfEeOYf0LJU4O1) da Microsoft no YouTube. O AI Show é um canal do YouTube que ensina sobre IA e aprendizado de máquina. O Índice de Embeddings contém os Embeddings para cada um dos transcritos do YouTube até outubro de 2023. Você usará o Índice de Embeddings para construir uma aplicação de busca para nossa startup. A aplicação de busca retorna um link para o local no vídeo onde está localizada a resposta para a pergunta. Esta é uma ótima maneira para os estudantes encontrarem rapidamente as informações de que precisam. - -Abaixo nós temos um exemplo de uma consulta semântica para a pergunta: 'É possível usar o RStudio com o Azure ML?'. Confira a URL do YouTube, você verá que a URL contém um carimbo de data/hora que o leva para o local no vídeo onde está localizada - -![Semantic query for the question "can you use rstudio with Azure ML"](../../images/query-results.png?WT.mc_id=academic-105485-koreyst) - -## O que é busca semântica? - -Agora você pode estar se perguntando, o que é busca semântica? A busca semântica é uma técnica de busca que utiliza a semântica, ou significado, das palavras em uma consulta para retornar resultados relevantes. - -Aqui está um exemplo de busca semântica. Digamos que você esteja procurando comprar um carro, você pode buscar por 'meu carro dos sonhos', a busca semântica entende que você não está `sonhando` com um carro, mas sim procurando comprar o seu carro `ideal`. A busca semântica compreende sua intenção e retorna resultados relevantes. A alternativa é a `busca por palavras-chave`, que literalmente procuraria sonhos sobre carros e frequentemente retornaria resultados irrelevantes. - -## O que são Embeddings de Texto? - -[Embeddings de texto](https://en.wikipedia.org/wiki/Word_embedding?WT.mc_id=academic-105485-koreyst) são uma técnica de representação de texto usada em [processamento de linguagem natural](https://en.wikipedia.org/wiki/Natural_language_processing?WT.mc_id=academic-105485-koreyst). Embeddings de texto são representações numéricas semânticas de texto. Embeddings são usados para representar dados de uma maneira fácil para uma máquina entender. Existem muitos modelos para construir embeddings de texto, nesta lição, vamos nos concentrar em gerar embeddings usando o Modelo de Embedding da OpenAI. - -Aqui está um exemplo, imagine que o seguinte texto está em um transcrição de um dos episódios no canal do YouTube AI Show: - -```text -Today we are going to learn about Azure Machine Learning. -``` - -Nós passaríamos o texto para a API de Embedding da OpenAI e ela retornaria o seguinte embedding consistindo de 1536 números, também conhecido como um vetor. Cada número no vetor representa um aspecto diferente do texto. Para brevidade, aqui estão os primeiros 10 números do vetor. - -```python -[-0.006655829958617687, 0.0026128944009542465, 0.008792596869170666, -0.02446001023054123, -0.008540431968867779, 0.022071078419685364, -0.010703742504119873, 0.003311325330287218, -0.011632772162556648, -0.02187200076878071, ...] -``` - -## Como o Índice de Embeddings é criado? - -O Índice de Embeddings para esta lição foi criado com uma série de scripts Python. Você encontrará os scripts juntamente com as instruções no [README](../../scripts/README.md?WT.mc_id=academic-105485-koreyst) na pasta 'scripts' para esta lição. Você não precisa executar esses scripts para completar esta lição, pois o Índice de Embeddings é fornecido para você. - -Os scripts executam as seguintes operações: - -1. A transcrição de cada vídeo do YouTube na lista de reprodução [AI Show](https://www.youtube.com/playlist?list=PLlrxD0HtieHi0mwteKBOfEeOYf0LJU4O1) é baixada. - -2. Usando [OpenAI Functions](https://learn.microsoft.com/azure/ai-services/openai/how-to/function-calling?WT.mc_id=academic-105485-koreyst), uma tentativa é feita para extrair o nome do orador dos primeiros 3 minutos do transcrição do YouTube. O nome do orador para cada vídeo é armazenado no Índice de Embeddings chamado `embedding_index_3m.json`. - -3. O texto da transcrição é então dividido em **segmentos de texto de 3 minutos**. O segmento inclui cerca de 20 palavras sobrepostas do próximo segmento para garantir que o Embedding para o segmento não seja cortado e para fornecer um melhor contexto de busca. - -4. Cada segmento de texto é então passado para a API de Chat da OpenAI para resumir o texto em 60 palavras. O resumo também é armazenado no Índice de Embeddings `embedding_index_3m.json`. - -5. Finalmente, o texto do segmento é passado para a API de Embedding da OpenAI. A API de Embedding retorna um vetor de 1536 números que representam o significado semântico do segmento. O segmento juntamente com o vetor de Embedding da OpenAI é armazenado em um Índice de Embeddings `embedding_index_3m.json`. - -### Banco de Dados Vetorial - -Para simplificar a lição, o Índice de Embeddings é armazenado em um arquivo JSON chamado `embedding_index_3m.json` e carregado em um DataFrame Pandas. No entanto, em produção, o Índice de Embeddings seria armazenado em um banco de dados vetorial como [Azure Cognitive Search](https://learn.microsoft.com/training/modules/improve-search-results-vector-search?WT.mc_id=academic-105485-koreyst), [Redis](https://cookbook.openai.com/examples/vector_databases/redis/readme?WT.mc_id=academic-105485-koreyst), [Pinecone](https://cookbook.openai.com/examples/vector_databases/pinecone/readme?WT.mc_id=academic-105485-koreyst), [Weaviate](https://cookbook.openai.com/examples/vector_databases/weaviate/readme?WT.mc_id=academic-105485-koreyst), para citar apenas alguns. - -## Compreendendo a similaridade de cosseno - -Aprendemos sobre embeddings de texto, o próximo passo é aprender como usar embeddings de texto para buscar dados e, em particular, encontrar os embeddings mais semelhantes a uma consulta dada usando a similaridade de cosseno. - -### O que é similaridade de cosseno? - -A similaridade de cosseno é uma medida de similaridade entre dois vetores, você também ouvirá isso referido como `busca por vizinho mais próximo`. Para realizar uma busca por similaridade de cosseno, é necessário _vetorizar_ o texto da _consulta_ usando a API de Embedding da OpenAI. Em seguida, calcular a _similaridade de cosseno_ entre o vetor de consulta e cada vetor no Índice de Embeddings. Lembre-se, o Índice de Embeddings tem um vetor para cada segmento de texto do transcrição do YouTube. Finalmente, ordene os resultados por similaridade de cosseno, e os segmentos de texto com a maior similaridade de cosseno são os mais semelhantes à consulta. - -De uma perspectiva matemática, a similaridade de cosseno mede o cosseno do ângulo entre dois vetores projetados em um espaço multidimensional. Essa medida é benéfica, porque se dois documentos estão distantes pela distância euclidiana devido ao tamanho, eles ainda podem ter um ângulo menor entre eles e, portanto, uma maior similaridade de cosseno. Para mais informações sobre as equações de similaridade de cosseno, consulte [Similaridade de cosseno](https://en.wikipedia.org/wiki/Cosine_similarity?WT.mc_id=academic-105485-koreyst). - -## Criando sua primeira aplicação de busca - -A seguir, vamos aprender como construir uma aplicação de busca usando Embeddings. A aplicação de busca permitirá que os estudantes procurem por um vídeo digitando uma pergunta. A aplicação de busca retornará uma lista de vídeos relevantes para a pergunta. A aplicação de busca também retornará um link para o local no vídeo onde está localizada a resposta para a pergunta. - -Esta solução foi construída e testada no Windows 11, macOS e Ubuntu 22.04 usando Python 3.10 ou posterior. Você pode baixar o Python em [python.org](https://www.python.org/downloads/?WT.mc_id=academic-105485-koreyst). - -## Assignment - building a search application, to enable students - -## Tarefa - criando uma aplicação de busca para habilitar os estudantes - -Nós introduzimos nossa startup no início desta lição. Agora é hora de habilitar os estudantes para criar uma aplicação de busca para suas avaliações. - -Nessa tarefa, você criará os Serviços Azure OpenAI que serão usados para construir a aplicação de busca. Você criará os seguintes Serviços Azure OpenAI. Você precisará de uma assinatura Azure para completar esta tarefa. - -### Inicie o Azure Cloud Shell - -1. Entre no [portal Azure](https://portal.azure.com/?WT.mc_id=academic-105485-koreyst). -2. Selecione o ícone do Cloud Shell no canto superior direito do portal Azure. -3. Selecione **Bash** para o tipo de ambiente. - -#### Crie um grupo de recursos - -> Para estas instruções, estamos usando o grupo de recursos chamado "semantic-video-search" no East US. -> Você pode alterar o nome do grupo de recursos, mas ao alterar o local dos recursos, -> verifique a [tabela de disponibilidade do modelo](https://aka.ms/oai/models?WT.mc_id=academic-105485-koreyst). - -```shell -az group create --name semantic-video-search --location eastus -``` - -#### Crie um recurso do Serviço do Azure OpenAI - -No Azure Cloud Shell, execute o seguinte comando para criar um recurso do Serviço Azure OpenAI. - -```shell -az cognitiveservices account create --name semantic-video-openai --resource-group semantic-video-search \ - --location eastus --kind OpenAI --sku s0 -``` - -#### Obtenha o endpoint e as chaves para uso nesta aplicação - -No Azure Cloud Shell, execute os seguintes comandos para obter o endpoint e as chaves para o recurso do Serviço Azure OpenAI. - -```shell -az cognitiveservices account show --name semantic-video-openai \ - --resource-group semantic-video-search | jq -r .properties.endpoint -az cognitiveservices account keys list --name semantic-video-openai \ - --resource-group semantic-video-search | jq -r .key1 -``` - -#### Implemente o modelo de Embedding da OpenAI - -No Azure Cloud Shell, execute o seguinte comando para implantar o modelo de Embedding da OpenAI. - -```shell -az cognitiveservices account deployment create \ - --name semantic-video-openai \ - --resource-group semantic-video-search \ - --deployment-name text-embedding-ada-002 \ - --model-name text-embedding-ada-002 \ - --model-version "2" \ - --model-format OpenAI \ - --sku-capacity 100 --sku-name "Standard" -``` - -## Solução - -Abre a [notebook de solução](../../python/aoai-solution.ipynb?WT.mc_id=academic-105485-koreyst) no GitHub Codespaces e siga as instruções no Jupyter Notebook. - -Quando você executar o notebook, será solicitado a inserir uma consulta. A caixa de entrada será assim: - -![Input box for the user to input a query](../../images/notebook-search.png?WT.mc_id=academic-105485-koreyst) - -## Excelente trabalho! Continue aprendendo! - -Após completar esta lição, confira nossa [coleção de aprendizado de IA generativa](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) para continuar a aprimorar seu conhecimento em IA generativa! - -Aqui vamos, para a Lição 9, onde veremos como [criar aplicações de geração de imagens](../../../09-building-image-applications/translations/pt-br/README.md?WT.mc_id=academic-105485-koreyst)! diff --git a/08-building-search-applications/translations/tw/README.md b/08-building-search-applications/translations/tw/README.md deleted file mode 100644 index 7392fbebd1..0000000000 --- a/08-building-search-applications/translations/tw/README.md +++ /dev/null @@ -1,164 +0,0 @@ -# 建構搜尋應用程式 - -[![生成式 AI 和大型語言模型介紹](../../images/08-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson8-gh?WT.mc_id=academic-105485-koreyst) - -> > _點擊上方圖片觀看本課程的影片_ - -還有比聊天機器人和文本生成更多的LLMs。也可以使用嵌入來建構搜尋應用程式。嵌入是數據的數值表示,也稱為向量,可以用於數據的語義搜尋。 - -在本課程中,你將為我們的教育新創公司建構一個搜尋應用程式。我們的新創公司是一個非營利組織,為發展中國家的學生提供免費教育。我們的新創公司擁有大量的 YouTube 影片,學生可以用來學習 AI。我們的新創公司希望建構一個搜尋應用程式,讓學生可以通過輸入問題來搜尋 YouTube 影片。 - -例如,學生可能會輸入「什麼是 Jupyter Notebooks?」或「什麼是 Azure ML」,然後搜尋應用程式會返回與問題相關的 YouTube 影片列表,更好的是,搜尋應用程式會返回影片中回答問題所在位置的連結。 - -## 簡介 - -在本課程中,我們將涵蓋: - -- 語義 vs 關鍵字搜尋。 -- 什麼是文本嵌入。 -- 建立文本嵌入索引。 -- 搜尋文本嵌入索引。 - -## 學習目標 - -完成本課程後,你將能夠: - -- 說明語義搜尋和關鍵字搜尋之間的區別。 -- 解釋什麼是文本嵌入。 -- 使用嵌入建立應用程式來搜尋資料。 - -## 為什麼要建構搜尋應用程式? - -建立搜尋應用程式將幫助你了解如何使用嵌入來搜尋資料。你還將學習如何建構一個學生可以用來快速找到資訊的搜尋應用程式。 - -這課程包括 Microsoft [AI Show](https://www.youtube.com/playlist?list=PLlrxD0HtieHi0mwteKBOfEeOYf0LJU4O1) YouTube 頻道的 YouTube 文字記錄的嵌入索引。AI Show 是一個教你關於 AI 和機器學習的 YouTube 頻道。嵌入索引包含截至 2023 年 10 月的每個 YouTube 文字記錄的嵌入。你將使用嵌入索引為我們的初創公司建構一個搜尋應用程式。搜尋應用程式會返回一個連結,指向影片中回答問題的位置。這是一個讓學生快速找到所需資訊的好方法。 - -以下是一個針對問題「你可以將 rstudio 與 azure ml 一起使用嗎?」的語義查詢範例。查看 YouTube 連結, 你會看到連結包含一個時間戳記, 它會帶你到影片中回答問題的位置。 - -![語義查詢問題 "can you use rstudio with Azure ML"](../../images/query-results.png?WT.mc_id=academic-105485-koreyst) - -## 什麼是語義搜尋? - -現在你可能會想知道,什麼是語義搜尋?語義搜尋是一種搜尋技術,使用查詢中單詞的語義或意義來返回相關結果。 - -這裡是一個語義搜尋的範例。假設你正在尋找購買一輛車,你可能會搜尋「我的夢想車」,語義搜尋理解你不是在「夢想」一輛車,而是你正在尋找購買你的「理想」車。語義搜尋理解你的意圖並返回相關的結果。另一種方法是「關鍵字搜尋」,它會字面上搜尋關於車的夢想,並且經常返回不相關的結果。 - -## 什麼是文本嵌入? - -[文本嵌入](https://en.wikipedia.org/wiki/Word_embedding?WT.mc_id=academic-105485-koreyst) 是一種用於[自然語言處理](https://en.wikipedia.org/wiki/Natural_language_processing?WT.mc_id=academic-105485-koreyst)的文本表示技術。文本嵌入是文本的語義數值表示。嵌入用於以機器易於理解的方式表示數據。有許多建構文本嵌入的模型,在本課中,我們將重點放在使用 OpenAI 嵌入模型生成嵌入。 - -以下是一個範例,假設以下文字來自 AI Show YouTube 頻道其中一集的文字記錄: - -```text -今天我們要學習 Azure 機器學習。 -``` - -我們會將文字傳遞給 OpenAI Embedding API,它會返回由 1536 個數字組成的嵌入(即向量)。向量中的每個數字代表文字的不同方面。為了簡潔起見,以下是向量中的前 10 個數字。 - -```python -[-0.006655829958617687, 0.0026128944009542465, 0.008792596869170666, -0.02446001023054123, -0.008540431968867779, 0.022071078419685364, -0.010703742504119873, 0.003311325330287218, -0.011632772162556648, -0.02187200076878071, ...] -``` - -## 嵌入索引是如何建立的? - -這節課的嵌入索引是用一系列的 Python 腳本建立的。你可以在這節課的 'scripts' 資料夾中的 [README](../../scripts/README.md?WT.mc_id=academic-105485-koreyst) 找到這些腳本和說明。你不需要執行這些腳本來完成這節課,因為已經為你提供了嵌入索引。 - -腳本執行以下操作: - -1. 每個 YouTube 影片在 [AI Show](https://www.youtube.com/playlist?list=PLlrxD0HtieHi0mwteKBOfEeOYf0LJU4O1) 播放清單中的逐字稿會被下載。 -2. 使用 [OpenAI 函式](https://learn.microsoft.com/azure/ai-services/openai/how-to/function-calling?WT.mc_id=academic-105485-koreyst),嘗試從 YouTube 逐字稿的前 3 分鐘中提取講者姓名。每個影片的講者姓名會儲存在名為 `embedding_index_3m.json` 的嵌入索引中。 -3. 然後將逐字稿文本分塊成 **3 分鐘文本片段**。每個片段包括大約 20 個與下一個片段重疊的單詞,以確保片段的嵌入不會被切斷,並提供更好的搜索上下文。 -4. 然後將每個文本片段傳遞給 OpenAI 聊天 API,將文本摘要為 60 個單詞。摘要也會儲存在嵌入索引 `embedding_index_3m.json` 中。 -5. 最後,將片段文本傳遞給 OpenAI 嵌入 API。嵌入 API 返回一個包含 1536 個數字的向量,代表該片段的語義意義。片段和 OpenAI 嵌入向量一起儲存在嵌入索引 `embedding_index_3m.json` 中。 - -### 向量資料庫 - -為了簡化課程,Embedding Index 被儲存在名為 `embedding_index_3m.json` 的 JSON 文件中,並加載到 Pandas DataFrame 中。然而,在生產環境中,Embedding Index 會被儲存在向量資料庫中,例如 [Azure Cognitive Search](https://learn.microsoft.com/training/modules/improve-search-results-vector-search?WT.mc_id=academic-105485-koreyst)、[Redis](https://cookbook.openai.com/examples/vector_databases/redis/readme?WT.mc_id=academic-105485-koreyst)、[Pinecone](https://cookbook.openai.com/examples/vector_databases/pinecone/readme?WT.mc_id=academic-105485-koreyst)、[Weaviate](https://cookbook.openai.com/examples/vector_databases/weaviate/readme?WT.mc_id=academic-105485-koreyst),僅舉幾例。 - -## 理解餘弦相似度 - -我們已經了解了文本嵌入,下一步是學習如何使用文本嵌入來搜索資料,特別是使用餘弦相似度找到與給定查詢最相似的嵌入。 - -### 什麼是餘弦相似度? - -餘弦相似度是衡量兩個向量之間相似度的一種方法,你也會聽到這被稱為`最近鄰搜尋`。要執行餘弦相似度搜尋,你需要使用 OpenAI 嵌入 API 對查詢文本進行_向量化_。然後計算查詢向量與嵌入索引中每個向量之間的_餘弦相似度_。請記住,嵌入索引對每個 YouTube 文字記錄片段都有一個向量。最後,按餘弦相似度對結果進行排序,餘弦相似度最高的文本片段與查詢最相似。 - -從數學的角度來看,餘弦相似度測量投射在多維空間中兩個向量之間的角度的餘弦值。這種測量是有益的,因為如果兩個文件由於大小而在歐幾里得距離上相距甚遠,它們之間仍然可能有較小的角度,因此具有較高的餘弦相似度。有關餘弦相似度方程的更多資訊,請參見[餘弦相似度](https://en.wikipedia.org/wiki/Cosine_similarity?WT.mc_id=academic-105485-koreyst)。 - -## 建構你的第一個搜尋應用程式 - -接下來,我們將學習如何使用 Embeddings 建構一個搜尋應用程式。該搜尋應用程式將允許學生通過輸入問題來搜尋影片。搜尋應用程式將返回與問題相關的影片列表。搜尋應用程式還將返回影片中回答問題的位置連結。 - -此解決方案是在 Windows 11、macOS 和 Ubuntu 22.04 上使用 Python 3.10 或更高版本建構和測試的。你可以從 [python.org](https://www.python.org/downloads/?WT.mc_id=academic-105485-koreyst) 下載 Python。 - -## 作業 - 建構搜尋應用程式,以便學生使用 - -我們在本課開始時介紹了我們的初創公司。現在是時候讓學生們建構一個搜尋應用程式來進行他們的評估。 - -在此作業中,你將建立 Azure OpenAI 服務來建構搜尋應用程式。你將建立以下的 Azure OpenAI 服務。你需要一個 Azure 訂閱來完成此作業。 - -### 啟動 Azure Cloud Shell - -1. 登入 [Azure 入口網站](https://portal.azure.com/?WT.mc_id=academic-105485-koreyst)。 -2. 選擇 Azure 入口網站右上角的 Cloud Shell 圖示。 -3. 選擇 **Bash** 作為環境類型。 - -#### 建立資源群組 - -> 對於這些指示,我們使用位於美國東部名為"semantic-video-search"的資源群組。 -> 你可以更改資源群組的名稱,但在更改資源的位置時, -> 請檢查[模型可用性表](https://aka.ms/oai/models?WT.mc_id=academic-105485-koreyst)。 - -```shell -az group create --name semantic-video-search --location eastus -``` - -#### 建立 Azure OpenAI Service 資源 - -從 Azure Cloud Shell 執行以下命令以建立 Azure OpenAI Service 資源。 - -```shell -az cognitiveservices account create --name semantic-video-openai --resource-group semantic-video-search \ - --location eastus --kind OpenAI --sku s0 -``` - -#### 取得此應用程式中使用的端點和金鑰 - -從 Azure Cloud Shell 執行以下命令以獲取 Azure OpenAI Service 資源的端點和金鑰。 - -```shell -az cognitiveservices account show --name semantic-video-openai \ - --resource-group semantic-video-search | jq -r .properties.endpoint -az cognitiveservices account keys list --name semantic-video-openai \ - --resource-group semantic-video-search | jq -r .key1 -``` - -#### 部署 OpenAI 嵌入模型 - -從 Azure Cloud Shell 執行以下命令來部署 OpenAI 嵌入模型。 - -```shell -az cognitiveservices account deployment create \ - --name semantic-video-openai \ - --resource-group semantic-video-search \ - --deployment-name text-embedding-ada-002 \ - --model-name text-embedding-ada-002 \ - --model-version "2" \ - --model-format OpenAI \ - --sku-capacity 100 --sku-name "Standard" -``` - -## 解決方案 - -打開 [解決方案筆記本](../../python/aoai-solution.ipynb?WT.mc_id=academic-105485-koreyst) 在 GitHub Codespaces 並按照 Jupyter Notebook 中的說明進行操作。 - -當你執行筆記本時,系統會提示你輸入查詢。輸入框看起來會像這樣: - -![使用者輸入查詢的輸入框](../../images/notebook-search.png?WT.mc_id=academic-105485-koreyst) - -## 很棒的工作!繼續學習 - -完成本課程後,請查看我們的[生成式 AI 學習集合](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst)以繼續提升您的生成式 AI 知識! - -前往第 9 課,我們將看看如何[建構影像生成應用程式](../../../09-building-image-applications/translations/tw/README.md?WT.mc_id=academic-105485-koreyst)! - diff --git a/09-building-image-applications/translations/cn/README.md b/09-building-image-applications/translations/cn/README.md deleted file mode 100644 index 1b42a9ce76..0000000000 --- a/09-building-image-applications/translations/cn/README.md +++ /dev/null @@ -1,469 +0,0 @@ -# 第九章:构建图像生成应用 - -[![Building Image Generation Applications](../../images/09-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson9-gh?WT.mc_id=academic-105485-koreyst) - -LLMs 不仅仅是文本生成。 还可以根据文本描述生成图像。 将图像作为一种模式在医疗科技、建筑、旅游、游戏开发等许多领域非常有用。 在本章中,我们将研究两种最流行的图像生成模型:DALL-E 和 Midjourney。 - -## 本章概述 - -在本章中,您将学习到: - -- 图像生成及其有用的原因。 -- DALL-E 和 Midjourney,它们是什么以及它们如何工作。 -- 如何构建图像生成应用程序。 - -## 学习目标 - -在完成本章的学习,您将能够: - -- 构建图像生成应用程序。 -- 使用元提示定义应用程序的边界。 -- 使用 DALL-E 和 Midjourney - -## 为什么要构建图像生成应用程序? - -图像生成应用程序是探索生成式人工智能功能的好方法。 它们可用于,例如: - -- **图像编辑和合成**。 您可以为各种用例生成图像,例如图像编辑和图像合成。 - -- **适用于多种行业**。 它们还可以用于为医疗科技、旅游、游戏开发等各种行业生成图像。 - -## 场景 Edu4All - -作为本章的一部分,我们将在本章中继续与 "Our Startup" Edu4All 合作。 学生将为他们的评估创建图像,具体图像由学生决定,但它们可以是他们自己的童话故事的插图,或者为他们的故事创建一个新角色,或者帮助他们形象化他们的想法和概念。 - -例如,如果 Edu4All 的学生在课堂上研究纪念碑,他们可以生成以下内容: - -![Edu4All startup, class on monuments, Eiffel Tower](../../images/startup.png?WT.mc_id=academic-105485-koreyst) - -提示词如下 - -> "Dog next to Eiffel Tower in early morning sunlight" - -## 什么是 DALL-E 和 Midjourney? - -[DALL-E](https://openai.com/dall-e-2) 和 [Midjourney](https://www.midjourney.com/?WT.mc_id=academic-105485-koreyst) 是两种最流行的图像生成模型,它们允许您使用提示词生成图像。 - -### DALL-E - -让我们从 DALL-E 开始,它是一种生成式 AI 模型,可以根据文本描述生成图像。 - -> [DALL-E 是 CLIP 和 diffused attention 两种模型的组合] -> (https://towardsdatascience.com/openais-dall-e-and-clip-101-a-brief-introduction-3a4367280d4e)。 - -- **CLIP**,是一种从图像和文本生成嵌入的模型,嵌入是数据的数字表示。 - -- **diffused attention**,是一种从嵌入生成图像的模型。 DALL-E 在图像和文本数据集上进行训练,可用于从文本描述生成图像。 例如,DALL-E 可用于生成戴帽子的猫或留着莫霍克发型的狗的图像。 - -### Midjourney - -Midjourney 的工作方式与 DALL-E 类似,它根据文本提示生成图像。 Midjourney 还可以用于使用“戴帽子的猫”或“莫西干狗”等提示来生成图像。 - -![图像由 Midjourney生成,机械鸽子](https://upload.wikimedia.org/wikipedia/commons/thumb/8/8c/Rupert_Breheny_mechanical_dove_eca144e7-476d-4976-821d-a49c408e4f36.png/440px-Rupert_Breheny_mechanical_dove_eca144e7-476d-4976-821d-a49c408e4f36.png?WT.mc_id=academic-105485-koreyst) - -_图片来源维基百科,图片由 Midjourney 生成_ - -## DALL-E 和 Midjourney 如何运作 - -首先,[DALL-E](https://arxiv.org/pdf/2102.12092.pdf?WT.mc_id=academic-105485-koreyst)。 DALL-E 是一种基于带有 _autoregressive transformer_ 的 transformer 架构的生成式人工智能模型。 - -“autoregressive transformer”定义了模型如何根据文本描述生成图像,它一次生成一个像素,然后使用生成的像素生成下一个像素。 经过神经网络中的多个层,直到图像完整。 - -通过此过程,DALL-E 可以控制其生成的图像中的属性、对象、特征等。 DALL-E 2 和 3 对生成的图像有更多的控制权, - -## 构建您的第一个图像生成应用程序 - -那么构建图像生成应用程序需要什么? 您需要以下 Library: - -- **python-dotenv**,强烈建议您使用此库将您的秘密保存在远离代码的 _.env_ 文件中。 -- **openai**,您将使用该库与 OpenAI API 进行交互。 -- **pillow**,用于在 Python 中处理图像。 -- **requests**,发出 HTTP 请求。 - -1. 创建一个包含以下内容的文件 _.env_: - - ```text - AZURE_OPENAI_ENDPOINT= - AZURE_OPENAI_API_KEY= - ``` - - 在 Azure 门户中的 "Keys and Endpoint" 部分中找到资源的此信息。 - -2. 将上述库收集到名为 _requirements.txt_ 的文件中,如下所示: - - ```text - python-dotenv - openai - pillow - requests - ``` - -3. 接下来,创建虚拟环境并安装库: - - ```bash - python3 -m venv venv - source venv/bin/activate - pip install -r requirements.txt - ``` - - 对于 Windows,使用以下命令创建并激活虚拟环境: - - ```bash - python3 -m venv venv - venv\Scripts\activate.bat - ``` - -4. 在名为 _app.py_ 的文件中添加以下代码: - - ```python - import openai - import os - import requests - from PIL import Image - import dotenv - - # import dotenv - dotenv.load_dotenv() - - # Get endpoint and key from environment variables - openai.api_base = os.environ['AZURE_OPENAI_ENDPOINT'] - openai.api_key = os.environ['AZURE_OPENAI_API_KEY'] - - # Assign the API version (DALL-E is currently supported for the 2023-06-01-preview API version only) - openai.api_version = '2023-06-01-preview' - openai.api_type = 'azure' - - - try: - # Create an image by using the image generation API - generation_response = openai.Image.create( - prompt='Bunny on horse, holding a lollipop, on a foggy meadow where it grows daffodils', # Enter your prompt text here - size='1024x1024', - n=2, - temperature=0, - ) - # Set the directory for the stored image - image_dir = os.path.join(os.curdir, 'images') - - # If the directory doesn't exist, create it - if not os.path.isdir(image_dir): - os.mkdir(image_dir) - - # Initialize the image path (note the filetype should be png) - image_path = os.path.join(image_dir, 'generated-image.png') - - # Retrieve the generated image - image_url = generation_response["data"][0]["url"] # extract image URL from response - generated_image = requests.get(image_url).content # download the image - with open(image_path, "wb") as image_file: - image_file.write(generated_image) - - # Display the image in the default image viewer - image = Image.open(image_path) - image.show() - - # catch exceptions - except openai.InvalidRequestError as err: - print(err) - - ``` - -我们来解释一下这段代码: - -- 首先,我们导入我们需要的 Library ,包括 OpenAI 、dotenv 、requests 和 Pillow。 - - ```python - import openai - import os - import requests - from PIL import Image - import dotenv - ``` - -- 接下来,我们从 _.env_ 文件加载环境变量。 - - ```python - # import dotenv - dotenv.load_dotenv() - ``` - -- 之后,我们设置 OpenAI API 的 endpoint 、 key 、版本和类型。 - - ```python - # Get endpoint and key from environment variables - openai.api_base = os.environ['AZURE_OPENAI_ENDPOINT'] - openai.api_key = os.environ['AZURE_OPENAI_API_KEY'] - - # add version and type, Azure specific - openai.api_version = '2023-06-01-preview' - openai.api_type = 'azure' - ``` - -- 接下来,我们生成图像: - - ```python - # Create an image by using the image generation API - generation_response = openai.Image.create( - prompt='Bunny on horse, holding a lollipop, on a foggy meadow where it grows daffodils', # Enter your prompt text here - size='1024x1024', - n=2, - temperature=0, - ) - ``` - - 上面的代码返回一个 JSON 对象,其中包含生成图像的 URL。 我们可以使用 URL 下载图像并将其保存到文件中。 - -- 最后,我们打开图像并使用标准图像查看器来显示它: - - ```python - image = Image.open(image_path) - image.show() - ``` - -### 有关生成图像的更多详细信息 - -让我们更详细地看一下生成图像的代码: - -```python -generation_response = openai.Image.create( - prompt='Bunny on horse, holding a lollipop, on a foggy meadow where it grows daffodils', # Enter your prompt text here - size='1024x1024', - n=2, - temperature=0, - ) -``` - -- **prompt**,是用于生成图像的文本提示。 在本例中,我们使用提示"Bunny on horse, holding a lollipop, on a foggy meadow where it grows daffodils"。 -- **size**,是生成的图像的尺寸。 在本例中,我们生成一个 1024x1024 像素的图像。 -- **n**,是生成的图像数量。 在本例中,我们生成两个图像。 -- **temperature**,是控制生成人工智能模型输出随机性的参数。 temperature 是 0 到 1 之间的值,其中 0 表示输出是确定性的,1 表示输出是随机的。 默认值为 0.7。 - -您可以对图像执行更多操作,我们将在下面中介绍这些操作。 - -## 图像生成的附加功能 - -到目前为止,您已经了解了如何使用 Python 中的几行代码来生成图像。 但是,您还可以对图像执行更多操作。 - -您还可以执行以下操作: - -- **执行编辑**。 通过为现有图像提供遮罩和提示,您可以更改图像。 例如,您可以向图像的一部分添加某些内容。 想象一下我们的兔子图像,您可以给兔子添加一顶帽子。 您将如何做到这一点,方法是提供图像、遮罩(标识要更改的区域的部分)和文本提示来说明应该做什么。 - - ```python - response = openai.Image.create_edit( - image=open("base_image.png", "rb"), - mask=open("mask.png", "rb"), - prompt="An image of a rabbit with a hat on its head.", - n=1, - size="1024x1024" - ) - image_url = response['data'][0]['url'] - ``` - - The base image would only contain the rabbit but the final image would have the hat on the rabbit. - - 基本图像仅包含兔子,但最终图像将在兔子上戴上帽子。 - -- **创建变体**。 这个想法是,你采用现有的图像并要求创建变体。 要创建变体,您需要提供图像和文本提示以及代码,如下所示: - - ```python - response = openai.Image.create_variation( - image=open("bunny-lollipop.png", "rb"), - n=1, - size="1024x1024" - ) - image_url = response['data'][0]['url'] - ``` - - > 注意,这仅在 OpenAI 上支持 - -## Temperature - -Temperature 是控制生成式 AI 模型输出随机性的参数。 Temperature 是 0 到 1 之间的值,其中 0 表示输出是确定性的,1 表示输出是随机的。 默认值为 0.7。 - -让我们通过运行此提示两次来看看 temperature 如何工作的示例: - -> Prompt : "Bunny on horse, holding a lollipop, on a foggy meadow where it grows daffodils" - -![Bunny on a horse holding a lollipop, version 1](../../images/v1-generated-image.png?WT.mc_id=academic-105485-koreyst) - -现在让我们运行相同的提示,我们不会两次获得相同的图像: - -![Generated image of bunny on horse](../../images/v2-generated-image.png?WT.mc_id=academic-105485-koreyst) - -正如您所看到的,图像相似,但不相同。 让我们尝试将 temperature 值更改为 0.1,看看会发生什么: - -```python - generation_response = openai.Image.create( - prompt='Bunny on horse, holding a lollipop, on a foggy meadow where it grows daffodils', # Enter your prompt text here - size='1024x1024', - n=2 - ) -``` - -### 改变 temperature - -因此,让我们尝试使响应更加确定。 我们可以从生成的两张图像中观察到,在第一张图像中,有一只兔子,在第二张图像中,有一匹马,因此图像差异很大。 - -因此,让我们更改代码并 temperature 设置为 0,如下所示: - -```python -generation_response = openai.Image.create( - prompt='Bunny on horse, holding a lollipop, on a foggy meadow where it grows daffodils', # Enter your prompt text here - size='1024x1024', - n=2, - temperature=0 - ) -``` - -现在,当您运行此代码时,您会得到这两个图像: - -- ![Temperature 0, v1](../../images/v1-temp-generated-image.png?WT.mc_id=academic-105485-koreyst) -- ![Temperature 0 , v2](../../images/v2-temp-generated-image.png?WT.mc_id=academic-105485-koreyst) - -在这里您可以清楚地看到图像彼此之间的相似程度。 - -## 如何使用元提示定义应用程序的边界 - -通过我们的演示,我们已经可以为客户生成图像。 然而,我们需要为我们的应用程序创建一些边界。 - -例如,我们不想生成不适合工作或不适合儿童的图像。 - -我们可以通过 _元提示_ 来做到这一点。 元提示是用于控制生成式 AI 模型的输出的文本提示。 例如,我们可以使用元提示来控制输出,并确保生成的图像对于工作来说是安全的,或者适合儿童。 - -### 它是如何工作的? - -现在,元提示如何工作? - -元提示是用于控制生成式 AI 模型的输出的文本提示,它们位于文本提示之前,用于控制模型的输出并嵌入到应用程序中以控制模型的输出。 将提示输入和元提示输入封装在单个文本提示中。 - -元提示的一个示例如下: - -````text -You are an assistant designer that creates images for children. - -The image needs to be safe for work and appropriate for children. - -The image needs to be in color. - -The image needs to be in landscape orientation. - -The image needs to be in a 16:9 aspect ratio. - -Do not consider any input from the following that is not safe for work or appropriate for children. - -(Input) - -```text - -现在,让我们看看如何在例子中使用元提示。 - -```python -disallow_list = "swords, violence, blood, gore, nudity, sexual content, adult content, adult themes, adult language, adult humor, adult jokes, adult situations, adult" - -meta_prompt =f"""You are an assistant designer that creates images for children. - -The image needs to be safe for work and appropriate for children. - -The image needs to be in color. - -The image needs to be in landscape orientation. - -The image needs to be in a 16:9 aspect ratio. - -Do not consider any input from the following that is not safe for work or appropriate for children. -{disallow_list} -""" - -prompt = f"{meta_prompt} -Create an image of a bunny on a horse, holding a lollipop" - -# TODO add request to generate image -```` - -从上面的提示中,您可以看到正在创建的所有图像如何考虑元提示。 - -## 作业 - 让我们帮助学生 - -我们在本课开始时介绍了 Edu4All。 现在是时候让学生生成用于评估的图像了。 - -学生们将为他们的评估创建包含纪念碑的图像,而纪念碑到底是什么由学生决定。 学生们被要求在这项任务中发挥他们的创造力,将这些纪念碑放置在不同的环境中。 - -## 解决方案 - -这是一种可能的解决方案: - -```python -import openai -import os -import requests -from PIL import Image -import dotenv - -# import dotenv -dotenv.load_dotenv() - -# Get endpoint and key from environment variables -openai.api_base = "" -openai.api_key = "" - -# Assign the API version (DALL-E is currently supported for the 2023-06-01-preview API version only) -openai.api_version = '2023-06-01-preview' -openai.api_type = 'azure' - -disallow_list = "swords, violence, blood, gore, nudity, sexual content, adult content, adult themes, adult language, adult humor, adult jokes, adult situations, adult" - -meta_prompt = f"""You are an assistant designer that creates images for children. - -The image needs to be safe for work and appropriate for children. - -The image needs to be in color. - -The image needs to be in landscape orientation. - -The image needs to be in a 16:9 aspect ratio. - -Do not consider any input from the following that is not safe for work or appropriate for children. -{disallow_list}""" - -prompt = f"""{metaprompt} -Generate monument of the Arc of Triumph in Paris, France, in the evening light with a small child holding a Teddy looks on. -"""" - -try: - # Create an image by using the image generation API - generation_response = openai.Image.create( - prompt=prompt, # Enter your prompt text here - size='1024x1024', - n=2, - temperature=0, - ) - # Set the directory for the stored image - image_dir = os.path.join(os.curdir, 'images') - - # If the directory doesn't exist, create it - if not os.path.isdir(image_dir): - os.mkdir(image_dir) - - # Initialize the image path (note the filetype should be png) - image_path = os.path.join(image_dir, 'generated-image.png') - - # Retrieve the generated image - image_url = generation_response["data"][0]["url"] # extract image URL from response - generated_image = requests.get(image_url).content # download the image - with open(image_path, "wb") as image_file: - image_file.write(generated_image) - - # Display the image in the default image viewer - image = Image.open(image_path) - image.show() - -# catch exceptions -except openai.InvalidRequestError as err: - print(err) -``` - -## 继续学习 - -想要了解有关构建图像生成应用的更多信息? 转至[进阶学习的页面](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) 查找有关此主章节的其他学习资源。 - -前往第十章,我们将学习[创建低代码的人工智能应用](../../../10-building-low-code-ai-applications/translations/cn/README.md?WT.mc_id=academic-105485-koreyst) diff --git a/09-building-image-applications/translations/ja-jp/README.md b/09-building-image-applications/translations/ja-jp/README.md deleted file mode 100644 index d6a4f60741..0000000000 --- a/09-building-image-applications/translations/ja-jp/README.md +++ /dev/null @@ -1,465 +0,0 @@ -# 画像生成アプリケーションの構築 - -[![Building Image Generation Applications](../../images/09-lesson-banner.png?WT.mc_id=academic-105485-yoterada)](https://aka.ms/gen-ai-lesson9-gh?WT.mc_id=academic-105485-koreyst) - -LLM はテキスト生成だけでなく、テキストの説明から画像も生成できます。画像生成は、医療や建築、観光、ゲーム開発のように様々な業界において価値が高いとされています。この章では、最も人気のある 2 つの画像生成モデル、DALL-E と Midjourney について詳しく見ていきます。 - -## はじめに - -このレッスンでは、下記の内容について説明します。 - -- 画像生成の有用性 -- DALL-E と Midjourney の概要とその動作原理 -- 画像生成アプリの作り方 - -## 学習目標 - -このレッスンを修了すると、下記を理解できます: - -- 画像生成アプリの作成 -- メタプロンプトを用いてアプリケーションの範囲を定義 -- DALL-E と Midjourney の活用方法 - -## 画像生成アプリケーションを作る理由は何でしょう? - -画像生成アプリケーションは、生成 AI の能力を引き出す絶好の手段です。例えば、下記のような用途に利用できます: - -- **画像編集と合成**:画像編集や画像合成など、様々な用途の画像を生成できます。 - -- **多種多様な業界への応用**:医療技術、観光、ゲーム開発など、様々な業界の画像を生成できます。 - -## シナリオ : Edu4All - -このレッスンでは、引き続きスタートアップの Edu4All で作業を進めていきます。生徒たちは評価用の画像を作成します。具体的にどのような画像を作るかは生徒たち次第ですが、自分たちの創作するおとぎ話のイラストを描いたり、物語の新しいキャラクターを作ったり、自分たちのアイデアや概念を視覚化する手助けをしてくれます。 - -例えば、Edu4All の生徒たちが授業で記念碑について学んでいる場合、下記のような画像を生成できます: - -![Edu4All startup, class on monuments, Eiffel Tower](../../images/startup.png?WT.mc_id=academic-105485-yoterada) - -次のようなプロンプトを入力します。 - -> "早朝の日差しを浴びたエッフェル塔の前に座る犬" - -## DALL-E と Midjourney とは何でしょう? - -[DALL-E](https://openai.com/dall-e-2?WT.mc_id=academic-105485-yoterada) と [Midjourney](https://www.midjourney.com/?WT.mc_id=academic-105485-yoterada) は、プロンプトを使って画像を生成できる、特に人気のある画像生成 AI モデルの 2 つです。 - -### DALL-E - -まずは、テキストの説明から画像を生成する生成 AI モデル、DALL-E について見ていきましょう。 - -> [DALL-E は、CLIP と Diffused attention という 2 つのモデルを組み合わせたものです](https://towardsdatascience.com/openais-dall-e-and-clip-101-a-brief-introduction-3a4367280d4e?WT.mc_id=academic-105485-yoterada). - -- **CLIP** は、画像やテキストからデータの数値表現である埋め込みを生成するモデルです。 -- **Diffused attention** は、埋め込みから画像を生成するモデルです。DALL-E は画像とテキストのデータセットで訓練され、テキストの説明から画像を生成できます。例えば、DALL-E を使って「帽子をかぶった猫」や「モヒカンヘアの犬」の画像を生成できます。 - -### Midjourney - -Midjourney も DALL-E と同様に、テキストプロンプトから画像を生成できます。Midjourney も同様に、「帽子をかぶった猫」や「モヒカンヘアの犬」などのプロンプトを使って画像を生成できます。 - -![Image generated by Midjourney, mechanical pigeon](https://upload.wikimedia.org/wikipedia/commons/thumb/8/8c/Rupert_Breheny_mechanical_dove_eca144e7-476d-4976-821d-a49c408e4f36.png/440px-Rupert_Breheny_mechanical_dove_eca144e7-476d-4976-821d-a49c408e4f36.png?WT.mc_id=academic-105485-yoterada) -_Image cred Wikipedia, image generated by Midjourney_ - -## DALL-E と Midjourney はどのように動作するのでしょうか? - -まず、[DALL-E](https://arxiv.org/pdf/2102.12092.pdf?WT.mc_id=academic-105485-yoterada) について説明します。DALL-E は、「_自己回帰型トランスフォーマー_」を用いたトランスフォーマー・アーキテクチャに基づく生成 AI モデルです。 - -「_自己回帰型トランスフォーマー_」は、AI モデルがテキストの説明から画像を生成する方法を定義します。このモデルは一度に 1 ピクセルずつ生成し、生成したピクセルを使って、次のピクセルを生成します。このプロセスは、画像が完成するまで、ニューラル・ネットワークの複数の層を通過していきます。 - -このプロセスを通じて、DALL-E は生成する画像の属性、オブジェクト、特性などを制御します。DALL-E 2 や 3 は生成された画像をより詳細に制御する能力を持っています。 - -## 初めての画像生成アプリケーションの構築 - -画像生成アプリケーションを作るためには、下記のライブラリが必要です。 - -- **python-dotenv**:強く推奨:このライブラリを利用し機密情報をコードから分離し「_.env_」ファイルに記述します -- **openai**:OpenAI API を利用するためのライブラリです -- **pillow**:Python で画像を扱うためのライブラリです -- **requests**:HTTP リクエストを作成するのに役立つライブラリです - -1. 下記の内容を記述した「_.env_」ファイルを作成します。 - - ```text - AZURE_OPENAI_ENDPOINT= - AZURE_OPENAI_API_KEY= - ``` - - この情報は、Azure Portal の OpenAI を作成したリソースの「Keys and Endpoints」セクションで確認します。 - -1. 上記で示した必須ライブラリを「_requirements.txt_」という名前のファイルに記述します - - ```text - python-dotenv - openai - pillow - requests - ``` - -1. 次に、仮想環境を作成し、ライブラリをインストールします - - ```bash - python3 -m venv venv - source venv/bin/activate - pip install -r requirements.txt - ``` - - Windows の場合は、下記のコマンドを実行して、仮想環境を作り利用できるようにします - - ```bash - python3 -m venv venv - venv\Scripts\activate.bat - ``` - -1. 「_app.py_」という名前のファイルに下記のコードを記述します - - ```python - import openai - import os - import requests - from PIL import Image - import dotenv - - # dotenvをインポート - dotenv.load_dotenv() - - # 環境変数からエンドポイントとキーを取得 - openai.api_base = os.environ['AZURE_OPENAI_ENDPOINT'] - openai.api_key = os.environ['AZURE_OPENAI_API_KEY'] - - # API のバージョンを割り当て(DALL-E は現在、2023-06-01-preview API バージョンのみをサポートしています) - openai.api_version = '2023-06-01-preview' - openai.api_type = 'azure' - - - try: - # 画像生成 API を使用して画像を作成 - generation_response = openai.Image.create( - prompt='ウサギがキャンディを持って馬に乗り、霧のかかった牧場で水仙が育つ中を走っている', # ここにプロンプトのテキストを入力 - size='1024x1024', - n=2, - temperature=0, - ) - # 画像を保存するディレクトリを設定 - image_dir = os.path.join(os.curdir, 'images') - - # ディレクトリが存在しない場合は作成 - if not os.path.isdir(image_dir): - os.mkdir(image_dir) - - # 画像ファイルへのパスを設定(ファイルタイプは png にします) - image_path = os.path.join(image_dir, 'generated-image.png') - - # 生成した画像を取得 - image_url = generation_response["data"][0]["url"] # レスポンスからイメージの URL を取得 - generated_image = requests.get(image_url).content # イメージのダウンロード - with open(image_path, "wb") as image_file: - image_file.write(generated_image) - - # デフォルトの画像ビューアで画像を表示 - image = Image.open(image_path) - image.show() - - # 例外をキャッチ - except openai.InvalidRequestError as err: - print(err) - - ``` - -上記のコードについて説明します。 - -- 最初に、必要なライブラリをインポートします。これには、OpenAI ライブラリ、dotenv ライブラリ、requests ライブラリ、Pillow ライブラリが含まれます。 - - ```python - import openai - import os - import requests - from PIL import Image - import dotenv - ``` - -- 次に、「_.env_」ファイルから環境変数を読み込みます。 - - ```python - # dotenvをインポート - dotenv.load_dotenv() - ``` - -- その後、OpenAI API のエンドポイント、キー、バージョン、タイプを設定します。 - - ```python - # 環境変数からエンドポイントとキーを取得 - openai.api_base = os.environ['AZURE_OPENAI_ENDPOINT'] - openai.api_key = os.environ['AZURE_OPENAI_API_KEY'] - - # バージョンと種類を設定、Azure 固有設定 - openai.api_version = '2023-06-01-preview' - openai.api_type = 'azure' - ``` - -- 次に、画像を作成します。 - - ```python - # 画像生成 API を使用して画像を作成 - generation_response = openai.Image.create( - prompt='ウサギがキャンディを持って馬に乗り、霧のかかった牧場で水仙が育つ中を走っている', # ここにプロンプトのテキストを入力 - size='1024x1024', - n=2, - temperature=0, - ) - ``` - - 上記のコードは、生成された画像の URL を含む JSON オブジェクトを返します。この URL を使って画像をダウンロードし、ファイルに保存できます。 - -- 最後に、画像を開き、標準の画像ビューアを使って表示します。 - - ```python - image = Image.open(image_path) - image.show() - ``` - -### 画像生成の詳細 - -画像を生成するコードをさらに詳しく見てみましょう。 - -```python -generation_response = openai.Image.create( - prompt='ウサギがキャンディを持って馬に乗り、霧のかかった牧場で水仙が育つ中を走っている', # ここにプロンプトのテキストを入力 - size='1024x1024', - n=2, - temperature=0, - ) -``` - -- **prompt**:画像を生成するためのテキスト・プロンプトです。この例では、「ウサギがキャンディを持って馬に乗り、霧のかかった牧場で水仙が育つ中を走っている」というプロンプトを使用しています。 -- **size**:生成する画像のサイズを指定します。この例では、1024x1024 ピクセルの画像を生成しています。 -- **n**:生成する画像の数です。この例では、2 つの画像を生成しています。 -- **temperature**:生成 AI モデルの出力のランダム性を制御するパラメータです。温度は 0 から 1 の間の値で、0 は出力が決定的を意味し、1 は出力がランダムになります。デフォルト値は 0.7 です。 - -次のセクションでは、画像生成でできる内容についてさらに詳しく説明します。 - -## 画像生成における追加機能 - -ここまで、Python コードを実装して画像を生成する方法を見てきました。しかし、画像生成でできる処理は他にもあります。 - -下記のような処理も可能です。 - -- **画像編集を行う**:既存の画像にマスクとプロンプトを提供し、画像を編集できます。例えば、画像の一部に、何かを新たに追加できます。たとえばウサギの画像を想像してみてください、ウサギに追加で帽子を被せれます。そのためには、画像、マスク(変更するエリアの部分を特定する)と、何をすべきかを示すテキストプロンプトを提供します。 - - ```python - response = openai.Image.create_edit( - image=open("base_image.png", "rb"), - mask=open("mask.png", "rb"), - prompt="頭に帽子をかぶったウサギの画像", - n=1, - size="1024x1024" - ) - image_url = response['data'][0]['url'] - ``` - - ベース画像にはウサギだけが含まれていますが、最終的な画像にはウサギの帽子が含まれています。 - -- **バリエーションを作成する**:既存の画像を取得し、バリエーションを作成するように依頼します。バリエーションを作成するには、画像とテキストプロンプトを提供し、以下のようなコードを記述します。 - - ```python - response = openai.Image.create_variation( - image=open("bunny-lollipop.png", "rb"), - n=1, - size="1024x1024" - ) - image_url = response['data'][0]['url'] - ``` - - > ご注意:これは OpenAI でのみサポートされています。 - -## 温度 - -温度は、生成 AI モデルの出力のランダム性を制御するパラメータで、0 から 1 までの値を取ります。0 は出力が決定的で、1 は出力がランダムになります。デフォルト値は 0.7 になっています。 - -実際に確認するため、下記のプロンプトを二度実行して、温度がどのように作用するか確認してください。 - -> プロンプト : "ウサギがキャンディを持って馬に乗り、霧のかかった牧場で水仙が育つ中を走っている" - -![Bunny on a horse holding a lollipop, version 1](../../images/v1-generated-image.png?WT.mc_id=academic-105485-yoterada) - -同じプロンプトをもう一度実行し、前回とは異なる画像が出てくるかを確認します - -![Generated image of bunny on horse](../../images/v2-generated-image.png?WT.mc_id=academic-105485-yoterada) - -ご覧の通り、生成された画像は似ているように見えますが、同じではありません。ここで温度の値を 0.1 に変更して、その結果を見てみましょう。 - -```python - generation_response = openai.Image.create( - prompt='ウサギがキャンディを持って馬に乗り、霧のかかった牧場で水仙が育つ中を走っている', # ここにプロンプトのテキストを入力 - size='1024x1024', - n=2 - ) -``` - -### 温度を変更してみましょう - -結果をより決定的にしたい場合、生成した二つの画像から見て分かるように、最初の画像にはウサギが、二つ目の画像には馬が映っているので、2つの画像に大きな違いがあります。 - -そこで、コードを修正して温度を 0 に設定します。 - -```python -generation_response = openai.Image.create( - prompt='ウサギがキャンディを持って馬に乗り、霧のかかった牧場で水仙が育つ中を走っている', # ここにプロンプトのテキストを入力 - size='1024x1024', - n=2, - temperature=0 - ) -``` - -このコードを実行すると、次の二つの画像が得られます。 - -- ![Temperature 0, v1](../../images/v1-temp-generated-image.png?WT.mc_id=academic-105485-yoterada) -- ![Temperature 0 , v2](../../images/v2-temp-generated-image.png?WT.mc_id=academic-105485-yoterada) - -これらの画像をご覧いただくと、2つの画像は明らかに似ています。 - -## メタ・プロンプトを使ってアプリケーションの範囲を設定する方法 - -上記のようにして、お客様に提供できる画像を生成できるようになっています。しかし、アプリケーションの範囲を設定する必要があります。 - -例えば、職場や学校にとって安全でない画像や、子供に適さない画像の生成は避けたいと思います。 - -これは*メタ・プロンプト*という手法を使って実現できます。メタ・プロンプトは、生成 AI モデルの出力を制御するために使用するテキスト・プロンプトです。例えば、メタ・プロンプトを使って出力を制御し、生成された画像が職場にとって安全か、子供にとって適しているかを確認できます。 - -### それはどのように動作するのでしょうか? - -それでは、メタ・プロンプトはどのように動作するのでしょうか? - -メタ・プロンプトは、生成 AI モデルの出力を制御するために使用するテキスト・プロンプトで、テキスト・プロンプトの前に配置し、モデルの出力を制御するために使用します。これはアプリケーションに組み込まれ、モデルの出力を制御します。プロンプト入力とメタ・プロンプト入力を一つのテキスト・プロンプトにまとめます。 - -メタ・プロンプトの一例を下記に示します。 - -```text -あなたは子供向けの画像を作成するアシスタントデザイナーです。 - -画像は職場にとって安全で、子供にとって適している必要があります。 - -画像はカラーである必要があります。 - -画像は横長の形式である必要があります。 - -画像は16:9のアスペクト比である必要があります。 - -以下の入力から、職場に安全でない画像や子供にとって適さない画像は除外してください。 - -(入力) -``` - -さて、それではアプリでメタ・プロンプトをどのように使うか見てみましょう。 - -```python -disallow_list = "剣、暴力、血、ゴア、ヌード、性的コンテンツ、アダルト・コンテンツ、アダルト・テーマ、アダルト・ワード、アダルト・ユーモア、アダルト・ジョーク、アダルト・シチュエーション、アダルト" - -meta_prompt =f"""あなたは子供向けの画像を作成するアシスタントデザイナーです。 - -画像は職場の中で使用する際に安全で、子供に適している必要があります。 - -画像はカラーである必要があります。 - -画像は横長の形式である必要があります。 - -画像は16:9のアスペクト比である必要があります。 - -以下の入力から、職場に安全でない画像や子供にとって適さない画像は除外してください。 -{disallow_list} -""" - -prompt = f"{meta_prompt} -ウサギがアメを持って馬に乗っている画像を作成してください" - -# TODO 画像生成のリクエストを追加 -``` - -上記のプロンプトは、生成されるすべての画像がメタ・プロンプトを考慮しています。 - -## 課題 - 学生の能力を引き出しましょう - -このレッスンの初めに Edu4All を紹介しました。今度は、学生が自分たちの評価のための画像を生成できるようにしましょう。 - -学生は、自分たちの評価用の画像を作成します。その画像には記念碑が含まれている必要がありますが、どの記念碑を選ぶかは学生に任せます。学生は、これらの記念碑をさまざまな状況に合わせるために、この課題では創造性の発揮が求められます。 - -## 解決策 - -下記に一つの解決策案を示します: - -```python -import openai -import os -import requests -from PIL import Image -import dotenv - -# dotenvをインポート -dotenv.load_dotenv() - -# 環境変数からエンドポイントとキーを取得 -openai.api_base = "<エンドポイントに置き換え>" -openai.api_key = "" - -# APIバージョンを指定(DALL-Eは現在、2023-06-01-preview APIバージョンのみ対応) -openai.api_version = '2023-06-01-preview' -openai.api_type = 'azure' - -disallow_list = "剣、暴力、血、ゴア、ヌード、性的コンテンツ、大人向けコンテンツ、大人向けテーマ、大人向け言語、大人向けユーモア、大人向けジョーク、大人向け状況、大人" - -meta_prompt = f"""あなたは子供向けの画像を作成するアシスタントデザイナーです。 - -画像は、職場において安全で、子供に適している必要があります。 - -画像はカラーである必要があります。 - -画像は横向きである必要があります。 - -画像は16:9のアスペクト比である必要があります。 - -以下の入力は、職場で安全でない、または子供に適していないので除外してください。 -{disallow_list}""" - -prompt = f"""{metaprompt} -フランスのパリにある凱旋門を夕暮れの光の中で描き、 -小さな子供がテディベアを持って見つめている様子の -画像を生成してください。 -"""" - -try: - # 画像生成APIを使用して画像を作成 - generation_response = openai.Image.create( - prompt=prompt, # ここにプロンプト・テキストを入力 - size='1024x1024', - n=2, - temperature=0, - ) - # 保存する画像のディレクトリを設定 - image_dir = os.path.join(os.curdir, 'images') - - # ディレクトリが存在しない場合は作成 - if not os.path.isdir(image_dir): - os.mkdir(image_dir) - - # 画像のパスを初期化(ファイル形式は png) - image_path = os.path.join(image_dir, 'generated-image.png') - - # 生成された画像を取得 - image_url = generation_response["data"][0]["url"] # レスポンスから画像URLを抽出 - generated_image = requests.get(image_url).content # 画像をダウンロード - with open(image_path, "wb") as image_file: - image_file.write(generated_image) - - # デフォルトの画像ビューアで画像を表示 - image = Image.open(image_path) - image.show() - -# 例外をキャッチ -except openai.InvalidRequestError as err: - print(err) -``` - -## お疲れ様でした! 学習を続ける - -このレッスン修了後、[生成 AI 学習コレクション](https://aka.ms/genai-collection?WT.mc_id=academic-105485-yoterada) をチェックして、Generative AI の知識をレベルアップさせましょう。 - -次のレッスン 10 では、[ローコード AI アプリケーションの構築](../../../10-building-low-code-ai-applications/translations/ja-jp/README.md?WT.mc_id=academic-105485-yoterada)方法について学びます! diff --git a/09-building-image-applications/translations/ko/README.md b/09-building-image-applications/translations/ko/README.md deleted file mode 100644 index 5e3e47bf7d..0000000000 --- a/09-building-image-applications/translations/ko/README.md +++ /dev/null @@ -1,457 +0,0 @@ -# 이미지 생성 애플리케이션 구축하기 - -[![Building Image Generation Applications](../../images/09-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson9-gh?WT.mc_id=academic-105485-koreyst) - -LLM은 텍스트 생성 이상의 기능을 갖고 있습니다. 텍스트 설명으로부터 이미지를 생성하는 것도 가능합니다. 이미지를 모달리티로 사용하는 것은 MedTech, 건축, 관광, 게임 개발 등 여러 분야에서 매우 유용할 수 있습니다. 이 장에서는 가장 인기 있는 이미지 생성 모델인 DALL-E와 Midjourney에 대해 알아보겠습니다. - -## 소개 - -이 레슨에서는 다음을 다룰 예정입니다: - -- 이미지 생성과 그 유용성 -- DALL-E와 Midjourney, 그들이 무엇이며 어떻게 작동하는지 -- 이미지 생성 애플리케이션을 구축하는 방법 - -## 학습 목표 - -이 레슨을 마치면 다음을 할 수 있게 될 것입니다: - -- 이미지 생성 애플리케이션을 구축할 수 있습니다. -- 메타 프롬프트를 사용하여 애플리케이션의 범위를 정의할 수 있습니다. -- DALL-E와 Midjourney와 함께 작업할 수 있습니다. - -## 이미지 생성 애플리케이션을 구축하는 이유 - -이미지 생성 애플리케이션은 생성적 AI의 능력을 탐색하는 좋은 방법입니다. 이미지 편집 및 합성과 같은 다양한 용도로 이미지를 생성할 수 있습니다. - -- **이미지 편집 및 합성**. 이미지 편집 및 이미지 합성과 같은 다양한 용도로 이미지를 생성할 수 있습니다. - -- **다양한 산업에 적용**. MedTech, 관광, 게임 개발 등 다양한 산업에 이미지를 생성하는 데 사용할 수 있습니다. - -## 시나리오: Edu4All - -이 레슨의 일환으로 Edu4All이라는 스타트업과 계속해서 작업할 예정입니다. 학생들은 자신들의 평가를 위해 이미지를 생성할 것입니다. 어떤 이미지를 생성할지는 학생들에게 달려 있지만, 그들은 자신들의 동화를 위한 일러스트를 만들거나 이야기를 위한 새로운 캐릭터를 만들거나 아이디어와 개념을 시각화하는 데 도움이 되는 이미지를 생성할 수 있습니다. - -예를 들어, Edu4All의 학생들이 수업에서 명소에 대해 작업한다면: - -![Edu4All 스타트업, 명소 수업, 에펠탑](../../images/startup.png?WT.mc_id=academic-105485-koreyst) - -다음과 같은 프롬프트를 사용하여 이미지를 생성할 수 있습니다. - -> "아침 햇살에 에펠탑 옆에 있는 개" - -## DALL-E와 Midjourney란 무엇인가요? - -[DALL-E](https://openai.com/dall-e-2?WT.mc_id=academic-105485-koreyst)와 [Midjourney](https://www.midjourney.com/?WT.mc_id=academic-105485-koreyst)는 가장 인기 있는 이미지 생성 모델 중 두 가지로, 텍스트를 사용하여 이미지를 생성할 수 있게 해줍니다. - -### DALL-E - -먼저 DALL-E부터 시작해보겠습니다. DALL-E는 텍스트 설명으로부터 이미지를 생성하는 생성형 AI 모델입니다. - -> [DALL-E는 CLIP과 diffused attention 두 모델의 조합입니다](https://towardsdatascience.com/openais-dall-e-and-clip-101-a-brief-introduction-3a4367280d4e?WT.mc_id=academic-105485-koreyst). - -- **CLIP**은 이미지와 텍스트로부터 데이터의 수치적 표현인 임베딩을 생성하는 모델입니다. - -- **Diffused attention**은 임베딩으로부터 이미지를 생성하는 모델입니다. DALL-E는 이미지와 텍스트 데이터셋으로 학습되며, 텍스트 설명으로부터 이미지를 생성할 수 있습니다. 예를 들어, DALL-E는 모자를 쓴 고양이 이미지나 모히칸을 한 개의 개 이미지를 생성할 수 있습니다. - -### Midjourney - -Midjourney는 DALL-E와 비슷한 방식으로 작동하며, 텍스트 프롬프트를 사용하여 이미지를 생성합니다. Midjourney는 "모자를 쓴 고양이"나 "모히칸을 한 개"와 같은 프롬프트를 사용하여 이미지를 생성할 수도 있습니다. - -![Image generated by Midjourney, mechanical pigeon](https://upload.wikimedia.org/wikipedia/commons/thumb/8/8c/Rupert_Breheny_mechanical_dove_eca144e7-476d-4976-821d-a49c408e4f36.png/440px-Rupert_Breheny_mechanical_dove_eca144e7-476d-4976-821d-a49c408e4f36.png?WT.mc_id=academic-105485-koreyst) - -_이미지 출처: 위키백과, Midjourney가 생성한 이미지_ - -## DALL-E와 Midjourney는 어떻게 작동하나요? - -먼저, [DALL-E](https://arxiv.org/pdf/2102.12092.pdf?WT.mc_id=academic-105485-koreyst)입니다. DALL-E는 _자기회귀 트랜스포머 (autoregressive transformer)_ 를 기반으로 한 생성형 AI 모델입니다. - -_자기회귀 트랜스포머 (autoregressive transformer)_ 는 모델이 텍스트 설명으로부터 이미지를 생성하는 방식을 정의합니다. 모델은 한 번에 한 픽셀을 생성하고, 생성된 픽셀을 사용하여 다음 픽셀을 생성합니다. 신경망의 여러 계층을 통과하여 이미지가 완성됩니다. - -이 과정을 통해 DALL-E는 생성된 이미지에서 속성, 객체, 특징 등을 제어할 수 있습니다. 더불어 DALL-E 2와 3은 생성된 이미지에 대해 더 많은 제어를 할 수 있습니다. - -## 첫 번째 이미지 생성 애플리케이션 구축하기 - -이미지 생성 애플리케이션을 구축하려면 어떤 라이브러리가 필요할까요? 다음 라이브러리가 필요합니다: - -- **python-dotenv**: 이 라이브러리를 사용하여 secrets를 코드에서 분리하여 _.env_ 파일에 저장하는 것을 권장합니다. -- **openai**: OpenAI API와 상호 작용하기 위해 사용하는 라이브러리입니다. -- **pillow**: Python에서 이미지 작업을 위해 사용하는 라이브러리입니다. -- **requests**: HTTP 요청을 도와주는 라이브러리입니다. - -1. 다음 내용으로 _.env_ 파일을 생성하세요: - - ```text - AZURE_OPENAI_ENDPOINT= - AZURE_OPENAI_API_KEY= - ``` - - 이 정보는 Azure Portal에서 리소스의 "Keys and Endpoint" 섹션에서 찾을 수 있습니다. - -1. 다음과 같이 _requirements.txt_ 파일에 위의 라이브러리들을 모아두세요: - - ```text - python-dotenv - openai - pillow - requests - ``` - -1. 이제 가상 환경을 생성하고 라이브러리를 설치하세요: - - ```bash - python3 -m venv venv - source venv/bin/activate - pip install -r requirements.txt - ``` - - Windows의 경우 다음 명령을 사용하여 가상 환경을 생성하고 활성화하세요: - - ```bash - python3 -m venv venv - venv\Scripts\activate.bat - ``` - -1. *app.py*라는 파일에 다음 코드를 추가하세요: - - ```python - import openai - import os - import requests - from PIL import Image - import dotenv - - # dotenv 라이브러리를 불러옵니다. - dotenv.load_dotenv() - - # 환경 변수에서 엔드포인트와 키를 가져옵니다. - openai.api_base = os.environ['AZURE_OPENAI_ENDPOINT'] - openai.api_key = os.environ['AZURE_OPENAI_API_KEY'] - - # API 버전을 할당합니다 (DALL-E는 현재 2023-06-01-preview API 버전만 지원됩니다). - openai.api_version = '2023-06-01-preview' - openai.api_type = 'azure' - - - try: - # 이미지 생성 API를 사용하여 이미지를 생성합니다. - generation_response = openai.Image.create( - prompt='수선화가 자라는 안개가 자욱한 초원에 막대사탕을 들고 있는 말 위의 토끼', # 여기에 원하는 프롬프트 텍스트를 입력하세요 - size='1024x1024', - n=2, - temperature=0, - ) - # 저장된 이미지를 위한 디렉토리를 설정합니다. - image_dir = os.path.join(os.curdir, 'images') - - # 디렉토리가 존재하지 않으면 생성합니다. - if not os.path.isdir(image_dir): - os.mkdir(image_dir) - - # 이미지 경로를 초기화합니다 (파일 유형은 png여야 합니다). - image_path = os.path.join(image_dir, 'generated-image.png') - - # 생성된 이미지를 가져옵니다. - image_url = generation_response["data"][0]["url"] # 응답에서 이미지 URL을 추출합니다. - generated_image = requests.get(image_url).content # 이미지를 다운로드합니다. - with open(image_path, "wb") as image_file: - image_file.write(generated_image) - - # 기본 이미지 뷰어에서 이미지를 표시합니다. - image = Image.open(image_path) - image.show() - - # 예외 처리 - except openai.InvalidRequestError as err: - print(err) - - ``` - -이 코드를 설명해보겠습니다: - -- 먼저, 필요한 라이브러리를 가져옵니다. 이는 OpenAI 라이브러리, dotenv 라이브러리, requests 라이브러리, 그리고 Pillow 라이브러리를 포함합니다. - - ```python - import openai - import os - import requests - from PIL import Image - import dotenv - ``` - -- 다음으로, _.env_ 파일에서 환경 변수를 로드합니다. - - ```python - # dotenv 라이브러리를 불러옵니다. - dotenv.load_dotenv() - ``` - -- 그 다음, OpenAI API의 엔드포인트와 키, 버전 및 타입을 설정합니다. - - ```python - # 환경 변수에서 엔드포인트와 키를 가져옵니다. - openai.api_base = os.environ['AZURE_OPENAI_ENDPOINT'] - openai.api_key = os.environ['AZURE_OPENAI_API_KEY'] - - # 버전과 타입을 추가합니다. Azure에 특화된 설정입니다. - openai.api_version = '2023-06-01-preview' - openai.api_type = 'azure' - ``` - -- 그 다음, 이미지를 생성합니다: - - ```python - # 이미지 생성 API를 사용하여 이미지를 생성합니다. - generation_response = openai.Image.create( - prompt='수선화가 자라는 안개가 자욱한 초원에 막대사탕을 들고 있는 말 위의 토끼', # 여기에 원하는 프롬프트 텍스트를 입력하세요 - size='1024x1024', - n=2, - temperature=0, - ) - ``` - - 위의 코드는 생성된 이미지의 URL을 포함하는 JSON 객체를 반환합니다. 이 URL을 사용하여 이미지를 다운로드하고 파일로 저장할 수 있습니다. - -- 마지막으로, 이미지를 열고 기본 이미지 뷰어를 사용하여 표시합니다: - - ```python - image = Image.open(image_path) - image.show() - ``` - -### 이미지 생성에 대한 자세한 내용 - -이미지를 생성하는 코드를 자세히 살펴보겠습니다: - -```python -generation_response = openai.Image.create( - prompt='수선화가 자라는 안개가 자욱한 초원에 막대사탕을 들고 있는 말 위의 토끼', # 여기에 원하는 프롬프트 텍스트를 입력하세요 - size='1024x1024', - n=2, - temperature=0, - ) -``` - -- **prompt**는 이미지를 생성하는 데 사용되는 텍스트 프롬프트입니다. 이 경우 "수선화가 자라는 안개가 자욱한 초원에 막대사탕을 들고 있는 말 위의 토끼"라는 프롬프트를 사용합니다. -- **size**는 생성되는 이미지의 크기입니다. 이 경우 1024x1024 픽셀의 이미지를 생성합니다. -- **n**은 생성되는 이미지의 개수입니다. 이 경우 두 개의 이미지를 생성합니다. -- **temperature**은 생성적 AI 모델의 출력의 무작위성을 제어하는 매개변수입니다. temperature는 0과 1 사이의 값으로, 0은 출력이 결정론적이고 1은 출력이 무작위적임을 의미합니다. 기본값은 0.7입니다. - -다음 섹션에서 이미지로 할 수 있는 더 많은 작업을 다룰 예정입니다. - -## 이미지 생성의 추가 기능 - -지금까지 몇 줄의 Python 코드로 이미지를 생성하는 방법을 살펴보았습니다. 그러나 이미지로 할 수 있는 더 많은 작업이 있습니다. - -다음과 같은 작업을 수행할 수도 있습니다: - -- **편집하기**. 기존 이미지, 마스크 및 프롬프트를 제공하여 이미지를 수정할 수 있습니다. 예를 들어, 이미지의 일부에 무언가를 추가할 수 있습니다. 토끼 이미지에 모자를 추가한다고 상상해보세요. 이미지, 마스크(변경할 영역을 식별하는) 및 수행할 작업을 설명하는 텍스트 프롬프트를 제공하는 방식으로 수행할 수 있습니다. - - ```python - response = openai.Image.create_edit( - image=open("base_image.png", "rb"), - mask=open("mask.png", "rb"), - prompt="모자를 쓴 토끼의 이미지입니다.", - n=1, - size="1024x1024" - ) - image_url = response['data'][0]['url'] - ``` - - 기본 이미지에는 토끼만 포함되지만 최종 이미지에는 토끼에 모자가 있게 됩니다. - -- **변형 생성하기**. 기존 이미지를 가져와서 변형을 생성할 수 있습니다. 변형을 생성하려면 이미지와 텍스트 프롬프트를 제공하고 다음과 같은 코드를 사용합니다: - - ```python - response = openai.Image.create_variation( - image=open("bunny-lollipop.png", "rb"), - n=1, - size="1024x1024" - ) - image_url = response['data'][0]['url'] - ``` - - > 참고: 이 기능은 OpenAI에서만 지원됩니다. - -## Temperature - -temperature는 생성적 AI 모델의 출력의 무작위성을 제어하는 매개변수입니다. temperature는는 0과 1 사이의 값으로, 0은 출력이 결정론적이고 1은 출력이 무작위적임을 의미합니다. 기본값은 0.7입니다. - -temperature가 어떻게 작용하는지 예제를 통해 살펴보겠습니다. 다음 프롬프트를 두 번 실행하여 확인해보겠습니다: - -> 프롬프트: "수선화가 자라는 안개가 자욱한 초원에 막대사탕을 들고 있는 말 위의 토끼" - -![토끼가 말 위에 막대사탕을 들고 있는 이미지, 버전 1](../../images/v1-generated-image.png?WT.mc_id=academic-105485-koreyst) - -이제 동일한 프롬프트를 다시 실행하여 동일한 이미지를 얻지 못하는지 확인해보겠습니다: - -![토끼가 말 위에 달고 있는 이미지](../../images/v2-generated-image.png?WT.mc_id=academic-105485-koreyst) - -이미지는 비슷하지만 완전히 동일하지는 않습니다. 이제 temperature 값을 0.1로 변경해보고 어떤 일이 일어나는지 확인해보겠습니다: - -### temperature 조절하기 - -그러면 응답을 더 결정론적으로 만들어 보겠습니다. 우리가 생성한 두 이미지를 관찰해보면 첫 번째 이미지에는 토끼가 있고 두 번째 이미지에는 말이 있음을 알 수 있습니다. 따라서 이미지가 크게 다릅니다. - -따라서 코드를 변경하여 온도를 0으로 설정해 보겠습니다: - -```python -generation_response = openai.Image.create( - prompt='수선화가 자라는 안개가 자욱한 초원에 막대사탕을 들고 있는 말 위의 토끼', # 여기에 원하는 프롬프트 텍스트를 입력하세요 - size='1024x1024', - n=2, - temperature=0 - ) -``` - -코드를 실행하면 다음 두 이미지를 얻게 됩니다: - -- ![Temperature 0, v1](../../images/v1-temp-generated-image.png?WT.mc_id=academic-105485-koreyst) -- ![Temperature 0 , v2](../../images/v2-temp-generated-image.png?WT.mc_id=academic-105485-koreyst) - -여기에서 이미지들이 서로 더 닮아있는 것을 명확히 볼 수 있습니다. - -## 메타프롬프트를 사용하여 애플리케이션의 경계 정의하기 - -우리의 데모를 통해 이미지를 생성할 수 있습니다. 그러나 애플리케이션에 일부 경계를 설정해야 합니다. - -예를 들어, 성인용이나 어린이에게 적합하지 않은 이미지를 생성하고 싶지 않습니다. - -이를 위해 _메타프롬프트_ 를 사용할 수 있습니다. 메타프롬프트는 생성형 AI 모델의 출력을 제어하는 데 사용되는 텍스트 프롬프트입니다. 예를 들어, 메타프롬프트를 사용하여 출력을 제어하고, 생성된 이미지가 안전하고 어린이에게 적합하도록 할 수 있습니다. - -### 어떻게 작동하나요? - -그렇다면 메타프롬프트는 어떻게 작동할까요? - -메타프롬프트는 생성형 AI 모델의 출력을 제어하는 데 사용되는 텍스트 프롬프트입니다. 이는 텍스트 프롬프트 앞에 위치하며, 모델의 출력을 제어하고 애플리케이션에서 모델의 출력을 제어하는 데 사용됩니다. 프롬프트 입력과 메타프롬프트 입력을 하나의 텍스트 프롬프트에 포함시킵니다. - -메타프롬프트의 한 예는 다음과 같습니다: - -````text -어린이를 위한 이미지를 만드는 어시스턴트 디자이너입니다. - -이미지는 작업하는데 안전하고 어린이에게 적합해야 합니다. - -이미지는 컬러여야 합니다. - -이미지는 가로 방향이어야 합니다. - -이미지는 16:9의 가로 세로 비율을 가져야 합니다. - -다음과 같이 작업하는데 안전하지 않거나 어린이에게 적합하지 않은 입력은 고려하지 마세요. - -(입력) - -```text - -이제 데모에서 메타프롬프트를 사용하는 방법을 살펴보겠습니다. - -```python -disallow_list = "칼, 폭력, 피, 유혈, 과도한 노출, 성적인 콘텐츠, 성인용 콘텐츠, 성인 테마, 성인 언어, 성인 유머, 성인 농담, 성인 상황, 성인" - -meta_prompt =f"""어린이를 위한 이미지를 만드는 어시스턴트 디자이너입니다. - -이미지는 작업하는데 안전하고 어린이에게 적합해야 합니다. - -이미지는 컬러여야 합니다. - -이미지는 가로 방향이어야 합니다. - -이미지는 16:9의 가로 세로 비율을 가져야 합니다. - -다음과 같이 작업하는데 안전하지 않거나 어린이에게 적합하지 않은 입력은 고려하지 마세요. -{disallow_list} -""" - -prompt = f"{meta_prompt} -토끼가 말 위에 올라타고 롤리팝을 들고 있는 이미지를 생성해주세요" - -```` - -위의 프롬프트에서 모든 생성된 이미지가 메타프롬프트를 고려한다는 것을 볼 수 있습니다. - -## 과제 - 학생들에게 제공하기 - -우리는 이 수업의 시작에서 Edu4All을 소개했습니다. 이제 학생들이 자신의 평가를 위해 이미지를 생성할 수 있도록 제공할 차례입니다. - -학생들은 자신이 선택한 기념물을 포함한 평가용 이미지를 생성할 것입니다. 어떤 기념물을 사용할지는 학생들에게 달려 있습니다. 이 작업에서 학생들은 이러한 기념물을 다른 맥락에 배치하는 창의력을 발휘해야 합니다. - -## 해결책 - -다음은 하나의 가능한 해결책입니다: - -```python -import openai -import os -import requests -from PIL import Image -import dotenv - -# dotenv를 가져옵니다. -dotenv.load_dotenv() - -# 환경 변수에서 엔드포인트와 키를 가져옵니다. -openai.api_base = "" -openai.api_key = "" - -# API 버전을 할당합니다 (DALL-E는 현재 2023-06-01-preview API 버전만 지원됩니다) -openai.api_version = '2023-06-01-preview' -openai.api_type = 'azure' - -disallow_list = "칼, 폭력, 피, 유혈, 과도한 노출, 성적인 콘텐츠, 성인용 콘텐츠, 성인 테마, 성인 언어, 성인 유머, 성인 농담, 성인 상황, 성인" - -meta_prompt = f"""어린이를 위한 이미지를 만드는 어시스턴트 디자이너입니다. - -이미지는 작업하는데 안전하고 어린이에게 적합해야 합니다. - -이미지는 컬러여야 합니다. - -이미지는 가로 방향이어야 합니다. - -이미지는 16:9의 가로 세로 비율을 가져야 합니다. - -다음과 같이 작업하는데 안전하지 않거나 어린이에게 적합하지 않은 입력은 고려하지 마세요. -{disallow_list}""" - -prompt = f"""{meta_prompt} -파리, 프랑스의 아크 드 트리옴프 기념비를 저녁 빛 아래에서 작은 아이가 테디를 들고 바라보는 이미지를 생성해주세요. -""" - -try: - # 이미지 생성 API를 사용하여 이미지 생성 - generation_response = openai.Image.create( - prompt=prompt, # 여기에 프롬프트 텍스트를 입력하세요 - size='1024x1024', - n=2, - temperature=0, - ) - # 저장된 이미지의 디렉토리 설정 - image_dir = os.path.join(os.curdir, 'images') - - # 디렉토리가 존재하지 않으면 생성 - if not os.path.isdir(image_dir): - os.mkdir(image_dir) - - # 이미지 경로 초기화 (파일 유형은 png여야 함) - image_path = os.path.join(image_dir, 'generated-image.png') - - # 생성된 이미지 가져오기 - image_url = generation_response["data"][0]["url"] # 응답에서 이미지 URL 추출 - generated_image = requests.get(image_url).content # 이미지 다운로드 - with open(image_path, "wb") as image_file: - image_file.write(generated_image) - - # 기본 이미지 뷰어에서 이미지 표시 - image = Image.open(image_path) - image.show() - -# 예외 처리 -except openai.InvalidRequestError as err: - print(err) -``` - -## 잘하셨습니다. 학습을 계속하세요! - -이 레슨을 완료한 후에는 [Generative AI 학습 컬렉션](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst)을 확인하여 Generative AI 지식을 더욱 향상시킬 수 있습니다! - -Lesson 10으로 이동하여 [low-code로 AI 애플리케이션을 구축하는 방법](../../../10-building-low-code-ai-applications/translations/ko/README.md?WT.mc_id=academic-105485-koreyst)을 살펴보세요. diff --git a/09-building-image-applications/translations/pl/README.md b/09-building-image-applications/translations/pl/README.md deleted file mode 100644 index 9d83a2e9af..0000000000 --- a/09-building-image-applications/translations/pl/README.md +++ /dev/null @@ -1,465 +0,0 @@ -# Budowanie Aplikacji Generujących Obrazy - -[![Budowanie Aplikacji Generujących Obrazy](../../images/09-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson9-gh?WT.mc_id=academic-105485-koreyst) - -Duże Modele Językowe (LLM) oferują więcej niż tylko generowanie tekstu. Możliwe jest również generowanie obrazów na podstawie opisów tekstowych. Obrazy jako modalność mogą być niezwykle użyteczne w wielu dziedzinach, od technologii medycznych, architektury, turystyki, po tworzenie gier i wiele innych. W tym rozdziale przyjrzymy się dwóm najpopularniejszym modelom generowania obrazów: DALL-E i Midjourney. - -## Wprowadzenie - -W tej lekcji omówimy: - -- Generowanie obrazów i dlaczego jest przydatne. -- DALL-E i Midjourney - czym są i jak działają. -- Jak zbudować aplikację generującą obrazy. - -## Cele nauki - -Po ukończeniu tej lekcji będziesz potrafić: - -- Zbudować aplikację generującą obrazy. -- Zdefiniować granice dla swojej aplikacji za pomocą metapromptów. -- Pracować z DALL-E i Midjourney. - -## Dlaczego warto budować aplikację generującą obrazy? - -Aplikacje generujące obrazy to świetny sposób na odkrywanie możliwości Generatywnej SI. Mogą być używane na przykład do: - -- **Edycji i syntezy obrazów**. Możesz generować obrazy dla różnych przypadków użycia, takich jak edycja i synteza obrazów. - -- **Zastosowań w różnych branżach**. Mogą być również używane do generowania obrazów dla różnych branż, takich jak technologie medyczne, turystyka, tworzenie gier i wiele innych. - -## Scenariusz: Edu4All - -W ramach tej lekcji będziemy kontynuować współpracę z naszym startupem Edu4All. Uczniowie będą tworzyć obrazy do swoich zadań - dokładnie jakie obrazy, zależy od uczniów, ale mogą to być ilustracje do własnej bajki, stworzenie nowej postaci do opowiadania lub wizualizacja ich pomysłów i koncepcji. - -Oto co uczniowie Edu4All mogliby wygenerować, jeśli na przykład pracują na lekcji o zabytkach: - -![Startup Edu4All, lekcja o zabytkach, Wieża Eiffla](../../images/startup.png?WT.mc_id=academic-105485-koreyst) - -używając promptu w stylu: - -> "Pies obok Wieży Eiffla we wczesnym porannym świetle słonecznym" - -## Czym są DALL-E i Midjourney? - -[DALL-E](https://openai.com/dall-e-2?WT.mc_id=academic-105485-koreyst) i [Midjourney](https://www.midjourney.com/?WT.mc_id=academic-105485-koreyst) to dwa z najpopularniejszych modeli generowania obrazów, które pozwalają używać promptów tekstowych do tworzenia obrazów. - -### DALL-E - -Zacznijmy od DALL-E, który jest modelem Generatywnej SI generującym obrazy na podstawie opisów tekstowych. - -> [DALL-E to połączenie dwóch modeli: CLIP i uwagi dyfuzyjnej (diffused attention)](https://towardsdatascience.com/openais-dall-e-and-clip-101-a-brief-introduction-3a4367280d4e?WT.mc_id=academic-105485-koreyst). - -- **CLIP** to model, który generuje osadzenia (embeddings), czyli numeryczne reprezentacje danych, z obrazów i tekstu. - -- **Uwaga dyfuzyjna** to model, który generuje obrazy z osadzeń. DALL-E jest trenowany na zbiorze danych zawierającym obrazy i tekst, i może być używany do generowania obrazów na podstawie opisów tekstowych. Na przykład, DALL-E może być używany do generowania obrazów kota w kapeluszu lub psa z irokezem. - -### Midjourney - -Midjourney działa podobnie do DALL-E, generując obrazy na podstawie promptów tekstowych. Midjourney również może być używany do generowania obrazów za pomocą promptów, takich jak "kot w kapeluszu" lub "pies z irokezem". - -![Obraz wygenerowany przez Midjourney, mechaniczny gołąb](https://upload.wikimedia.org/wikipedia/commons/thumb/8/8c/Rupert_Breheny_mechanical_dove_eca144e7-476d-4976-821d-a49c408e4f36.png/440px-Rupert_Breheny_mechanical_dove_eca144e7-476d-4976-821d-a49c408e4f36.png?WT.mc_id=academic-105485-koreyst) -_Autor obrazu: Wikipedia, obraz wygenerowany przez Midjourney_ - -## Jak działają DALL-E i Midjourney - -Najpierw [DALL-E](https://arxiv.org/pdf/2102.12092.pdf?WT.mc_id=academic-105485-koreyst). DALL-E to model Generatywnej SI oparty na architekturze transformera z _autoregresyjnym transformerem_. - -_Autoregresyjny transformer_ określa, w jaki sposób model generuje obrazy z opisów tekstowych - generuje jeden piksel na raz, a następnie wykorzystuje wygenerowane piksele do generowania następnego piksela. Przechodząc przez wiele warstw w sieci neuronowej, aż do ukończenia obrazu. - -W tym procesie DALL-E kontroluje atrybuty, obiekty, charakterystykę i więcej w generowanym obrazie. Jednak DALL-E 2 i 3 mają większą kontrolę nad generowanym obrazem. - -## Budowanie pierwszej aplikacji generującej obrazy - -Co więc jest potrzebne do zbudowania aplikacji generującej obrazy? Potrzebujesz następujących bibliotek: - -- **python-dotenv**, zdecydowanie zaleca się używanie tej biblioteki do przechowywania sekretów w pliku _.env_ z dala od kodu. -- **openai**, ta biblioteka będzie używana do interakcji z API OpenAI. -- **pillow**, do pracy z obrazami w Pythonie. -- **requests**, do wykonywania żądań HTTP. - -1. Utwórz plik _.env_ o następującej zawartości: - - ```text - AZURE_OPENAI_ENDPOINT= - AZURE_OPENAI_API_KEY= - ``` - - Znajdź te informacje w Azure Portal dla swojego zasobu w sekcji "Klucze i Endpoint". - -1. Zbierz powyższe biblioteki w pliku o nazwie _requirements.txt_ w następujący sposób: - - ```text - python-dotenv - openai - pillow - requests - ``` - -1. Następnie utwórz wirtualne środowisko i zainstaluj biblioteki: - - ```bash - python3 -m venv venv - source venv/bin/activate - pip install -r requirements.txt - ``` - - W przypadku Windows użyj następujących poleceń, aby utworzyć i aktywować wirtualne środowisko: - - ```bash - python3 -m venv venv - venv\Scripts\activate.bat - ``` - -1. Dodaj następujący kod w pliku o nazwie _app.py_: - - ```python - import openai - import os - import requests - from PIL import Image - import dotenv - - # import dotenv - dotenv.load_dotenv() - - # Pobierz endpoint i klucz ze zmiennych środowiskowych - openai.api_base = os.environ['AZURE_OPENAI_ENDPOINT'] - openai.api_key = os.environ['AZURE_OPENAI_API_KEY'] - - # Przypisz wersję API (DALL-E jest obecnie obsługiwany tylko dla wersji API 2023-06-01-preview) - openai.api_version = '2023-06-01-preview' - openai.api_type = 'azure' - - - try: - # Utwórz obraz za pomocą API generowania obrazów - generation_response = openai.Image.create( - prompt='Królik na koniu, trzymający lizaka, na mglistej łące, gdzie rosną żonkile', # Wprowadź tutaj swój tekst promptu - size='1024x1024', - n=2, - temperature=0, - ) - # Ustaw katalog dla przechowywanego obrazu - image_dir = os.path.join(os.curdir, 'images') - - # Jeśli katalog nie istnieje, utwórz go - if not os.path.isdir(image_dir): - os.mkdir(image_dir) - - # Zainicjuj ścieżkę obrazu (uwaga: typ pliku powinien być png) - image_path = os.path.join(image_dir, 'generated-image.png') - - # Pobierz wygenerowany obraz - image_url = generation_response["data"][0]["url"] # wyodrębnij URL obrazu z odpowiedzi - generated_image = requests.get(image_url).content # pobierz obraz - with open(image_path, "wb") as image_file: - image_file.write(generated_image) - - # Wyświetl obraz w domyślnej przeglądarce obrazów - image = Image.open(image_path) - image.show() - - # złap wyjątki - except openai.InvalidRequestError as err: - print(err) - - ``` - -Wyjaśnijmy ten kod: - -- Najpierw importujemy potrzebne biblioteki, w tym bibliotekę OpenAI, bibliotekę dotenv, bibliotekę requests i bibliotekę Pillow. - - ```python - import openai - import os - import requests - from PIL import Image - import dotenv - ``` - -- Następnie ładujemy zmienne środowiskowe z pliku _.env_. - - ```python - # import dotenv - dotenv.load_dotenv() - ``` - -- Po tym ustawiamy endpoint, klucz dla API OpenAI, wersję i typ. - - ```python - # Pobierz endpoint i klucz ze zmiennych środowiskowych - openai.api_base = os.environ['AZURE_OPENAI_ENDPOINT'] - openai.api_key = os.environ['AZURE_OPENAI_API_KEY'] - - # dodaj wersję i typ, specyficzne dla Azure - openai.api_version = '2023-06-01-preview' - openai.api_type = 'azure' - ``` - -- Następnie generujemy obraz: - - ```python - # Utwórz obraz za pomocą API generowania obrazów - generation_response = openai.Image.create( - prompt='Królik na koniu, trzymający lizaka, na mglistej łące, gdzie rosną żonkile', # Wprowadź tutaj swój tekst promptu - size='1024x1024', - n=2, - temperature=0, - ) - ``` - - Powyższy kod zwraca obiekt JSON, który zawiera URL wygenerowanego obrazu. Możemy użyć tego URL do pobrania obrazu i zapisania go do pliku. - -- Na koniec otwieramy obraz i używamy standardowej przeglądarki obrazów do jego wyświetlenia: - - ```python - image = Image.open(image_path) - image.show() - ``` - -### Więcej szczegółów na temat generowania obrazów - -Przyjrzyjmy się dokładniej kodowi, który generuje obraz: - -```python -generation_response = openai.Image.create( - prompt='Królik na koniu, trzymający lizaka, na mglistej łące, gdzie rosną żonkile', # Wprowadź tutaj swój tekst promptu - size='1024x1024', - n=2, - temperature=0, - ) -``` - -- **prompt** to tekst promptu, który jest używany do generowania obrazu. W tym przypadku używamy promptu "Królik na koniu, trzymający lizaka, na mglistej łące, gdzie rosną żonkile". -- **size** to rozmiar generowanego obrazu. W tym przypadku generujemy obraz o wymiarach 1024x1024 pikseli. -- **n** to liczba generowanych obrazów. W tym przypadku generujemy dwa obrazy. -- **temperature** to parametr, który kontroluje losowość wyjścia modelu Generatywnej SI. Temperatura to wartość między 0 a 1, gdzie 0 oznacza, że wyjście jest deterministyczne, a 1 oznacza, że wyjście jest losowe. Domyślna wartość to 0,7. - -Jest więcej rzeczy, które możesz zrobić z obrazami, które omówimy w następnej sekcji. - -## Dodatkowe możliwości generowania obrazów - -Do tej pory widziałeś, jak mogliśmy wygenerować obraz za pomocą kilku linii w Pythonie. Jednak jest więcej rzeczy, które możesz zrobić z obrazami. - -Możesz również wykonać następujące czynności: - -- **Przeprowadzać edycje**. Dostarczając istniejący obraz, maskę i prompt, możesz zmienić obraz. Na przykład, możesz dodać coś do części obrazu. Wyobraź sobie nasz obraz królika, możesz dodać kapelusz do królika. Możesz to zrobić, dostarczając obraz, maskę (identyfikującą część obszaru do zmiany) i tekstowy prompt mówiący, co należy zrobić. - - ```python - response = openai.Image.create_edit( - image=open("base_image.png", "rb"), - mask=open("mask.png", "rb"), - prompt="Obraz królika z kapeluszem na głowie.", - n=1, - size="1024x1024" - ) - image_url = response['data'][0]['url'] - ``` - - Obraz bazowy zawierałby tylko królika, ale końcowy obraz miałby kapelusz na głowie królika. - -- **Tworzenie wariacji**. Idea polega na tym, że bierzesz istniejący obraz i prosisz o utworzenie jego wariacji. Aby utworzyć wariację, dostarczasz obraz i tekstowy prompt, a kod wygląda tak: - - ```python - response = openai.Image.create_variation( - image=open("bunny-lollipop.png", "rb"), - n=1, - size="1024x1024" - ) - image_url = response['data'][0]['url'] - ``` - - > Uwaga, ta funkcja jest obsługiwana tylko przez OpenAI - -## Temperatura - -Temperatura to parametr, który kontroluje losowość wyjścia modelu Generatywnej SI. Temperatura to wartość między 0 a 1, gdzie 0 oznacza, że wyjście jest deterministyczne, a 1 oznacza, że wyjście jest losowe. Domyślna wartość to 0,7. - -Spójrzmy na przykład, jak działa temperatura, uruchamiając ten prompt dwukrotnie: - -> Prompt: "Królik na koniu, trzymający lizaka, na mglistej łące, gdzie rosną żonkile" - -![Królik na koniu trzymający lizaka, wersja 1](../../images/v1-generated-image.png?WT.mc_id=academic-105485-koreyst) - -Teraz uruchommy ten sam prompt jeszcze raz, żeby zobaczyć, że nie otrzymamy dwa razy tego samego obrazu: - -![Wygenerowany obraz królika na koniu](../../images/v2-generated-image.png?WT.mc_id=academic-105485-koreyst) - -Jak widać, obrazy są podobne, ale nie takie same. Spróbujmy zmienić wartość temperatury na 0,1 i zobaczmy, co się stanie: - -```python - generation_response = openai.Image.create( - prompt='Królik na koniu, trzymający lizaka, na mglistej łące, gdzie rosną żonkile', # Wprowadź tutaj swój tekst promptu - size='1024x1024', - n=2 - ) -``` - -### Zmiana temperatury - -Spróbujmy więc uczynić odpowiedź bardziej deterministyczną. Mogliśmy zaobserwować z dwóch wygenerowanych obrazów, że na pierwszym obrazie jest królik, a na drugim jest koń, więc obrazy znacznie się różnią. - -Zmieńmy więc nasz kod i ustawmy temperaturę na 0, w następujący sposób: - -```python -generation_response = openai.Image.create( - prompt='Królik na koniu, trzymający lizaka, na mglistej łące, gdzie rosną żonkile', # Wprowadź tutaj swój tekst promptu - size='1024x1024', - n=2, - temperature=0 - ) -``` - -Teraz, gdy uruchomisz ten kod, otrzymasz te dwa obrazy: - -- ![Temperatura 0, v1](../../images/v1-temp-generated-image.png?WT.mc_id=academic-105485-koreyst) -- ![Temperatura 0, v2](../../images/v2-temp-generated-image.png?WT.mc_id=academic-105485-koreyst) - -Tutaj wyraźnie widać, jak obrazy są bardziej do siebie podobne. - -## Jak definiować granice dla aplikacji za pomocą metapromptów - -Dzięki naszemu demo możemy już generować obrazy dla naszych klientów. Jednak musimy stworzyć pewne granice dla naszej aplikacji. - -Na przykład, nie chcemy generować obrazów, które nie są bezpieczne dla pracy lub nie są odpowiednie dla dzieci. - -Możemy to zrobić za pomocą _metapromptów_. Metaprompty to tekstowe instrukcje używane do kontrolowania wyjścia modelu Generatywnej SI. Na przykład, możemy użyć metapromptów do kontrolowania wyjścia i zapewnienia, że generowane obrazy są bezpieczne dla pracy lub odpowiednie dla dzieci. - -### Jak to działa? - -Jak działają metaprompty? - -Metaprompty to tekstowe instrukcje używane do kontrolowania wyjścia modelu Generatywnej SI, są umieszczane przed właściwym promptem tekstowym i służą do kontrolowania wyjścia modelu oraz są wbudowane w aplikacje, aby kontrolować wyjście modelu. Łączą wejściowy prompt i metaprompt w jeden tekstowy prompt. - -Przykładem metapromptu może być: - -```text -Jesteś asystentem projektanta, który tworzy obrazy dla dzieci. - -Obraz musi być bezpieczny dla pracy i odpowiedni dla dzieci. - -Obraz musi być kolorowy. - -Obraz musi być w orientacji poziomej. - -Obraz musi mieć proporcje 16:9. - -Nie uwzględniaj żadnych danych wejściowych z poniższych, które nie są bezpieczne dla pracy lub odpowiednie dla dzieci. - -(Dane wejściowe) - -``` - -Teraz zobaczmy, jak możemy użyć metapromptów w naszym demo. - -```python -disallow_list = "miecze, przemoc, krew, gore, nagość, treści seksualne, treści dla dorosłych, tematy dla dorosłych, język dla dorosłych, humor dla dorosłych, żarty dla dorosłych, sytuacje dla dorosłych, dla dorosłych" - -meta_prompt =f"""Jesteś asystentem projektanta, który tworzy obrazy dla dzieci. - -Obraz musi być bezpieczny dla pracy i odpowiedni dla dzieci. - -Obraz musi być kolorowy. - -Obraz musi być w orientacji poziomej. - -Obraz musi mieć proporcje 16:9. - -Nie uwzględniaj żadnych danych wejściowych z poniższych, które nie są bezpieczne dla pracy lub odpowiednie dla dzieci. -{disallow_list} -""" - -prompt = f"{meta_prompt} -Utwórz obraz królika na koniu, trzymającego lizaka" - -# TODO dodaj żądanie wygenerowania obrazu -``` - -Z powyższego promptu możesz zobaczyć, jak wszystkie tworzone obrazy uwzględniają metaprompt. - -## Zadanie - umożliwmy uczniom tworzenie - -Przedstawiliśmy Edu4All na początku tej lekcji. Teraz czas umożliwić uczniom generowanie obrazów do ich zadań. - -Uczniowie będą tworzyć obrazy do swoich zadań zawierające zabytki - dokładnie jakie zabytki, zależy od uczniów. Uczniowie są proszeni o wykorzystanie swojej kreatywności w tym zadaniu, aby umieścić te zabytki w różnych kontekstach. - -## Rozwiązanie - -Oto jedno z możliwych rozwiązań: - -```python -import openai -import os -import requests -from PIL import Image -import dotenv - -# import dotenv -dotenv.load_dotenv() - -# Pobierz endpoint i klucz ze zmiennych środowiskowych -openai.api_base = "" -openai.api_key = "" - -# Przypisz wersję API (DALL-E jest obecnie obsługiwany tylko dla wersji API 2023-06-01-preview) -openai.api_version = '2023-06-01-preview' -openai.api_type = 'azure' - -disallow_list = "miecze, przemoc, krew, gore, nagość, treści seksualne, treści dla dorosłych, tematy dla dorosłych, język dla dorosłych, humor dla dorosłych, żarty dla dorosłych, sytuacje dla dorosłych, dla dorosłych" - -meta_prompt = f"""Jesteś asystentem projektanta, który tworzy obrazy dla dzieci. - -Obraz musi być bezpieczny dla pracy i odpowiedni dla dzieci. - -Obraz musi być kolorowy. - -Obraz musi być w orientacji poziomej. - -Obraz musi mieć proporcje 16:9. - -Nie uwzględniaj żadnych danych wejściowych z poniższych, które nie są bezpieczne dla pracy lub odpowiednie dla dzieci. -{disallow_list}""" - -prompt = f"""{meta_prompt} -Wygeneruj obraz Łuku Triumfalnego w Paryżu, Francja, w wieczornym świetle, z małym dzieckiem trzymającym misia. -"""" - -try: - # Utwórz obraz za pomocą API generowania obrazów - generation_response = openai.Image.create( - prompt=prompt, # Wprowadź tutaj swój tekst promptu - size='1024x1024', - n=2, - temperature=0, - ) - # Ustaw katalog dla przechowywanego obrazu - image_dir = os.path.join(os.curdir, 'images') - - # Jeśli katalog nie istnieje, utwórz go - if not os.path.isdir(image_dir): - os.mkdir(image_dir) - - # Zainicjuj ścieżkę obrazu (uwaga: typ pliku powinien być png) - image_path = os.path.join(image_dir, 'generated-image.png') - - # Pobierz wygenerowany obraz - image_url = generation_response["data"][0]["url"] # wyodrębnij URL obrazu z odpowiedzi - generated_image = requests.get(image_url).content # pobierz obraz - with open(image_path, "wb") as image_file: - image_file.write(generated_image) - - # Wyświetl obraz w domyślnej przeglądarce obrazów - image = Image.open(image_path) - image.show() - -# złap wyjątki -except openai.InvalidRequestError as err: - print(err) -``` - -## Świetna praca! Kontynuuj naukę - -Po ukończeniu tej lekcji, sprawdź naszą [kolekcję materiałów edukacyjnych Generatywnej SI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst), aby dalej podnosić swoją wiedzę o Generatywnej SI! - -Przejdź do Lekcji 10, gdzie przyjrzymy się [budowaniu aplikacji AI z wykorzystaniem narzędzi niskokodowych](../../../10-building-low-code-ai-applications/translations/pl/README.md?WT.mc_id=academic-105485-koreyst) diff --git a/09-building-image-applications/translations/pt-br/README.md b/09-building-image-applications/translations/pt-br/README.md deleted file mode 100644 index ab308e0805..0000000000 --- a/09-building-image-applications/translations/pt-br/README.md +++ /dev/null @@ -1,504 +0,0 @@ -# Criando aplicativos de geração de imagens - -[![Building Image Generation Applications](../../images/09-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson9-gh?WT.mc_id=academic-105485-koreyst) - -Ainda há muito mais que os LLMs podem fazer além da geração de texto. Também é possível gerar imagens a partir de descrições de texto. Ter imagens como modalidade pode ser altamente útil em uma série de áreas, desde MedTech, arquitetura, turismo, desenvolvimento de jogos e muito mais. Neste capítulo, veremos os dois modelos de geração de imagens mais populares, DALL-E e Midjourney. - -## Introduction - -In this lesson, we will cover: - -- Image generation and why it's useful. -- DALL-E and Midjourney, what they are, and how they work. -- How you would build an image generation app. - -## Learning Goals - -After completing this lesson, you will be able to: - -- Build an image generation application. -- Define boundaries for your application with meta prompts. -- Work with DALL-E and Midjourney. - -## Why build an image generation application? - -Image generation applications are a great way to explore the capabilities of Generative AI. They can be used for, for example: - -- **Image editing and synthesis**. You can generate images for a variety of use cases, such as image editing and image synthesis. - -- **Applied to a variety of industries**. They can also be used to generate images for a variety of industries like Medtech, Tourism, Game development and more. - -## Scenario: Edu4All - -As part of this lesson, we will continue to work with our startup, Edu4All, in this lesson. The students will create images for their assessments, exactly what images is up to the students, but they could be illustrations for their own fairytale or create a new character for their story or help them visualize their ideas and concepts. - -Here's what Edu4All's students could generate for example if they're working in class on monuments: - -![Edu4All startup, class on monuments, Eiffel Tower](../../images/startup.png?WT.mc_id=academic-105485-koreyst) - -using a prompt like - -## Introdução - -Nesta lição, abordaremos: - -- Geração de imagens e por que é útil. -- DALL-E e Midjourney, o que são e como funcionam. -- Como criar uma aplicação de geração de imagens. - -## Metas de Aprendizado - -Após completar esta lição, você será capaz de: - -- Criar uma aplicação de geração de imagens. -- Definir limites para o seu aplicativo com meta-prompts. -- Trabalhar com DALL-E e Midjourney. - -## Por que criar um aplicativo de geração de imagens? - -Aplicativos de geração de imagens são uma ótima maneira de explorar as capacidades da Inteligência Artificial Generativa. Eles podem ser usados, por exemplo: - -- **Edição e síntese de imagens**: Você pode gerar imagens para uma variedade de casos de uso, como edição e síntese de imagens. - -- **Aplicados a várias indústrias**: Eles também podem ser usados para gerar imagens para diversas indústrias como: Medtech, Turismo, Desenvolvimento de Jogos e muito mais. - -## Cenário: Edu4All - -Como parte desta lição, continuaremos a trabalhar com nossa startup, Edu4All. Os estudantes criarão imagens para suas avaliações, exatamente quais imagens ficam a critério dos estudantes, mas podem ser ilustrações para seu próprio conto de fadas, criar um novo personagem para sua história ou ajudá-los a visualizar suas ideias e conceitos. - -Veja o que os estudantes da Edu4All poderiam gerar, por exemplo, se estivessem trabalhando em sala de aula sobre monumentos: - -![Edu4All startup, aula sobre monumentos, Torre Eiffel](../../images/startup.png?WT.mc_id=academic-105485-koreyst) - -usando um prompt como: - -> "Dog next to Eiffel Tower in early morning sunlight" - -## O que é DALL-E e Midjourney? - -[DALL-E](https://openai.com/dall-e-2?WT.mc_id=academic-105485-koreyst) e [Midjourney](https://www.midjourney.com/?WT.mc_id=academic-105485-koreyst) são dois dos modelos de geração de imagens mais populares, eles permitem que você use prompts para gerar imagens. - -### DALL-E - -Vamos começar com o DALL-E, que é um modelo de Inteligência Artificial Generativa que gera imagens a partir de descrições de texto. - -> [DALL-E é uma combinação de dois modelos, CLIP e atenção difusa](https://towardsdatascience.com/openais-dall-e-and-clip-101-a-brief-introduction-3a4367280d4e?WT.mc_id=academic-105485-koreyst). - -- **CLIP** é um modelo que gera embeddings, que são representações numéricas de dados, a partir de imagens e texto. - -- **Atenção difusa** é um modelo que gera imagens a partir de embeddings. O DALL-E é treinado em um conjunto de dados de imagens e texto e pode ser usado para gerar imagens a partir de descrições de texto. Por exemplo, o DALL-E pode ser usado para gerar imagens de um gato com chapéu ou um cachorro com um moicano. - -### Midjourney - -Midjourney funciona de maneira semelhante ao DALL-E, gerando imagens a partir de prompts de texto. Midjourney também pode ser usado para gerar imagens usando prompts como "um gato com chapéu" ou "um cachorro com um moicano". - -![Imagem gerada pelo Midjourney, pombo mecânico](https://upload.wikimedia.org/wikipedia/commons/thumb/8/8c/Rupert_Breheny_mechanical_dove_eca144e7-476d-4976-821d-a49c408e4f36.png/440px-Rupert_Breheny_mechanical_dove_eca144e7-476d-4976-821d-a49c408e4f36.png?WT.mc_id=academic-105485-koreyst) -_Créditos da imagem: Wikipedia, imagem gerada pelo Midjourney_ - -## Como DALL-E e Midjourney Funcionam - -Primeiro, [DALL-E](https://arxiv.org/pdf/2102.12092.pdf?WT.mc_id=academic-105485-koreyst). DALL-E é um modelo de Inteligência Artificial Generativa baseado na arquitetura do transformer com um _transformer autoregressivo_. - -Um _transformer autoregressivo_ define como um modelo gera imagens a partir de descrições de texto, gerando um pixel de cada vez e, em seguida, usando os pixels gerados para gerar o próximo pixel. Passando por várias camadas em uma rede neural, até que a imagem esteja completa. - -Com esse processo, o DALL-E controla atributos, objetos, características e muito mais na imagem que gera. No entanto, DALL-E 2 e 3 têm mais controle sobre a imagem gerada. - -## Criando seu primeiro aplicativo de geração de imagens - -Então, o que é necessário para construir um aplicativo de geração de imagens? Você precisa das seguintes bibliotecas: - -- **python-dotenv**, é altamente recomendável usar esta biblioteca para manter suas informações confidenciais em um arquivo _.env_ longe do código. -- **openai**, esta biblioteca é o que você usará para interagir com a API da OpenAI. -- **pillow**, para trabalhar com imagens em Python. -- **requests**, para ajudar você a fazer solicitações HTTP. - -1. Crie um arquivo _.env_ com o seguinte conteúdo: - - ```text - AZURE_OPENAI_ENDPOINT= - AZURE_OPENAI_API_KEY= - ``` - - Encontre essas informações no Portal do Azure para o seu recurso na seção "Chaves e Endpoint". - -1. Cole as bibliotecas acima em um arquivo chamado _requirements.txt_ assim: - - ```text - python-dotenv - openai - pillow - requests - ``` - -1. Depois, crie um ambiente virtual e instale as bibliotecas: - - ```bash - python3 -m venv venv - source venv/bin/activate - pip install -r requirements.txt - ``` - - Para Windows, use os seguintes comandos para criar e ativar seu ambiente virtual: - - ```bash - python3 -m venv venv - venv\Scripts\activate.bat - ``` - -1. Adicione o seguinte código em um arquivo chamado _app.py_: - - ```python - import openai - import os - import requests - from PIL import Image - import dotenv - - # import dotenv - dotenv.load_dotenv() - - # Get endpoint and key from environment variables - openai.api_base = os.environ['AZURE_OPENAI_ENDPOINT'] - openai.api_key = os.environ['AZURE_OPENAI_API_KEY'] - - # Assign the API version (DALL-E is currently supported for the 2023-06-01-preview API version only) - openai.api_version = '2023-06-01-preview' - openai.api_type = 'azure' - - - try: - # Create an image by using the image generation API - generation_response = openai.Image.create( - prompt='Bunny on horse, holding a lollipop, on a foggy meadow where it grows daffodils', # Enter your prompt text here - size='1024x1024', - n=2, - temperature=0, - ) - # Set the directory for the stored image - image_dir = os.path.join(os.curdir, 'images') - - # If the directory doesn't exist, create it - if not os.path.isdir(image_dir): - os.mkdir(image_dir) - - # Initialize the image path (note the filetype should be png) - image_path = os.path.join(image_dir, 'generated-image.png') - - # Retrieve the generated image - image_url = generation_response["data"][0]["url"] # extract image URL from response - generated_image = requests.get(image_url).content # download the image - with open(image_path, "wb") as image_file: - image_file.write(generated_image) - - # Display the image in the default image viewer - image = Image.open(image_path) - image.show() - - # catch exceptions - except openai.InvalidRequestError as err: - print(err) - - ``` - -Vamos explicar este código: - -- Primeiro, importamos as bibliotecas de que precisamos, incluindo as bibliotecas OpenAI, dotenv, request e Pillow. - - ```python - import openai - import os - import requests - from PIL import Image - import dotenv - ``` - -- Depois, carregamos as variáveis de ambiente do arquivo _.env_. - - ```python - # import dotenv - dotenv.load_dotenv() - ``` - -- Após isso, definimos o endpoint, a chave para a API OpenAI, a versão e o tipo. - - ```python - # Get endpoint and key from environment variables - openai.api_base = os.environ['AZURE_OPENAI_ENDPOINT'] - openai.api_key = os.environ['AZURE_OPENAI_API_KEY'] - - # add version and type, Azure specific - openai.api_version = '2023-06-01-preview' - openai.api_type = 'azure' - ``` - -- Depois, geramos a imagem: - - ```python - # Create an image by using the image generation API - generation_response = openai.Image.create( - prompt='Bunny on horse, holding a lollipop, on a foggy meadow where it grows daffodils', # Enter your prompt text here - size='1024x1024', - n=2, - temperature=0, - ) - ``` - - Acima está o código que responde com um objeto JSON que contém a URL da imagem gerada. Podemos usar a URL para baixar a imagem e salvá-la em um arquivo. - -- Finalmente, abrimos a imagem e usamos o visualizador de imagens padrão para exibi-la: - - ```python - image = Image.open(image_path) - image.show() - ``` - -### Mais detalhes sobre a geração da imagem - -Vamos dar uma olhada no código que gera a imagem com mais detalhes: - -```python -generation_response = openai.Image.create( - prompt='Bunny on horse, holding a lollipop, on a foggy meadow where it grows daffodils', # Enter your prompt text here - size='1024x1024', - n=2, - temperature=0, - ) -``` - -- **prompt** é o prompt de texto usado para gerar a imagem. Neste caso, estamos usando o prompt: "Bunny on horse, holding a lollipop, on a foggy meadow where it grows daffodils". - -- **size** é o tamanho da imagem gerada. Neste caso, estamos gerando uma imagem de 1024x1024 pixels. - -- **n** é o número de imagens geradas. Neste caso, estamos gerando duas imagens. - -- **temperature** é um parâmetro que controla a aleatoriedade da saída de um modelo de Inteligência Artificial Generativa. A temperatura é um valor entre 0 e 1, onde 0 significa que a saída é determinística e 1 significa que a saída é aleatória. O valor padrão é 0.7. - -Há mais coisas que você pode fazer com imagens que abordaremos na próxima seção. - -## Mais capacidades de geração de imagens - -Você viu até agora como conseguimos gerar uma imagem usando algumas linhas em Python. No entanto, há mais coisas que você pode fazer com imagens. - -Você também pode fazer o seguinte: - -- **Perform edits**. By providing an existing image a mask and a prompt, you can alter an image. For example, you can add something to a portion of an image. Imagine our bunny image, you can add a hat to the bunny. How you would do that is by providing the image, a mask (identifying the part of the area for the change) and a text prompt to say what should be done. - -- **Realizar edições**: Ao fornecer uma imagem existente, uma máscara e um prompt, você pode alterar uma imagem. Por exemplo, você pode adicionar algo a uma parte de uma imagem. Imagine nossa imagem de coelho, você pode adicionar um chapéu ao coelho. Como você faria isso é fornecendo a imagem, uma máscara (identificando a parte da área para a mudança) e um prompt de texto para dizer o que deve ser feito. - - ```python - response = openai.Image.create_edit( - image=open("base_image.png", "rb"), - mask=open("mask.png", "rb"), - prompt="An image of a rabbit with a hat on its head.", - n=1, - size="1024x1024" - ) - image_url = response['data'][0]['url'] - ``` - - A base da imagem conteria apenas o coelho, mas a imagem final teria o chapéu no coelho. - -- **Criar variações**: A ideia é que você pegue uma imagem existente e peça que sejam criadas variações. Para criar uma variação, você fornece uma imagem e um prompt de texto e o código é assim: - - ```python - response = openai.Image.create_variation( - image=open("bunny-lollipop.png", "rb"), - n=1, - size="1024x1024" - ) - image_url = response['data'][0]['url'] - ``` - - > Observação: isso é suportado apenas no OpenAI - -## Temperatura - -Temperatura é um parâmetro que controla a aleatoriedade da saída de um modelo de Inteligência Artificial Generativa. A temperatura é um valor entre 0 e 1, onde 0 significa que a saída é determinística e 1 significa que a saída é aleatória. O valor padrão é 0.7. - -Vamos dar uma olhada em um exemplo de como a temperatura funciona, executando este prompt duas vezes: - -> Prompt : "Bunny on horse, holding a lollipop, on a foggy meadow where it grows daffodils" - -![Bunny on a horse holding a lollipop, version 1](../../images/v1-generated-image.png?WT.mc_id=academic-105485-koreyst) - -Agora, vamos executar o mesmo prompt apenas para ver que não obteremos a mesma imagem duas vezes: - -![Generated image of bunny on horse](../../images/v2-generated-image.png?WT.mc_id=academic-105485-koreyst) - -Como você pode ver, as imagens são semelhantes, mas não são as mesmas. Vamos tentar mudar o valor da temperatura para 0.1 e ver o que acontece: - -```python - generation_response = openai.Image.create( - prompt='Bunny on horse, holding a lollipop, on a foggy meadow where it grows daffodils', # Enter your prompt text here - size='1024x1024', - n=2 - ) -``` - -### Alterando a temperatura - -Agora, vamos tentar tornar a resposta mais determinística. Podemos observar pelas duas imagens que geramos que na primeira imagem há um coelho e na segunda imagem há um cavalo, então as imagens variam muito. - -Vamos alterar nosso código e definir a temperatura para 0, assim: - -```python -generation_response = openai.Image.create( - prompt='Bunny on horse, holding a lollipop, on a foggy meadow where it grows daffodils', # Enter your prompt text here - size='1024x1024', - n=2, - temperature=0 - ) -``` - -Agora quando você executar este código, você obtém essas duas imagens: - -- ![Temperature 0, v1](../../images/v1-temp-generated-image.png?WT.mc_id=academic-105485-koreyst) -- ![Temperature 0 , v2](../../images/v2-temp-generated-image.png?WT.mc_id=academic-105485-koreyst) - -Aqui você pode ver claramente como as imagens se assemelham mais umas às outras. - -## Como definir limites para seu aplicativo com metaprompts - -Com a nossa demonstração, já podemos gerar imagens para nossos clientes. No entanto, precisamos estabelecer algumas limitações para nossa aplicação. - -Por exemplo, não queremos gerar imagens que não sejam seguras para o trabalho ou que não sejam apropriadas para crianças. - -Podemos fazer isso com _metaprompts_. Metaprompts são prompts de texto que são usados para controlar a saída de um modelo de IA generativa. Por exemplo, podemos usar metaprompts para controlar a saída e garantir que as imagens geradas sejam seguras para o trabalho ou apropriadas para crianças. - -### Como funciona? - -Agora, como os metaprompts funcionam? - -Metaprompts são prompts de texto usados para controlar a saída de um modelo de IA generativa. Eles são posicionados antes do prompt de texto e são usados para controlar a saída do modelo, sendo incorporados em aplicativos para controlar a saída do modelo. Encapsulando a entrada do prompt e a entrada do metaprompt em um único prompt de texto. - -Um exemplo de metaprompt seria o seguinte: - -````text -You are an assistant designer that creates images for children. - -The image needs to be safe for work and appropriate for children. - -The image needs to be in color. - -The image needs to be in landscape orientation. - -The image needs to be in a 16:9 aspect ratio. - -Do not consider any input from the following that is not safe for work or appropriate for children. - -(Input) - -```text - -Now, let's see how we can use meta prompts in our demo. - -```python -disallow_list = "swords, violence, blood, gore, nudity, sexual content, adult content, adult themes, adult language, adult humor, adult jokes, adult situations, adult" - -meta_prompt =f"""You are an assistant designer that creates images for children. - -The image needs to be safe for work and appropriate for children. - -The image needs to be in color. - -The image needs to be in landscape orientation. - -The image needs to be in a 16:9 aspect ratio. - -Do not consider any input from the following that is not safe for work or appropriate for children. -{disallow_list} -""" - -prompt = f"{meta_prompt} -Create an image of a bunny on a horse, holding a lollipop" - -# TODO add request to generate image -```` - -No prompt acima, você pode ver como todas as imagens sendo criadas consideram o metaprompt. - -## Tarefa - vamos habilitar os estudantes - -Nós introduzimos o Edu4All no início desta lição. Agora é hora de permitir que os estudantes gerem imagens para suas avaliações. - -Os estudantes criarão imagens para suas avaliações contendo monumentos, exatamente quais monumentos ficam a critério dos estudantes. Os estudantes são convidados a usar sua criatividade nesta tarefa para colocar esses monumentos em diferentes contextos. - -## Solução - -Aqui está uma possível solução: - -```python -import openai -import os -import requests -from PIL import Image -import dotenv - -# import dotenv -dotenv.load_dotenv() - -# Get endpoint and key from environment variables -openai.api_base = "" -openai.api_key = "" - -# Assign the API version (DALL-E is currently supported for the 2023-06-01-preview API version only) -openai.api_version = '2023-06-01-preview' -openai.api_type = 'azure' - -disallow_list = "swords, violence, blood, gore, nudity, sexual content, adult content, adult themes, adult language, adult humor, adult jokes, adult situations, adult" - -meta_prompt =f"""You are an assistant designer that creates images for children. - -The image needs to be safe for work and appropriate for children. - -The image needs to be in color. - -The image needs to be in landscape orientation. - -The image needs to be in a 16:9 aspect ratio. - -Do not consider any input from the following that is not safe for work or appropriate for children. -{disallow_list}""" - -prompt = f""" -Generate monument of the Arc of Triumph in Paris, France, in the evening light with a small child holding a Teddy looks on. -"""" - -try: - # Create an image by using the image generation API - generation_response = openai.Image.create( - prompt=prompt, # Enter your prompt text here - size='1024x1024', - n=2, - temperature=0, - ) - # Set the directory for the stored image - image_dir = os.path.join(os.curdir, 'images') - - # If the directory doesn't exist, create it - if not os.path.isdir(image_dir): - os.mkdir(image_dir) - - # Initialize the image path (note the filetype should be png) - image_path = os.path.join(image_dir, 'generated-image.png') - - # Retrieve the generated image - image_url = generation_response["data"][0]["url"] # extract image URL from response - generated_image = requests.get(image_url).content # download the image - with open(image_path, "wb") as image_file: - image_file.write(generated_image) - - # Display the image in the default image viewer - image = Image.open(image_path) - image.show() - -# catch exceptions -except openai.InvalidRequestError as err: - print(err) -``` - -## Excelente trabalho! Continue seu aprendizado - -Após completar esta lição, confira nossa [coleção de aprendizado de IA generativa](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) para continuar a aprimorar seus conhecimentos sobre IA generativa! - -Vamos partir agora para a Lição 10, onde veremos como [Criando aplicativos de IA com Low Code](../../../10-building-low-code-ai-applications/translations/pt-br/README.md?WT.mc_id=academic-105485-koreyst) diff --git a/09-building-image-applications/translations/tw/README.md b/09-building-image-applications/translations/tw/README.md deleted file mode 100644 index f213fcaf38..0000000000 --- a/09-building-image-applications/translations/tw/README.md +++ /dev/null @@ -1,466 +0,0 @@ -# 建構影像生成應用程式 - -[![建構影像生成應用](../../images/09-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson9-gh?WT.mc_id=academic-105485-koreyst) - -在 LLMs 中,除了文字生成之外還有更多的應用。也可以從文字描述生成圖像。將圖像作為一種模態在許多領域中都非常有用,從醫療技術、建築、旅遊、遊戲開發等。在本章中,我們將探討兩個最受歡迎的圖像生成模型,DALL-E 和 Midjourney。 - -## 簡介 - -在本課程中,我們將涵蓋: - -- 圖像生成及其用途。 -- DALL-E 和 Midjourney,它們是什麼以及它們如何運作。 -- 如何建構一個圖像生成應用程式。 - -## 學習目標 - -完成本課程後,你將能夠: - -- 建立影像生成應用程式。 -- 使用 meta 提示為您的應用程式定義邊界。 -- 使用 DALL-E 和 Midjourney。 - -## 為什麼要建構一個圖像生成應用程式? - -圖像生成應用程式是一個探索生成式 AI 能力的好方法。它們可以用於,例如: - -- **圖片編輯和合成**。您可以為各種使用案例生成圖片,例如圖片編輯和圖片合成。 - -- **應用於多種行業**。它們還可以用於為醫療技術、旅遊業、遊戲開發等多種行業生成圖片。 - -## 情境: Edu4All - -在這節課中,我們將繼續與我們的初創公司Edu4All合作。學生們將為他們的評估創建圖像,具體創建什麼圖像由學生決定,但他們可以為自己的童話故事創作插圖,或者為他們的故事創建一個新角色,或幫助他們將自己的想法和概念具象化。 - -以下是 Edu4All 的學生在課堂上研究紀念碑時可能生成的範例: - -![Edu4All startup, 類別 on monuments, Eiffel Tower](../../images/startup.png?WT.mc_id=academic-105485-koreyst) - -使用提示語如 - -> "早晨陽光下埃菲爾鐵塔旁的狗" - -## 什麼是DALL-E和Midjourney? - -[DALL-E](https://openai.com/dall-e-2?WT.mc_id=academic-105485-koreyst) 和 [Midjourney](https://www.midjourney.com/?WT.mc_id=academic-105485-koreyst) 是兩個最受歡迎的圖像生成模型,它們允許你使用提示來生成圖像。 - -### DALL-E - -讓我們從 DALL-E 開始,這是一個生成式 AI 模型,可以從文字描述生成圖像。 - -> [DALL-E 是兩個模型的組合,CLIP 和擴散注意力](https://towardsdatascience.com/openais-dall-e-and-clip-101-a-brief-introduction-3a4367280d4e?WT.mc_id=academic-105485-koreyst)。 - -- **CLIP**,是一個從圖像和文本中生成數值資料表示(嵌入)的模型。 - -- **Diffused attention**,是一個從嵌入生成圖像的模型。DALL-E 是在圖像和文本數據集上訓練的,可以用來從文本描述生成圖像。例如,DALL-E 可以用來生成戴帽子的貓或有莫霍克髮型的狗的圖像。 - -### Midjourney - -Midjourney 的工作方式類似於 DALL-E,它從文本提示生成圖像。Midjourney 也可以用來生成圖像,使用像「戴帽子的貓」或「有莫霍克髮型的狗」這樣的提示。 - -![Image generated by Midjourney, mechanical pigeon](https://upload.wikimedia.org/wikipedia/commons/thumb/8/8c/Rupert_Breheny_mechanical_dove_eca144e7-476d-4976-821d-a49c408e4f36.png/440px-Rupert_Breheny_mechanical_dove_eca144e7-476d-4976-821d-a49c408e4f36.png?WT.mc_id=academic-105485-koreyst) -_圖片來源 Wikipedia, 圖片由 Midjourney 生成_ - -## DALL-E 和 Midjourney 如何運作 - -首先,[DALL-E](https://arxiv.org/pdf/2102.12092.pdf?WT.mc_id=academic-105485-koreyst)。DALL-E 是一個基於 transformer 架構的生成式 AI 模型,具有 _自回歸 transformer_。 - -一個_自回歸變壓器_定義了模型如何從文字描述生成圖像,它一次生成一個像素,然後使用生成的像素來生成下一個像素。通過神經網路的多層,直到圖像完成。 - -透過這個過程,DALL-E 控制圖像中生成的屬性、物件、特徵等。然而,DALL-E 2 和 3 對生成的圖像有更多的控制。 - -## 建構你的第一個圖像生成應用程式 - -那麼,建構一個影像生成應用程式需要什麼呢?你需要以下的函式庫: - -- **python-dotenv**,強烈建議您使用這個函式庫將您的秘密保存在 _.env_ 文件中,遠離程式碼。 -- **openai**,這個函式庫是您用來與 OpenAI API 互動的工具。 -- **pillow**,用於在 Python 中處理圖像。 -- **requests**,幫助您發出 HTTP 請求。 - -1. 建立一個名為 _.env_ 的檔案,內容如下: - - ```text - AZURE_OPENAI_ENDPOINT= - AZURE_OPENAI_API_KEY= - ``` - - 在 Azure Portal 中找到你的資源的 "Keys and Endpoint" 部分來定位這些資訊。 - -1. 將上述函式庫收集到一個名為 _requirements.txt_ 的檔案中,如下所示: - - ```text - python-dotenv - openai - pillow - requests - ``` - -1. 接下來,建立虛擬環境並安裝函式庫: - - ```bash - python3 -m venv venv - source venv/bin/activate - pip install -r requirements.txt - ``` - - 對於 Windows,使用以下命令來建立和啟動你的虛擬環境: - - ```bash - python3 -m venv venv - venv\Scripts\activate.bat - ``` - -1. 在名為 _app.py_ 的檔案中添加以下程式碼: - - ```python - import openai - import os - import requests - from PIL import Image - import dotenv - - # import dotenv - dotenv.load_dotenv() - - # 從環境變數中獲取 endpoint 和 key - openai.api_base = os.environ['AZURE_OPENAI_ENDPOINT'] - openai.api_key = os.environ['AZURE_OPENAI_API_KEY'] - - # 指定 API 版本 (DALL-E 目前僅支持 2023-06-01-preview API 版本) - openai.api_version = '2023-06-01-preview' - openai.api_type = 'azure' - - - try: - # 使用圖像生成 API 來建立圖像 - generation_response = openai.Image.create( - prompt='Bunny on horse, holding a lollipop, on a foggy meadow where it grows daffodils', # 在此輸入你的提示文字 - size='1024x1024', - n=2, - temperature=0, - ) - # 設定存儲圖像的目錄 - image_dir = os.path.join(os.curdir, 'images') - - # 如果目錄不存在,則建立它 - if not os.path.isdir(image_dir): - os.mkdir(image_dir) - - # 初始化圖像路徑 (注意檔案類型應為 png) - image_path = os.path.join(image_dir, 'generated-image.png') - - # 獲取生成的圖像 - image_url = generation_response["data"][0]["url"] # 從回應中提取圖像 URL - generated_image = requests.get(image_url).content # 下載圖像 - with open(image_path, "wb") as image_file: - image_file.write(generated_image) - - # 在預設的圖像查看器中顯示圖像 - image = Image.open(image_path) - image.show() - - # 捕捉異常 - except openai.InvalidRequestError as err: - print(err) - - ``` - -讓我們解釋這段程式碼: - -- 首先,我們匯入所需的函式庫,包括 OpenAI 函式庫、dotenv 函式庫、requests 函式庫和 Pillow 函式庫。 - - ```python - import openai - import os - import requests - from PIL import Image - import dotenv - ``` - -- 接下來,我們從 _.env_ 檔案中載入環境變數。 - - ```python - # import dotenv - dotenv.load_dotenv() - ``` - -- 之後,我們設定 OpenAI API 的端點、金鑰、版本和類型。 - - ```python - # Get endpoint and key from environment variables - openai.api_base = os.environ['AZURE_OPENAI_ENDPOINT'] - openai.api_key = os.environ['AZURE_OPENAI_API_KEY'] - - # add version and type, Azure specific - openai.api_version = '2023-06-01-preview' - openai.api_type = 'azure' - ``` - -- 接下來,我們生成圖像: - - ```python - # Create an image by using the image generation API - generation_response = openai.Image.create( - prompt='Bunny on horse, holding a lollipop, on a foggy meadow where it grows daffodils', # Enter your prompt text here - size='1024x1024', - n=2, - temperature=0, - ) - ``` - - 上述程式碼回應一個包含生成圖像 URL 的 JSON 物件。我們可以使用該 URL 下載圖像並將其儲存到檔案中。 - -- 最後,我們打開圖像並使用標準圖像檢視器顯示它: - - ```python - image = Image.open(image_path) - image.show() - ``` - -### 生成圖像的更多資訊 - -讓我們更詳細地看看產生影像的程式碼: - -```python -generation_response = openai.Image.create( - prompt='兔子在馬上,手拿棒棒糖,在長滿水仙花的霧氣草地上', # 在此輸入您的提示文字 - size='1024x1024', - n=2, - temperature=0, - ) -``` - -- **prompt**, 是用來生成圖像的文本提示。在這個例子中,我們使用的提示是 "Bunny on horse, holding a lollipop, on a foggy meadow where it grows daffodils"。 -- **size**, 是生成圖像的大小。在這個例子中,我們生成的圖像大小為 1024x1024 像素。 -- **n**, 是生成的圖像數量。在這個例子中,我們生成了兩張圖像。 -- **temperature**, 是控制生成式 AI 模型輸出隨機性的參數。temperature 是一個介於 0 和 1 之間的值,其中 0 表示輸出是確定性的,1 表示輸出是隨機的。預設值為 0.7。 - -在下一節中,我們將介紹更多可以對影像進行的操作。 - -## 影像生成的額外功能 - -你已經看到我們如何使用幾行 Python 程式碼生成圖像。然而,你還可以對圖像做更多事情。 - -您也可以執行以下操作: - -- **進行編輯**。通過提供現有圖像、遮罩和提示,您可以更改圖像。例如,您可以在圖像的一部分添加一些東西。想像一下我們的兔子圖像,您可以給兔子加上一頂帽子。您可以通過提供圖像、遮罩(識別需要更改的區域部分)和文本提示來說明應該做什麼。 - - ```python - response = openai.Image.create_edit( - image=open("base_image.png", "rb"), - mask=open("mask.png", "rb"), - prompt="An image of a rabbit with a hat on its head.", - n=1, - size="1024x1024" - ) - image_url = response['data'][0]['url'] - ``` - - 基本圖像只包含兔子,但最終圖像會在兔子上加上一頂帽子。 - -- **建立變體**。這個想法是您採用現有圖像並要求創建變體。要建立變體,您需要提供圖像和文本提示,程式碼如下: - - ```python - response = openai.Image.create_variation( - image=open("bunny-lollipop.png", "rb"), - n=1, - size="1024x1024" - ) - image_url = response['data'][0]['url'] - ``` - - > 注意,這僅在 OpenAI 上支持。 - -## 溫度 - -溫度是一個控制生成式 AI 模型輸出隨機性的參數。溫度是一個介於 0 和 1 之間的值,其中 0 表示輸出是確定性的,1 表示輸出是隨機的。預設值是 0.7。 - -讓我們透過執行這個提示兩次來看看溫度如何運作的範例: - -> 提示 : "騎在馬上的兔子,手持棒棒糖,在長滿水仙花的霧濛濛的草地上" - -![兔子騎在馬上拿著棒棒糖,版本 1](../../images/v1-generated-image.png?WT.mc_id=academic-105485-koreyst) - -現在讓我們執行相同的提示,只是看看我們不會得到相同的圖像兩次: - -![生成的兔子騎馬圖像](../../images/v2-generated-image.png?WT.mc_id=academic-105485-koreyst) - -正如你所見,這些圖片相似,但不完全相同。讓我們嘗試將溫度值改為 0.1,看看會發生什麼事: - -```python - generation_response = openai.Image.create( - prompt='騎在馬上的兔子,手拿棒棒糖,在長滿水仙花的霧霾草地上', # 在此輸入您的提示文字 - size='1024x1024', - n=2 - ) -``` - -### 改變溫度 - -所以讓我們嘗試使回應更加確定。我們可以從我們生成的兩張圖片中觀察到,在第一張圖片中,有一隻兔子,而在第二張圖片中,有一匹馬,所以圖片差異很大。 - -讓我們因此更改我們的程式碼並將溫度設置為 0,如下所示: - -```python -generation_response = openai.Image.create( - prompt='騎在馬上的兔子,手拿棒棒糖,在長滿水仙花的霧濛濛的草地上', # 在此輸入您的提示文字 - size='1024x1024', - n=2, - temperature=0 - ) -``` - -現在當你執行這段程式碼, 你會得到這兩張圖片: - -- ![Temperature 0, v1](../../images/v1-temp-generated-image.png?WT.mc_id=academic-105485-koreyst) -- ![Temperature 0 , v2](../../images/v2-temp-generated-image.png?WT.mc_id=academic-105485-koreyst) - -在這裡你可以清楚地看到這些圖像彼此更相似。 - -## 如何使用 metaprompts 定義應用程式的邊界 - -透過我們的展示,我們已經可以為客戶生成圖像。然而,我們需要為我們的應用程式建立一些邊界。 - -例如,我們不希望生成不適合工作的圖像,或不適合兒童的圖像。 - -我們可以使用_metaprompts_來完成這個。Metaprompts 是用來控制生成式 AI 模型輸出的文字提示。例如,我們可以使用 metaprompts 來控制輸出,並確保生成的圖像是適合工作的,或適合兒童觀看的。 - -### 它是如何運作的? - -現在,meta 提示如何運作? - -Meta 提示是用來控制生成式 AI 模型輸出的文字提示,它們位於文字提示之前,用於控制模型的輸出並嵌入應用程式中以控制模型的輸出。將提示輸入和 Meta 提示輸入封裝在單一文字提示中。 - -一個 meta 提示的範例如下: - -````text -你是一名為兒童創作圖像的助理設計師。 - -圖像需要適合工作環境並適合兒童。 - -圖像需要是彩色的。 - -圖像需要是橫向的。 - -圖像需要是16:9的長寬比。 - -不要考慮以下任何不適合工作環境或不適合兒童的輸入。 - -(輸入) - -```text - -現在,讓我們看看如何在我們的展示中使用元提示。 - -```python -disallow_list = "swords, violence, blood, gore, nudity, sexual content, adult content, adult themes, adult language, adult humor, adult jokes, adult situations, adult" - -meta_prompt =f"""你是一名為兒童創作圖像的助理設計師。 - -圖像需要適合工作環境並適合兒童。 - -圖像需要是彩色的。 - -圖像需要是橫向的。 - -圖像需要是16:9的長寬比。 - -不要考慮以下任何不適合工作環境或不適合兒童的輸入。 -{disallow_list} -""" - -prompt = f"{meta_prompt} -創建一個兔子騎在馬上,手持棒棒糖的圖像" - -# TODO 添加生成圖像的請求 -```` - -從上述提示中,你可以看到所有被建立的圖像如何考慮 metaprompt。 - -## 作業 - 讓我們啟發學生 - -我們在本課開始時介紹了 Edu4All。現在是時候讓學生們為他們的評估生成圖像了。 - -學生將為他們的評估建立包含紀念碑的圖像,具體的紀念碑由學生自行決定。學生被要求在這項任務中發揮創意,將這些紀念碑放置在不同的情境中。 - -## 解決方案 - -以下是一種可能的解決方案: - -```python -import openai -import os -import requests -from PIL import Image -import dotenv - -# import dotenv -dotenv.load_dotenv() - -# 從環境變數中獲取端點和金鑰 -openai.api_base = "" -openai.api_key = "" - -# 指定 API 版本(DALL-E 目前僅支援 2023-06-01-preview API 版本) -openai.api_version = '2023-06-01-preview' -openai.api_type = 'azure' - -disallow_list = "swords, violence, blood, gore, nudity, sexual content, adult content, adult themes, adult language, adult humor, adult jokes, adult situations, adult" - -meta_prompt = f"""你是一位為兒童創作圖像的助理設計師。 - -圖像需要適合工作環境且適合兒童。 - -圖像需要是彩色的。 - -圖像需要是橫向的。 - -圖像需要是16:9的長寬比。 - -不要考慮任何不適合工作環境或不適合兒童的輸入。 -{disallow_list}""" - -prompt = f"""{metaprompt} -生成巴黎凱旋門的紀念碑,在傍晚的光線下,一個小孩抱著泰迪熊看著。 -"""" - -try: - # 使用圖像生成 API 建立圖像 - generation_response = openai.Image.create( - prompt=prompt, # 在此輸入提示文字 - size='1024x1024', - n=2, - temperature=0, - ) - # 設定儲存圖像的目錄 - image_dir = os.path.join(os.curdir, 'images') - - # 如果目錄不存在,則建立它 - if not os.path.isdir(image_dir): - os.mkdir(image_dir) - - # 初始化圖像路徑(注意文件類型應為 png) - image_path = os.path.join(image_dir, 'generated-image.png') - - # 獲取生成的圖像 - image_url = generation_response["data"][0]["url"] # 從回應中提取圖像 URL - generated_image = requests.get(image_url).content # 下載圖像 - with open(image_path, "wb") as image_file: - image_file.write(generated_image) - - # 在默認圖像查看器中顯示圖像 - image = Image.open(image_path) - image.show() - -# 捕捉異常 -except openai.InvalidRequestError as err: - print(err) -``` - -## 很棒的工作!繼續學習 - -完成本課程後,請查看我們的[生成式 AI 學習集合](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst)以繼續提升您的生成式 AI 知識! - -前往第10課,我們將探討如何[建構低程式碼的AI應用程式](../../../10-building-low-code-ai-applications/translations/tw/README.md?WT.mc_id=academic-105485-koreyst) - diff --git a/10-building-low-code-ai-applications/translations/cn/README.md b/10-building-low-code-ai-applications/translations/cn/README.md deleted file mode 100644 index b41cc86c6b..0000000000 --- a/10-building-low-code-ai-applications/translations/cn/README.md +++ /dev/null @@ -1,244 +0,0 @@ -# 第十章:创建低代码的人工智能应用 - -[![Building Low Code AI Applications](../../images/10-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson10-gh?WT.mc_id=academic-105485-koreyst) - -> _(点击该图片看本章导学视频)_ - -## 本章概述 - -现在我们已经学习了如何构建图像生成应用程序,让我们来谈谈低代码。 生成式人工智能可用于包括低代码在内的各种不同领域,但什么是低代码以及我们如何将人工智能添加到其中? - -通过使用低代码开发平台,传统开发人员和非开发人员构建应用程序和解决方案变得更加容易。 低代码开发平台使您能够使用很少的代码甚至零代码来构建应用程序和解决方案。 这是通过提供可视化开发环境来实现的,该环境使您能够拖放组件来构建应用程序和解决方案。 这使您能够使用更少的资源更快地构建应用程序和解决方案。 在本章中,我们将深入探讨如何使用低代码以及如何利用 Power Platform 通过 AI 增强低代码开发。 - -Power Platform 为企业提供了让其团队能够通过直观的低代码或无代码环境构建自己的解决方案的方法。 此环境有助于简化构建解决方案的过程。 借助 Power Platform,可以在几天或几周内构建解决方案,而不是几个月或几年。 Power Platform 包含五个关键产品:Power Apps、Power Automate、Power BI、Power Pages 和 Power Virtual Agent。 - -在本章中,您将学习到: - -- Power Platform 中的生成式 AI 简介 -- Copilot 简介及其使用方法 -- 使用生成式人工智能在 Power Platform 中构建应用程序和流程 -- 使用 AI Builder 了解 Power Platform 中的 AI 模型 - -## 学习目标 - -在完成本章的学习,您将能够: - -- 了解 Copilot 在 Power Platform 中的工作原理。 - -- 为“Our Startup”公司构建学生作业跟踪应用程序。 - -- 构建使用人工智能从发票中提取信息的发票处理流程。 - -- 使用 GPT AI 模型创建文本时应用最佳实践。 - -您将在本课程中使用的工具和技术是: - -- **Power Apps**,用于学生作业跟踪器应用程序,它提供了一个低代码开发环境,用于构建用于跟踪、管理数据并与数据交互的应用程序。 - -- **Dataverse**,用于存储学生作业跟踪器应用程序的数据,其中 Dataverse 将提供一个低代码数据平台来存储应用程序的数据。 - -- **Power Automate**,用于发票处理流程,您将拥有用于构建工作流程以自动化发票处理流程的低代码开发环境。 - -- **AI Builder**,用于发票处理 AI 模型,您将使用预构建的 AI 模型来处理“Our Startup”的发票。 - -## Power Platform 中的生成式 AI - -通过生成式 AI 增强低代码开发和应用是 Power Platform 的重点关注领域。 目标是让每个人都能够构建人工智能驱动的应用程序、网站、仪表板并利用人工智能实现流程自动化,_无需任何数据科学专业知识_。 这一目标是通过将生成式 AI 以 Copilot 和 AI Builder 的形式集成到 Power Platform 的低代码开发体验中来实现的。 - -### 这是如何运作的? - -Copilot 是一款 AI 助手,可让您使用自然语言以一系列对话步骤描述您的需求,从而构建 Power Platform 解决方案。 例如,您可以指示 AI 助手说明您的应用程序将使用哪些字段,它将创建应用程序和底层数据模型,或者您可以指定如何在 Power Automate 中设置流程。 - -您可以使用 Copilot 驱动的功能作为应用程序屏幕中的一项功能,使用户能够通过对话交互发现见解。 - -AI Builder 是 Power Platform 中提供的低代码 AI 功能,使您能够使用 AI 模型来帮助您自动化流程并预测结果。 借助 AI Builder,您可以将 AI 引入连接到 Dataverse 或各种云数据源(例如 SharePoint、OneDrive 或 Azure)中的数据的应用程序和流程。 - -Copilot 适用于所有 Power Platform 产品:Power Apps、Power Automate、Power BI、Power Pages 和 Power Virtual Agent。 AI Builder 可在 Power Apps 和 Power Automate 中使用。 在本课程中,我们将重点介绍如何在 Power Apps 和 Power Automate 中使用 Copilot 和 AI Builder 为我们的教育初创公司构建解决方案。 - -### Power Apps 中的 Copilot - -作为 Power Platform 的一部分,Power Apps 提供了一个低代码开发环境,用于构建应用程序来跟踪、管理数据并与数据交互。 它是一套应用程序开发服务,具有可扩展的数据平台以及连接到云服务和本地数据的能力。 Power Apps 允许您构建在浏览器、平板电脑和手机上运行并可以与同事共享的应用程序。 Power Apps 通过简单的界面让用户轻松进行应用程序开发,以便每个业务用户或专业开发人员都可以构建自定义应用程序。 通过 Copilot 的生成式 AI 也增强了应用程序开发体验。 - -Power Apps 中的 Copilot AI 助手功能使您能够描述您需要哪种类型的应用程序以及您希望应用程序跟踪、收集或显示哪些信息。 然后,Copilot 根据您的描述生成响应式 Canvas 应用程序。 然后,您可以自定义应用程序以满足您的需求。 AI Copilot 还会生成并建议一个 Dataverse 表,其中包含存储要跟踪的数据和一些示例数据所需的字段。 稍后我们将在本章中了解什么是 Dataverse 以及如何在 Power Apps 中使用它。 然后,您可以通过对话步骤使用 AI Copilot 助手功能自定义表格以满足您的需求。 通过 Power Apps 主屏幕轻松使用此功能。 - -### Power Automate 中的 Copilot - -作为 Power Platform 的一部分,Power Automate 允许用户在应用程序和服务之间创建自动化工作流程。 它有助于自动化重复的业务流程,例如通信、数据收集和决策批准。 其简单的界面允许具有各种技术能力的用户(从初学者到经验丰富的开发人员)自动执行工作任务。 通过 Copilot 的生成式 AI 也增强了工作流程开发体验。 - -Power Automate 中的 Copilot AI 助手功能使您能够描述您需要哪种流程以及您希望流程执行哪些操作。 然后 Copilot 根据您的描述生成流程。 然后,您可以自定义流程以满足您的需求。 AI Copilot 还会生成并建议您执行想要自动化的任务所需的操作。 我们将在本章中稍后介绍什么是流以及如何在 Power Automate 中使用它们。 然后,您可以通过对话步骤使用 AI Copilot 助手功能自定义操作以满足您的需求。 通过 Power Automate 主屏幕轻松使用此功能。 - -## 作业:使用 Copilot 管理 “Our Startup” 的学生作业和发票 - -“Our Startup” 为学生提供在线课程。 这家初创公司发展迅速,目前正在努力满足其课程的需求。 该初创公司聘请您作为 Power Platform 开发人员,帮助他们构建低代码解决方案,以帮助他们管理学生作业和发票。 他们的解决方案应该能够帮助他们通过应用程序跟踪和管理学生作业,并通过工作流程自动化发票处理过程。 您被要求使用生成式人工智能来开发解决方案。 - -当您开始使用 Copilot 时,可以使用 [Power Platform Copilot Prompt 库](https://github.com/pnp/powerplatform-prompts?WT.mc_id=academic-109639-somelezediko) 作为提示词。 该库包含一系列提示,您可以使用这些提示与 Copilot 一起构建应用程序和流程。 您还可以使用库中的提示来了解如何向 Copilot 描述您的需求。 - -### 为 “Our Startup” 构建学生作业跟踪应用程序 - -“Our Startup” 的教育工作者一直在努力跟踪学生的作业。 他们一直使用电子表格来跟踪作业,但随着学生数量的增加,这变得难以管理。 他们要求您构建一个应用程序来帮助他们跟踪和管理学生作业。 该应用程序应使他们能够添加新作业、查看作业、更新作业和删除作业。 该应用程序还应该使教育工作者和学生能够查看已评分和未评分的作业。 - -您将按照以下步骤使用 Power Apps 中的 Copilot 构建应用程序: - -1. 导航到 [Power Apps](https://make.powerapps.com?WT.mc_id=academic-105485-koreyst) 主屏幕。 - -1. 使用主屏幕上的文本区域描述您要构建的应用程序。 例如,**_我想构建一个应用程序来跟踪和管理学生作业_**。 单击 **发送** 按钮将提示发送到 AI Copilot。 - -![描述您要构建的应用程序](../../images/copilot-chat-prompt-powerapps.png?WT.mc_id=academic-105485-koreyst) - -1. AI Copilot 将建议一个 Dataverse 表,其中包含存储要跟踪的数据所需的字段以及一些示例数据。 然后,您可以通过对话步骤使用 AI Copilot 助手功能自定义表格以满足您的需求。 - - > **重点事项**:Dataverse 是 Power Platform 的底层数据平台。 它是一个用于存储应用程序数据的低代码数据平台。 它是一项完全托管的服务,可将数据安全地存储在 Microsoft 云中,并在您的 Power Platform 环境中进行配置。 它具有内置的数据治理功能,例如数据分类、数据沿袭、细粒度访问控制等。 您可以在[此处](https://docs.microsoft.com/powerapps/maker/data-platform/data-platform-intro?WT.mc_id=academic-109639-somelezediko)了解有关 Dataverse 的更多信息。 - - ![新表中的建议字段](../../images/copilot-dataverse-table-powerapps.png?WT.mc_id=academic-105485-koreyst) - -2. 教育工作者希望向已提交作业的学生发送电子邮件,以便让他们了解作业的最新进度。 您可以使用 Copilot 向表中添加新字段来存储学生电子邮件。 例如,您可以使用以下提示向表中添加新字段:**_我想添加一列来存储学生电子邮件_**。 单击 **发送** 按钮将提示发送到 AI Copilot。 - -![添加新字段](../../images/copilot-new-column.png?WT.mc_id=academic-105485-koreyst) - -1. AI Copilot 将生成一个新字段,您可以自定义该字段以满足您的需求。 - -1. 完成表格后,单击 **创建应用程序** 按钮来创建应用程序。 - -1. AI Copilot 将根据您的描述生成响应式 Canvas 应用程序。 然后,您可以自定义应用程序以满足您的需求。 - -1. 对于要向学生发送电子邮件的教育工作者,您可以使用 Copilot 向应用程序添加新屏幕。 例如,您可以使用以下提示向应用程序添加新屏幕:**_我想添加一个屏幕来向学生发送电子邮件_**。 单击 **发送** 按钮将提示发送到 AI Copilot。 - -![Describe the app you want to build](../../images/copilot-new-screen.png?WT.mc_id=academic-105485-koreyst) - -1. AI Copilot 将生成一个新屏幕,然后您可以自定义屏幕以满足您的需求。 - -1. 完成应用程序后,单击 **保存** 按钮保存应用程序。 - -1. 要与教育工作者共享应用程序,请单击 **共享** 按钮,然后再次单击 **共享** 按钮。 然后,您可以通过输入教育工作者的电子邮件地址与他们共享该应用程序。 - -> **提升**:你刚刚构建的应用程序是一个良好的开端,但还可以改进。 通过电子邮件功能,教育工作者只能通过键入电子邮件来手动向学生发送电子邮件。 您能否使用 Copilot 构建一个自动化系统,使教育工作者能够在学生提交作业时自动向他们发送电子邮件? 您的提示是正确的提示,您可以 - -### 为 “Our Startup” 构建发票信息表 - -“Our Startup” 的财务团队一直在努力跟踪发票。 他们一直使用电子表格来跟踪发票,但随着发票数量的增加,这变得难以管理。 他们要求您构建一个表来帮助他们存储、跟踪和管理收到的发票信息。 该表应用于构建一个自动化程序,提取所有发票信息并将其存储在表中。 该表还应使财务团队能够查看已支付和未支付的发票。 - -Power Platform 有一个名为 Dataverse 的底层数据平台,使您能够存储应用程序和解决方案的数据。 Dataverse 提供了一个低代码数据平台来存储应用程序的数据。 它是一项完全托管的服务,可将数据安全地存储在 Microsoft 云中,并在您的 Power Platform 环境中进行配置。 它具有内置的数据治理功能,例如数据分类、数据沿袭、细粒度访问控制等。 您可以在此处了解[有关 Dataverse 的更多信息](https://docs.microsoft.com/powerapps/maker/data-platform/data-platform-intro?WT.mc_id=academic-109639-somelezediko)。 - -为什么我们的初创公司应该使用 Dataverse? Dataverse 中的标准和自定义表为您的数据提供安全且基于云的存储选项。 表可让您存储不同类型的数据,类似于在单个 Excel 工作簿中使用多个工作表的方式。 您可以使用表来存储特定于您的组织或业务需求的数据。 我们的初创公司将从使用 Dataverse 中获得的一些好处包括但不限于: - -- **易于管理**:元数据和数据都存储在云端,因此您不必担心它们如何存储或管理的细节。 您可以专注于构建您的应用程序和解决方案。 - -- **安全**:Dataverse 为您的数据提供安全且基于云的存储选项。 您可以使用基于角色的安全性来控制谁有权访问表中的数据以及他们如何访问数据。 - -- **丰富的元数据**:数据类型和关系直接在 Power Apps 中使用 - -- **逻辑和验证**:您可以使用业务规则、计算字段和验证规则来强制执行业务逻辑并保持数据准确性。 - -现在您已经了解了 Dataverse 是什么以及为什么应该使用它,让我们看看如何使用 Copilot 在 Dataverse 中创建表来满足我们财务团队的要求。 - -> **注意**:您将在下面内容中使用此表来构建自动化,该自动化将提取所有发票信息并将其存储在表中。 - -要使用 Copilot 在 Dataverse 中创建表,请按照以下步骤操作: - -1. 导航到 [Power Apps](https://make.powerapps.com?WT.mc_id=academic-105485-koreyst) 主屏幕。 - -2. 在左侧导航栏上,选择 **表** ,然后单击 **描述新表** 。 - -![选择新表](../../images/describe-new-table.png?WT.mc_id=academic-105485-koreyst) - -1. 在 **描述新表** 屏幕上,使用文本区域描述您要创建的表。 例如,**_我想创建一个表来存储发票信息_**。 单击 **发送** 按钮将提示发送到 AI Copilot。 - -![描述表格](../../images/copilot-chat-prompt-dataverse.png?WT.mc_id=academic-105485-koreyst) - -1. AI Copilot 将建议一个 Dataverse 表,其中包含存储要跟踪的数据所需的字段以及一些示例数据。 然后,您可以通过对话步骤使用 AI Copilot 助手功能自定义表格以满足您的需求。 - -![建议的 Dataverse 表](../../images/copilot-dataverse-table.png?WT.mc_id=academic-105485-koreyst) - -1. 财务团队希望向供应商发送电子邮件,以更新其发票的当前状态。 您可以使用 Copilot 向表中添加新字段来存储供应商电子邮件。 例如,您可以使用以下提示向表中添加新字段:**_我想添加一列来存储供应商电子邮件_**。 单击 **发送** 按钮将提示发送到 AI Copilot。 - -1. AI Copilot 将生成一个新字段,您可以自定义该字段以满足您的需求。 - -1. 完成表后,单击 **创建** 按钮创建表。 - -## Power Platform 中的 AI 模型与 AI Builder - -AI Builder 是 Power Platform 中提供的低代码 AI 功能,使您能够使用 AI 模型来帮助您自动化流程并预测结果。 借助 AI Builder,您可以将 AI 引入连接到 Dataverse 或各种云数据源(例如 SharePoint、OneDrive 或 Azure)中的数据的应用程序和流程。 - -## 预定义 AI 模型与自定义 AI 模型 - -AI Builder 提供两种类型的 AI 模型:预构建 AI 模型和自定义 AI 模型。 预构建的 AI 模型是即用型 AI 模型,由 Microsoft 训练并在 Power Platform 中提供。 这些可以帮助您为应用程序和流程添加智能,而无需收集数据,然后构建、训练和发布您自己的模型。 您可以使用这些模型来自动化流程并预测结果。 - -Power Platform 中提供的一些预构建 AI 模型包括: - -- **关键短语提取**:该模型从文本中提取关键短语。 -- **语言检测**:此模型检测文本的语言。 -- **情绪分析**:此模型检测文本中的积极、消极、中性或混合情绪。 -- **名片阅读器**:此模型从名片中提取信息。 -- **文本识别**:该模型从图像中提取文本。 -- **对象检测**:该模型从图像中检测并提取对象。 -- **表单处理**:该模型从表单中提取信息。 -- **发票处理**:此模型从发票中提取信息。 - -通过自定义 AI 模型,您可以将自己的模型引入 AI Builder,以便它可以像任何 AI Builder 自定义模型一样运行,从而允许您使用自己的数据训练模型。 您可以使用这些模型来自动化流程并预测 Power Apps 和 Power Automate 中的结果。 使用您自己的模型时存在一些限制。 了解有关这些[限制](https://learn.microsoft.com/ai-builder/byo-model#limitations?WT.mc_id=academic-105485-koreyst)的更多信息 - -![AI 构建器模型](../../images/ai-builder-models.png?WT.mc_id=academic-105485-koreyst) - -## 作业 - 为 “Our Startup” 构建发票处理流程 - -财务团队一直在努力处理发票。 他们一直使用电子表格来跟踪发票,但随着发票数量的增加,这变得难以管理。 他们要求您构建一个工作流程,帮助他们使用人工智能处理发票。 该工作流程应使他们能够从发票中提取信息并将信息存储在 Dataverse 表中。 该工作流程还应该使他们能够向财务团队发送包含提取信息的电子邮件。 - -现在您已经了解了 AI Builder 是什么以及为什么应该使用它,让我们看看如何使用我们之前介绍过的 AI Builder 中的发票处理 AI 模型来构建帮助财务团队处理发票的工作流程。 - -要构建一个工作流程来帮助财务团队使用 AI Builder 中的发票处理 AI 模型处理发票,请按照以下步骤操作: - -1. 导航至 [Power Automate](https://make.powerautomate.com?WT.mc_id=academic-105485-koreyst) 主屏幕。 - -2. 使用主屏幕上的文本区域描述您要构建的工作流程。 例如,**_当发票到达我的邮箱时对其进行处理_**。 单击 **发送** 按钮将提示发送到 AI Copilot。 - - ![副驾驶电源自动化](../../images/copilot-chat-prompt-powerautomate.png?WT.mc_id=academic-105485-koreyst) - -3. AI Copilot 将建议您执行想要自动化的任务所需的操作。 您可以单击 **下一步** 按钮来完成后续步骤。 - -4. 在下一步中,Power Automate 将提示您设置流程所需的连接。 完成后,单击 **创建流** 按钮来创建流。 - -5. AI Copilot 将生成流程,然后您可以自定义流程以满足您的需求。 - -6. 更新流程的触发器并将 **文件夹** 设置为将存储发票的文件夹。 例如,您可以将文件夹设置为**收件箱**。 单击“**显示高级选项**”并将“**仅包含附件**”设置为“**是**”。 这将确保该流程仅在文件夹中收到带有附件的电子邮件时运行。 - -7. 从流程中删除以下操作:**HTML 到文本**、**Compose**、**Compose 2**、**Compose 3** 和 **Compose 4**,因为您不会使用 他们。 - -8. 从流程中删除 **Condition** 操作,因为您不会使用它。 它应该类似于以下屏幕截图: - - ![电源自动化,删除操作](../../images/powerautomate-remove-actions.png?WT.mc_id=academic-105485-koreyst) - -9. 单击 **添加操作** 按钮并搜索 **Dataverse**。 选择 **添加新行** 操作。 - -10. 在 **从发票中提取信息** 操作中,更新 **发票文件** 以指向电子邮件中的 **附件内容**。 这将确保流程从发票附件中提取信息。 - -11. 选择您之前创建的 **表**。 例如,您可以选择 **发票信息** 表。 从上一个操作中选择动态内容以填充以下字段: - - - ID - - 数量 - - 日期 - - 姓名 - - 状态 - 将 **状态** 设置为 **待处理**。 - - 供应商电子邮件 - 使用 **新电子邮件到达时** 触发器中的 **发件人** 动态内容。 - - ![电源自动添加行](../../images/powerautomate-add-row.png?WT.mc_id=academic-105485-koreyst) - -12. 完成流程后,单击 **保存** 按钮保存流程。 然后,您可以通过将带有发票的电子邮件发送到您在触发器中指定的文件夹来测试流程。 - -> **提升**:你刚刚构建的流程是一个好的开始,现在你需要考虑如何构建一个自动化系统,使我们的财务团队能够向供应商发送电子邮件以更新他们的当前状态 他们的发票。 您的提示:当发票状态发生变化时,流程必须运行。 - -## 在 Power Automate 中使用文本生成 AI 模型 - -AI Builder 中的使用 GPT AI 模型创建文本使您能够根据提示生成文本,并由 Microsoft Azure OpenAI Service 提供支持。 借助此功能,您可以将 GPT 技术合并到您的应用程序和流程中,以构建各种自动化流程和富有洞察力的应用程序。 - -GPT 模型经过大量数据的广泛训练,使它们能够在有提示时生成与人类语言非常相似的文本。 当与工作流程自动化集成时,可以利用 GPT 等人工智能模型来简化和自动化各种任务。 - -例如,您可以构建流程来自动生成各种用例的文本,如:电子邮件草稿、产品描述等。 您还可以使用该模型为各种应用程序生成文本,如聊天机器人和客户服务应用程序,使客户服务代理能够有效且高效地响应客户查询。 - -![创建提示](../../images/create-prompt-gpt.png?WT.mc_id=academic-105485-koreyst) - -要了解如何在 Power Automate 中使用此 AI 模型,请浏览[使用 AI Builder 和 GPT 添加智能](https://learn.microsoft.com/training/modules/ai-builder-text-generation/?WT.mc_id=academic-109639-somelezediko) 模块。 - -## 继续学习 - -想要了解有关创建低代码的人工智能应用的更多信息? 转至[进阶学习的页面](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) 查找有关此主章节的其他学习资源。 - -前往第十一章,我们将学习[为生成式 AI 添加 function calling](../../../11-integrating-with-function-calling/translations/cn/README.md?WT.mc_id=academic-105485-koreyst) diff --git a/10-building-low-code-ai-applications/translations/ja-jp/README.md b/10-building-low-code-ai-applications/translations/ja-jp/README.md deleted file mode 100644 index 4ab3ef8b75..0000000000 --- a/10-building-low-code-ai-applications/translations/ja-jp/README.md +++ /dev/null @@ -1,244 +0,0 @@ -# ローコード AI アプリケーションの構築 - -[![Building Low Code AI Applications](../../images/10-lesson-banner.png?WT.mc_id=academic-105485-yoterada)](https://aka.ms/gen-ai-lesson10-gh?WT.mc_id=academic-105485-koreyst) - -> _(上記の画像をクリックすると、レッスン・ビデオを表示します)_ - -## はじめに - -画像生成アプリケーションの作り方を学んだところで、次にローコード開発について会話をうつしましょう。生成 AI はローコード開発を含む様々な環境で利用できますが、ローコードとは何でしょうか。また、それをどのように AI に組み込めるのでしょうか。 - -ローコード開発プラットフォームの利用により、従来の開発者や開発未経験者でもアプリケーションやソリューションの作成が簡単になりました。ローコード開発プラットフォームを使うと、ほぼコードを書かずに、もしくは全く書かずに、アプリケーションやソリューションを作れます。これは、コンポーネントをドラッグ・アンド・ドロップで配置できるビジュアル開発環境を提供しているため、それを利用して実現できます。これにより、アプリケーションやソリューションをより速く、リソースも少なく作れます。このレッスンでは、ローコード開発プラットフォームの使い方と、Power Platform を使い AI を活用したローコード開発の方法について詳しく説明します。 - -Power Platform は、直感的なローコードまたはノーコードの開発環境を通じて、組織のチーム・メンバーが自分自身でソリューションを作れるような機会を提供します。この環境は、ソリューション作成のプロセスを大幅に簡素化します。Power Platform を使えば、ソリューションを数ヶ月や数年かけて作るのではなく、数日や数週間で作れるようになります。Power Platform は、Power Apps、Power Automate、Power BI、Copilot Studio の 5 つの主要製品から構成されています。 - -このレッスンでは、下記の内容について説明します。 - -- Power Platform における生成 AI の紹介 -- Copilot の紹介と使い方 -- 生成 AI を使って Power Platform でアプリとフローを作る方法 -- AI Builder を使って Power Platform の AI モデルを理解する方法 - -## 学習目標 - -このレッスンを修了すると、下記を理解できます: - -- Copilot が Power Platform でどのように機能するかを理解します - -- 教育スタートアップによる、学生の課題追跡アプリを構築します。 - -- AI を使用して請求書から情報を抽出する請求書処理フローを構築します。 - -- GPT モデルを使用してテキスト生成をする際の、ベスト・プラクティスを適用します。 - -このレッスンで使用するツールとテクノロジは下記のとおりです。 - -- **Power Apps**: データを追跡、管理、操作するアプリを作るためのローコード開発環境を提供し、これを利用し学生の課題追跡アプリを作ります。 - -- **Dataverse**: 学生の課題追跡アプリのデータを格納するために使います。Dataverse はアプリのデータを格納するためのローコード・データ・プラットフォームを提供します。 - -- **Power Automate**: 請求書処理フローを作るためのローコード開発環境を提供し、これを使って請求書処理プロセスを自動化します。 - -- **AI Builder**: 事前に作成した AI モデルを使ってスタートアップの請求書を処理するための請求書処理 AI モデルを作ります。 - -## Power Platform における生成 AI - -Power Platform は生成 AI を用いて、ローコード開発とアプリケーションを強化するのが主な目的です。データサイエンスの専門知識がない人でも、AI を使ったアプリ、サイト、ダッシュボードの作成や、AI によるプロセスの自動化ができるようになるのが狙いです。これは、Copilot と AI Builder を通じて、Power Platform のローコード開発体験に生成 AI を取り込み実現します。 - -### どのように動作するのでしょうか? - -Copilot は AI アシスタントで、自然言語を使って会話形式のやり取りで要件を説明し、Power Platform のソリューションを作れます。たとえば、アプリで使用するフィールドを AI アシスタントに指示すると、アプリとそれに基づくデータモデルの両方を作成します。また、Power Automate でフローを設定する方法を指定できます。 - -アプリ画面に Copilot の機能を組み込み、利用者は、会話型のやり取りを通じて、知見が得られるようになります。 - -AI Builder は、Power Platform で利用可能なローコード AI 機能で、AI モデルを使用してプロセスを自動化し、結果を予測できます。AI Builder を使用すると、Dataverse や SharePoint、OneDrive、Azure などの様々なクラウド上のデータソースに接続するアプリやフローに AI を組み込めます。 - -Copilot は、Power Apps、Power Automate、Power BI、Power Pages、Power Virtual Agents といった、全 Power Platform 製品で利用できます。一方で、AI Builder は Power Apps と Power Automate で利用できます。今回のレッスンでは、Power Apps と Power Automate における Copilot と AI Builder の使用方法について、特に教育スタートアップ用のソリューション開発の観点から詳しく説明していきます。 - -### Power Apps における Copilot - -Power Platform の一部として、Power Apps は、データの追跡、管理、対話型のアプリを作成できる、ローコード開発環境を提供します。Power Apps は、スケーラブルなデータ・プラットフォームと、クラウドサービスやオンプレミス・データに接続できる力を備えたアプリ開発サービスを組み合わせた開発環境です。Power Apps を利用すると、ブラウザ、タブレット、携帯電話上で動作するアプリを作成し、同僚に共有できます。Power Apps はシンプルなインターフェースで、利用者が簡単にアプリを開発できるように作られており、全てのビジネス・利用者やプロの開発者がカスタム・アプリを作成できます。 - -Power Apps における Copilot AI アシスタント機能を利用すると、必要なアプリの種類や、アプリで追跡、収集、表示したい情報を説明できます。Copilot はその説明に基づいて、レスポンシブな(利用者が使用しているデバイスの画面サイズに応じて自動的にレイアウトを調整する)Canvas アプリを生成します。その後、アプリを自分のニーズに合わせてカスタマイズできます。また、AI Copilot は追跡したいデータを保存するための必要なフィールドをあらかじめ持っている Dataverse テーブルとサンプルデータを生成し、提案します。このレッスンの後半では、Dataverse とは何か、そして Power Apps でどのように使用するかを詳しく見ていきます。その後、会話でのやり取りを通じて AI Copilot アシスタント機能を使用してテーブルを自分のニーズに合わせてカスタマイズします。この機能は、Power Apps のホーム画面からすぐに利用できます。 - -### Power Automate における Copilot - -Power Platform の一部である Power Automate は、利用者が、アプリケーションとサービス間で、自動化ワークフローの作成ができます。これにより、コミュニケーション、データ収集、承認決定などの反復的なビジネス・プロセスを自動化できます。そして、その簡単なインターフェースは、初心者から経験豊富な開発者まで、全ての技術レベルの利用者の作業タスクを自動化できます。またこうした、ワークフロー開発体験は Copilot を通じた生成型 AI で強化されます。 - -Power Automate における Copilot AI アシスタント機能を利用すると、必要なフローの種類や、フローで実行したいアクションを、それぞれ説明できます。Copilot はその説明に基づいて、フローを生成します。その後、フローをご自分のニーズに合わせてカスタマイズできます。また AI Copilot は、自動化したいタスクを実行するために必要なアクションを生成したり、提案してくれます。このレッスンの後半では、フローとは何か、Power Automate での活用方法を詳しく説明します。その後、会話でのやり取りを通じた AI Copilot のアシスタント機能を通じて、アクションを自分のニーズに合わせてカスタマイズします。この機能は、Power Automate のホーム画面からすぐに利用できます。 - -## 課題: スタートアップが Copilot を使用して学生の課題と請求書を管理する - -スタートアップは、学生にオンラインコースを提供しています。スタートアップは急速に成長し、そのコースの需要に対応するのが難しくなっています。スタートアップはあなたを Power Platform 開発者として新たに採用し、学生の課題と請求書を管理するためのローコードソリューションを構築するように依頼しました。そのソリューションは、アプリを通じて学生の課題の追跡と管理を行い、ワークフローを通じて請求処理のプロセスを自動化するのに役立ちます。あなたは、ソリューションを開発するために生成 AI を使用するように指示されています。 - -Copilot を使い始める際には、[Power Platform Copilot Prompt Library](https://github.com/pnp/powerplatform-prompts?WT.mc_id=academic-109639yoterada) を使用して、プロンプトを使い始めます。このライブラリには Copilot と共に、アプリやフローを作成するためのプロンプトのリストが含まれています。また、ライブラリ内のプロンプトを使用して、Copilot に対して要件をどのように説明できるのかといったアイデアを得られます。 - -### スタートアップによる学生課題追跡アプリの構築 - -スタートアップの教育者たちは、学生の課題を追跡するのに苦労しています。彼らは課題を追跡するためにスプレッドシートを使用していましたが、学生数が増加するにつれて管理が難しくなってきました。彼らはあなたに、学生の課題追跡と管理を手助けするアプリの作成を依頼しました。アプリは新しい課題の追加、課題の閲覧、課題の更新、課題の削除ができる必要があります。また、アプリは教育者と学生が共に、採点済みの課題と未採点の課題を閲覧できるように実装する必要があります。 - -下記の手順に従って、Power Apps の Copilot を利用してアプリを構築します: - -1. [Power Apps](https://make.powerapps.com?WT.mc_id=academic-105485-yoterada) のホーム画面に遷移します。 - -1. ホーム画面のテキストエリアに、作成したいアプリを説明します。例えば、「**学生の課題を追跡し管理するアプリを作成してください**」と入力します。「**Send**」ボタンをクリックして、プロンプトを AI Copilot に送信します。 - -![Describe the app you want to build](../../images/copilot-chat-prompt-powerapps.png?WT.mc_id=academic-105485-yoterada) - -1. AI Copilot は、追跡したいデータを保存するために必要なフィールドとサンプルデータを持つ Dataverse テーブルの作成を提案します。その後、会話でのやり取りを通じ AI Copilot のアシスタント機能を使用して、テーブルを自分のニーズに合わせてカスタマイズできます。 - - > **重要**:Dataverse は Power Platform の基盤となるデータプラットフォームで、アプリのデータを保存するためのローコード・データ・プラットフォームです。Microsoft Cloud 上にデータを安全に保存する、完全にマネージドなサービスで、Power Platform 環境内でプロビジョニングできます。データ分類、データ系統、きめ細やかなアクセス制御など、組み込みのデータガバナンス機能が付属しています。Dataverse については[こちら](https://docs.microsoft.com/powerapps/maker/data-platform/data-platform-intro?WT.mc_id=academic-109639-yoterada)から詳しく学ぶべます。 - - ![Suggested fields in your new table](../../images/copilot-dataverse-table-powerapps.png?WT.mc_id=academic-105485-yoterada) - -1. 教育者は、課題を提出した学生に進行状況を伝えるためにメールを送りたいと考えています。その為に、Copilot を使用して、学生のメールアドレスを保存する新しいフィールドをテーブルに追加できます。例えば、「**学生のメールを保存する列を追加してください**」というプロンプトを使用して、新しいフィールドを追加できます。「**Send**」ボタンをクリックして、プロンプトを AI Copilot に送信します。 - -![Adding a new field](../../images/copilot-new-column.png?WT.mc_id=academic-105485-yoterada) - -1. AI Copilot は新しいフィールドを生成し、その後、フィールドを自身のニーズに合わせてカスタマイズできます。 - -1. テーブルが完成した後、「**Create app**」ボタンをクリックしてアプリを作成します。 - -1. AI Copilot は記述内容に基づいてレスポンシブな Canvas アプリを生成します。その後、アプリを自分のニーズに合わせてカスタマイズできます。 - -1. 教育者が学生にメールを送るために、Copilot を使用してアプリに新しい画面を追加できます。例えば、次のプロンプトを使用してアプリに新しい画面を追加できます:「**_学生にメールを送る画面を追加してください_**」そして「**Send**」ボタンをクリックして、プロンプトを AI Copilot に送信します。 - -![Adding a new screen via a prompt instruction](../../images/copilot-new-screen.png?WT.mc_id=academic-105485-yoterada) - -1. AI Copilot は新しい画面を生成し、その後、自身のニーズに合わせて画面をカスタマイズできます。 - -1. アプリが完成した後、「**Save**」ボタンをクリックしてアプリを保存します。 - -1. 教育者にアプリを共有するには、「**Share**」ボタンをクリックし、再度「**Share**」ボタンをクリックします。その後、教育者のメールアドレスを入力してアプリを共有できます。 - -> **課題**:今作ったアプリは良い起点ですが、まだ改善の余地があります。現在のメール機能は、教育者が学生のメールアドレスを手動で入力してメールを送るしかできません。課題を提出したときに、自動的に学生にメールを送る自動メール送信機能を Copilot を使用して構築できますか?ヒントは、適切なプロンプトを使用すれば、Power Automate の Copilot を使用して構築できます。 - -### スタートアップによる請求書情報テーブルを作成 - -スタートアップの財務部門は、請求書の追跡に苦労しています。彼らはスプレッドシートを使って請求書を追跡していましたが、請求書の数が増えるにつれて、管理が難しくなってきました。彼らはあなたに、受け取った請求書の情報を保存し、追跡したり、管理を手助けするアプリの作成を依頼しました。請求書情報を扱うテーブルは、すべての請求書情報を抽出し、それをテーブルに保存するまでの処理を自動化できるように実装します。またテーブルは、財務部門が支払い済みの請求書と未払いの請求書を、閲覧できるように実装します。 - -Power Platform には、アプリやソリューションのデータを保存するための基盤となるデータプラットフォーム、Dataverse が存在します。Dataverse はアプリのデータを保存するための、ローコード・データ・プラットフォームを提供し、Microsoft Cloud 上にデータを安全に保存するフルマネージドサービスです。これは Power Platform 環境内でプロビジョニングされ、データ分類、データの流れ、細かいアクセス制御などのデータ・ガバナンス機能も組み込まれています。Dataverse について詳しくは[こちら](https://docs.microsoft.com/powerapps/maker/data-platform/data-platform-intro?WT.mc_id=academic-109639-yoterada)をご覧ください。 - -なぜスタートアップで Dataverse を使うべきなのでしょうか?Dataverse 内の標準テーブルとカスタムテーブルは、クラウド・ベースの安全なストレージ・オプションを提供します。テーブルを使うと、一つの Excel ワークブック内で複数のワークシートを使うのと同じように、さまざまな種類のデータを保存できます。組織やビジネスニーズに特化したデータをテーブルに保存が可能です。スタートアップが Dataverse を使って得られる利点は下記のような物があります。 - -- **管理が容易**:メタデータとデータはクラウドに保存されるため、その保存や管理の詳細について心配する必要はありません。アプリケーションやソリューションの構築に集中できます。 - -- **安全**:Dataverse はクラウドベースの安全なストレージオプションを提供します。ロールベースのセキュリティを使用し、テーブル内のデータへのアクセスを誰が、どのように行うか制御できます。 - -- **豊富なメタデータ**:データ型とリレーションシップは Power Apps 内で直接利用されます。 - -- **ロジックと検証**:ビジネスルール、計算列、検証ルールを使い、ビジネスロジックを適用し、データの正当性を維持できます。 - -Dataverse とは何か、そしてその利点を理解したところで、Copilot を使って Dataverse でテーブルを作成し、財務チームの要件を満たすテーブル作成方法を見ていきましょう。 - -> **注**:次のセクションでは、このテーブルを使って、すべての請求書情報を抽出し、そこからテーブルに保存するまでの自動化処理を構築します。 - -Copilot を使って Dataverse でテーブルを作成する手順は下記の通りです: - -1. [Power Apps](https://make.powerapps.com?WT.mc_id=academic-105485-yoterada) のホーム画面に遷移します。 - -2. 左側のナビゲーションバーで「テーブル」を選択し、「Describe the new Table」をクリックします。 - -![Select new table](../../images/describe-new-table.png?WT.mc_id=academic-105485-yoterada) - -3. 「Describe the new Table」画面で、テキストエリアに作成したいテーブルの内容を記述します。例えば、「請求書情報を保存するテーブルを作成してください」と入力します。「送信」ボタンをクリックして、この指示を AI Copilot に送ります。 - -![Describe the table](../../images/copilot-chat-prompt-dataverse.png?WT.mc_id=academic-105485-yoterada) - -4. AI Copilot は、追跡したいデータを保存するために必要なフィールドといくつかのサンプルデータを含む Dataverse テーブルを提案します。その後、会話形式のやり取りを通じて AI Copilot アシスタント機能を使い、自分のニーズに合わせてテーブルをカスタマイズできます。 - -![Suggested Dataverse table](../../images/copilot-dataverse-table.png?WT.mc_id=academic-105485-yoterada) - -5. 財務チームは、サプライヤーにメールを送り、請求書の現在のステータスを更新したいと考えています。Copilot を使って、サプライヤーのメールを保存する新しいフィールドをテーブルに追加できます。例えば、「サプライヤーのメールを保存する列を追加してください」という指示を入力します。「送信」ボタンをクリックして、この指示を AI Copilot に送ります。 - -6. AI Copilot は新しいフィールドを生成し、そのフィールドを自分のニーズに合わせてカスタマイズできます。 - -7. テーブルの作成が完了したら、「作成」ボタンをクリックしてテーブルを作成します。 - -## AI Builder を使った Power Platform の AI モデル - -AI Builder は Power Platform で利用可能なローコード AI 機能で、プロセスの自動化や結果の予測を支援する AI モデルを使用できます。AI Builder を使えば、Dataverse や SharePoint、OneDrive、Azure などのさまざまなクラウド・データソースに接続するアプリやフローに AI を導入できます。 - -## 事前構築済み AI モデルとカスタム AI モデル - -AI Builder は、事前構築済み AI モデルとカスタム AI モデルの 2 種類の AI モデルを提供します。事前構築済み AI モデルは、Microsoft がトレーニングしたすぐに使用できる AI モデルで、Power Platform で利用可能です。これらのモデルを使うと、データを収集して独自のモデルを構築、トレーニング、公開せずに、アプリやフローにインテリジェンスな機能を追加できます。これらのモデルを使ってプロセスを自動化したり、結果を予測できます。 - -Power Platform で利用可能な事前構築済み AI モデルには以下のようなものがあります: - -- **キーフレーズ抽出**:このモデルはテキストからキーフレーズを抽出します。 -- **言語検出**:このモデルはテキストの言語を検出します。 -- **感情分析**:このモデルはテキスト内の肯定的、否定的、中立的、または混合した感情を検出します。 -- **名刺リーダー**:このモデルは名刺から情報を抽出します。 -- **テキスト認識**:このモデルは画像からテキストを抽出します。 -- **物体検出**:このモデルは画像から物体を検出して抽出します。 -- **文書処理**:このモデルはフォームから情報を抽出します。 -- **請求書処理**:このモデルは請求書から情報を抽出します。 - -カスタム AI モデルを使うと、自分のモデルを AI Builder に取り込んで、AI Builder のカスタムモデルと同様に機能させ、自分のデータを使ってモデルをトレーニングできます。これらのモデルを使って、Power Apps と Power Automate の両方でプロセスを自動化し、結果を予測できます。自分のモデルを使用する場合、使用に関して制限があります。これらの制限について、詳しくは[こちら](https://learn.microsoft.com/ai-builder/byo-model#limitations?WT.mc_id=academic-105485-yoterada)をご覧ください。 - -![AI builder models](../../images/ai-builder-models.png?WT.mc_id=academic-105485-yoterada) - -## 課題#2 - スタートアップによる請求書処理フローの構築 - -財務チームは請求書の処理に苦労しています。彼らはスプレッドシートを使って請求書を追跡していましたが、請求書の数が増えるにつれて管理が難しくなってきました。そこで、AI を使って請求書を処理するワークフローの構築を依頼されました。このワークフローでは、請求書から情報を抽出し、その情報を Dataverse テーブルに保存しなければなりません。また、抽出した情報を財務チームにメールで送信する必要もあります。 - -AI Builder とは何か、なぜそれを使うべきなのかを理解したところで、先ほど説明した AI Builder の請求書処理 AI モデルを使って、財務チームが請求書を処理するのに役立つワークフローを構築する方法を見ていきましょう。 - -AI Builder の請求書処理 AI モデルを使って、財務チームが請求書を処理するのに役立つワークフローを構築するには、下記の手順を実行します: - -1. [Power Automate](https://make.powerautomate.com?WT.mc_id=academic-105485-yoterada) のホーム画面に遷移します。 - -2. ホーム画面のテキストエリアを使って、構築したいワークフローを記述します。例えば、「メールボックスに請求書が届いたら処理を開始してください」と入力します。「送信」ボタンをクリックして、この指示を AI Copilot に送ります。 - - ![Copilot power automate](../../images/copilot-chat-prompt-powerautomate.png?WT.mc_id=academic-105485-yoterada) - -3. AI Copilot は、自動化したいタスクを実行するために必要なアクションを提案します。「次へ」ボタンをクリックすると、次のステップに進めます。 - -4. 次のステップでは、Power Automate がフローに必要な接続の設定を求めます。設定が完了したら、「フローの作成」ボタンをクリックしてフローを作成します。 - -5. AI Copilot はフローを生成し、その後、フローを自分のニーズに合わせてカスタマイズできます。 - -6. フローのトリガーを更新し、請求書が保存されるフォルダーを指定します。例えば、「受信トレイ」を指定できます。「詳細オプションの表示」をクリックし、「添付ファイルのみ」で「はい」に設定します。これにより、添付ファイル付きのメールがフォルダーに届いたときだけフローが実行されます。 - -7. 「HTML からテキストへ」、「Compose」、「Compose 2」、「Compose 3」、「Compose 4」のアクションは使用しないため、フローから削除します。 - -8. 「条件」アクションも使用しないため、フローから削除します。次のスクリーンショットのようになります。 - - ![power automate, remove actions](../../images/powerautomate-remove-actions.png?WT.mc_id=academic-105485-yoterada) - -9. 「アクションの追加」ボタンをクリックし、「Dataverse」を検索します。「新しい行の追加」アクションを選択します。 - -10. 「請求書から情報を抽出」アクションで、請求書ファイルをメールの「添付ファイルの内容」を指すように更新します。これにより、フローが添付ファイルの請求書から情報を抽出するようになります。 - -11. 前に作成した「テーブル」を選択します。例えば、「請求書情報」テーブルを選択できます。前のアクションの動的コンテンツを選択して、次のフィールドに入力します: - - - ID - - 金額 - - 日付 - - 名前 - - ステータス - 「ステータス」を「保留中」に設定します。 - - サプライヤーメール - 「新しいメールが届いたとき」にトリガーを呼び出し「送信者」を動的コンテンツとして使用します。 - - ![power automate add row](../../images/powerautomate-add-row.png?WT.mc_id=academic-105485-yoterada) - -12. フローの設定が完了したら、「保存」ボタンをクリックしてフローを保存します。その後、トリガーで指定したフォルダーに請求書を含むメールを送信し、フローをテストできます。 - -> **課題**:今作成したフローは良いスタート地点ですが、まだ改善ポイントがあります。次に、財務部門がサプライヤーにメールを送信し、請求書の現在の状況を更新できるような自動化処理を実装する方法を考える必要があります。ヒント:フローは、請求書の状況が変更されたときに実行する必要があります。 - -## Power Automate でテキスト生成 AI モデルを使用 - -AI Builder の GPT モデルを使った「テキストの生成」機能は、プロンプトに基づいてテキストを生成するもので、Microsoft Azure OpenAI Service で提供されています。この機能を使えば、GPT(Generative Pre-Trained Transformer)テクノロジーをアプリやフローに組み込み、さまざまな自動化フローや知見に満ちたアプリケーションを構築できます。 - -GPT モデルは、膨大な量のデータに対して広範囲なトレーニングを行い、プロンプトが与えられると、人間の言葉による表現によく似たテキストを生成できます。ワークフローの自動化と統合し、GPT などの AI モデルを活用して、さまざまなタスクを合理化し、自動化できます。 - -例えば、メールの下書きや商品説明を自動生成するフローを作れます。また、このモデルを使えば、チャットボットや顧客サービス・アプリで、顧客からの問い合わせに対して効率的に対応するテキストも生成できます。 - -![create a prompt](../../images/create-prompt-gpt.png?WT.mc_id=academic-105485-yoterada) - -Power Automate でこの AI モデルを使用する方法については、[AI Builder と GPT を使ってインテリジェンスな機能を追加する](https://learn.microsoft.com/training/modules/ai-builder-text-generation/?WT.mc_id=academic-109639-yoterada)をご参照ください。 - -## お疲れ様でした! 学習を続ける - -このレッスン修了後、[生成 AI 学習コレクション](https://aka.ms/genai-collection?WT.mc_id=academic-105485-yoterada) をチェックして、生成 AI の知識をレベルアップさせましょう。 - -次のレッスン 11 では、[Function Calling との統合](../../../11-integrating-with-function-calling/translations/ja-jp/README.md?WT.mc_id=academic-105485-yoterada)について学びます! diff --git a/10-building-low-code-ai-applications/translations/ko/README.md b/10-building-low-code-ai-applications/translations/ko/README.md deleted file mode 100644 index dd0a1b63b0..0000000000 --- a/10-building-low-code-ai-applications/translations/ko/README.md +++ /dev/null @@ -1,244 +0,0 @@ -# Low Code AI 애플리케이션 개발 - -[![Building Low Code AI Applications](../../images/10-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson10-gh?WT.mc_id=academic-105485-koreyst) - -> _(위 이미지를 클릭하여 이 레슨의 비디오를 시청하세요)_ - -## 소개 - -이미지 생성 애플리케이션을 만드는 방법을 배웠으니 이제는 Low Code에 대해 이야기해보겠습니다. 생성형 AI는 low code를 포함한 다양한 영역에 사용될 수 있지만, low code란 무엇이며 어떻게 AI를 추가할 수 있을까요? - -Low Code 개발 플랫폼을 사용하면 전통적인 개발자와 비개발자 모두가 쉽게 앱과 솔루션을 구축할 수 있습니다. Low Code 개발 플랫폼은 시각적 개발 환경을 제공하여 컴포넌트를 드래그 앤 드롭하여 앱과 솔루션을 구축할 수 있도록 합니다. 이를 통해 앱과 솔루션을 더 빠르고 적은 리소스로 구축할 수 있습니다. 이 레슨에서는 Low Code의 사용 방법과 Power Platform을 사용하여 low code 개발을 AI로 향상시키는 방법에 대해 자세히 알아보겠습니다. - -Power Platform은 조직에게 직관적인 low-code 또는 no-code 환경을 통해 팀이 자체 솔루션을 구축할 수 있는 기회를 제공합니다. 이 환경은 솔루션 구축 프로세스를 간소화하는 데 도움이 됩니다. Power Platform을 사용하면 솔루션을 개월이나 연도가 아닌 몇 일 또는 몇 주 안에 구축할 수 있습니다. Power Platform은 Power Apps, Power Automate, Power BI, Power Pages 및 Power Virtual Agents라는 다섯 가지 주요 제품으로 구성됩니다. - -이 레슨에서는 다음 내용을 다룹니다: - -- Power Platform에서 생성형 AI 소개 -- Copilot 소개 및 사용 방법 -- Power Platform에서 생성형 AI를 사용하여 앱과 플로우 구축 -- AI Builder를 사용하여 Power Platform의 AI 모델 이해 - -## 학습 목표 - -이 레슨을 마치면 다음을 할 수 있습니다: - -- Power Platform에서 Copilot의 작동 방식 이해하기. - -- 교육 스타트업을 위한 학생 과제 추적 앱 구축하기. - -- AI를 사용하여 송장 정보를 추출하는 송장 처리 플로우 구축하기. - -- Create Text with GPT AI 모델을 사용할 때 최상의 방법 적용하기. - -이 레슨에서 사용할 도구와 기술은 다음과 같습니다: - -- **Power Apps**: 데이터를 추적, 관리 및 상호 작용하는 앱을 구축하기 위한 low-code 개발 환경을 제공합니다. - -- **Dataverse**: 학생 과제 추적 앱의 데이터를 저장하기 위한 Dataverse는 앱의 데이터를 저장하기 위한 low-code 데이터 플랫폼을 제공합니다. - -- **Power Automate**: 송장 처리 플로우를 위한 low-code 개발 환경을 제공합니다. 이를 통해 송장 처리 프로세스를 자동화할 수 있습니다. - -- **AI Builder**: 스타트업의 송장을 처리하기 위해 사전 구축된 AI 모델을 사용할 수 있습니다. - -## Power Platform의 생성형 AI - -생성형 AI를 사용하여 low-code 개발과 애플리케이션을 향상시키는 것은 Power Platform의 주요 관심사입니다. 목표는 데이터 과학 전문 지식이 필요하지 않고 AI를 사용하여 앱, 사이트, 대시보드를 구축하고 프로세스를 자동화할 수 있는 모든 사람을 가능하게 하는 것입니다. 이 목표는 Copilot과 AI Builder의 형태로 생성형 AI를 Power Platform의 low-code 개발 환경에 통합함으로써 달성됩니다. - -### 이 작업은 어떻게 이루어질까요? - -Copilot은 자연어를 사용하여 대화식 단계로 요구 사항을 설명함으로써 Power Platform 솔루션을 구축할 수 있는 AI 어시스턴트입니다. 예를 들어, 앱에서 사용할 필드를 지정하는 방법을 AI 어시스턴트에게 지시할 수 있으며, 그는 앱과 기본 데이터 모델을 모두 생성할 것입니다. 또는 Power Automate에서 플로우를 설정하는 방법을 지정할 수도 있습니다. - -Copilot을 사용하여 사용자가 대화식 상호 작용을 통해 통찰력을 발견할 수 있도록 앱 화면의 기능으로 Copilot 기반 기능을 사용할 수 있습니다. - -AI Builder는 Power Platform에서 사용할 수 있는 low-code AI 기능으로, AI 모델을 사용하여 프로세스를 자동화하고 결과를 예측할 수 있습니다. AI Builder를 사용하면 Dataverse나 SharePoint, OneDrive, Azure와 같은 다양한 클라우드 데이터 소스 또는 Dataverse와 같은 데이터에 연결하는 앱과 플로우에 AI를 가져올 수 있습니다. - -Copilot은 Power Apps, Power Automate, Power BI, Power Pages 및 Power Virtual Agents의 모든 Power Platform 제품에서 사용할 수 있습니다. AI Builder는 Power Apps와 Power Automate에서 사용할 수 있습니다. 이 레슨에서는 교육 스타트업을 위한 솔루션을 구축하기 위해 Power Apps와 Power Automate에서 Copilot과 AI Builder를 사용하는 방법에 중점을 둘 것입니다. - -### Power Apps에서의 Copilot - -Power Apps는 Power Platform의 일부로, 데이터를 추적, 관리 및 상호 작용하기 위한 앱을 구축하기 위한 low-code 개발 환경을 제공합니다. 확장 가능한 데이터 플랫폼과 클라우드 서비스 및 온프레미스 데이터에 연결할 수 있는 기능을 갖춘 앱 개발 서비스 모음입니다. Power Apps를 사용하면 브라우저, 태블릿 및 휴대폰에서 실행되는 앱을 구축하고 동료들과 공유할 수 있습니다. Power Apps는 간단한 인터페이스로 사용자를 앱 개발로 안내하여 모든 비즈니스 사용자나 전문 개발자가 사용자 정의 앱을 구축할 수 있습니다. 앱 개발 경험은 또한 생성형 AI를 통해 Copilot과 함께 향상됩니다. - -Power Apps의 Copilot AI 어시스턴트 기능을 사용하면 필요한 앱 종류와 앱이 추적, 수집 또는 표시해야 하는 정보를 설명할 수 있습니다. Copilot은 이 설명을 기반으로 반응형 캔버스 앱을 생성합니다. 그런 다음 앱을 사용자의 요구에 맞게 사용자 정의할 수 있습니다. AI Copilot은 또한 데이터를 추적하려는 필드와 일부 샘플 데이터가 포함된 Dataverse 테이블을 생성하고 제안합니다. 이후 대화식 단계를 통해 AI Copilot 어시스턴트 기능을 사용하여 테이블을 사용자의 요구에 맞게 사용자 정의할 수 있습니다. 이 기능은 Power Apps 홈 화면에서 즉시 사용할 수 있습니다. - -### Power Automate에서의 Copilot - -Power Automate는 Power Platform의 일부로, 응용 프로그램 및 서비스 간에 자동화된 워크플로우를 생성할 수 있도록 도와줍니다. 의사 결정 승인, 커뮤니케이션, 데이터 수집과 같은 반복적인 비즈니스 프로세스를 자동화하는 데 도움이 됩니다. 간단한 인터페이스를 통해 모든 기술 역량을 갖춘 사용자(초보자부터 숙련된 개발자까지)가 작업 작업을 자동화할 수 있습니다. 워크플로우 개발 경험은 또한 생성형 AI를 통해 Copilot과 함께 향상됩니다. - -Power Automate의 Copilot AI 어시스턴트 기능을 사용하면 필요한 플로우 종류와 플로우가 수행해야 하는 작업을 설명할 수 있습니다. Copilot은 이 설명을 기반으로 플로우를 생성합니다. 그런 다음 플로우를 사용자의 요구에 맞게 사용자 정의할 수 있습니다. AI Copilot은 또한 자동화하려는 작업을 수행하기 위해 필요한 작업을 생성하고 제안합니다. 이후 대화식 단계를 통해 AI Copilot 어시스턴트 기능을 사용하여 작업을 사용자의 요구에 맞게 사용자 정의할 수 있습니다. 이 기능은 Power Automate 홈 화면에서 즉시 사용할 수 있습니다. - -## 과제: Copilot을 사용하여 학생 과제 및 송장을 관리하는 솔루션 구축 - -우리 스타트업은 학생들에게 온라인 강좌를 제공합니다. 스타트업은 빠르게 성장하여 강좌 수요를 따라가기 어려워졌습니다. 스타트업은 학생 과제와 송장 처리 프로세스를 관리하기 위해 low code 솔루션을 구축하는 데 도움을 받기 위해 Power Platform 개발자로서 여러분을 고용했습니다. 솔루션은 앱을 통해 학생 과제를 추적하고 관리하며, 워크플로우를 통해 송장 처리 프로세스를 자동화해야 합니다. 여러분은 생성형 AI를 사용하여 솔루션을 개발하도록 요청받았습니다. - -Copilot 사용을 시작할 때는 [Power Platform Copilot Prompt Library](https://github.com/pnp/powerplatform-prompts?WT.mc_id=academic-109639-somelezediko)를 사용하여 프롬프트로 시작할 수 있습니다. 이 라이브러리에는 Copilot을 사용하여 앱과 플로우를 구축하는 데 사용할 수 있는 프롬프트 목록이 포함되어 있습니다. 또한 라이브러리의 프롬프트를 사용하여 Copilot에게 요구 사항을 설명하는 방법에 대한 아이디어를 얻을 수 있습니다. - -### 학생 과제 추적 앱 구축하기 - -우리 스타트업의 교육자들은 학생 과제를 추적하는 데 어려움을 겪고 있습니다. 학생 수가 증가함에 따라 스프레드시트를 사용하여 과제를 추적하고 있지만 관리하기 어려워졌습니다. 교육자들은 학생 과제를 추적하고 관리할 수 있는 앱을 구축해 달라고 요청했습니다. 이 앱은 새로운 과제를 추가하고, 과제를 보고, 과제를 업데이트하고, 과제를 삭제할 수 있어야 합니다. 또한 교육자와 학생 모두가 채점된 과제와 채점되지 않은 과제를 볼 수 있어야 합니다. - -다음 단계를 따라 Power Apps에서 Copilot을 사용하여 앱을 구축하겠습니다: - -1. [Power Apps](https://make.powerapps.com?WT.mc_id=academic-105485-koreyst) 홈 화면으로 이동합니다. - -2. 왼쪽 탐색 창에서 **Tables**을 선택한 다음 **Describe the new Table**을 클릭합니다. - -3. 홈 화면의 텍스트 영역을 사용하여 구축하려는 앱을 설명합니다. 예를 들어, **_학생 과제를 추적하고 관리하기 위한 앱을 구축하고 싶습니다_**. **Send** 버튼을 클릭하여 AI Copilot에게 프롬프트를 전송합니다. - -![Describe the app you want to build](../../images/copilot-chat-prompt-powerapps.png?WT.mc_id=academic-105485-koreyst) - -4. AI Copilot은 데이터베이스 테이블을 제안하며, 추적하려는 데이터를 저장하기 위해 필요한 필드와 일부 샘플 데이터를 제공합니다. 그런 다음 대화식 단계를 통해 테이블을 사용자 정의하여 요구 사항에 맞게 만들 수 있습니다. - - > **중요**: Dataverse는 Power Platform의 기반이 되는 데이터 플랫폼입니다. 앱의 데이터를 저장하기 위한 low-code 데이터 플랫폼으로, Microsoft Cloud에 안전하게 데이터를 저장하며 Power Platform 환경 내에서 프로비저닝됩니다. 데이터 분류, 데이터 계보, 세밀한 액세스 제어 등과 같은 내장 데이터 거버넌스 기능을 갖추고 있습니다. Dataverse에 대해 자세히 알아보려면 [여기](https://docs.microsoft.com/powerapps/maker/data-platform/data-platform-intro?WT.mc_id=academic-109639-somelezediko)를 참조하세요. - - ![새로운 테이블에 제안된 필드](../../images/copilot-dataverse-table-powerapps.png?WT.mc_id=academic-105485-koreyst) - -5. 교육자들은 과제를 제출한 학생들에게 진행 상황을 알리기 위해 이메일을 보내고 싶어합니다. Copilot을 사용하여 테이블에 학생 이메일을 저장할 새로운 필드를 추가할 수 있습니다. 예를 들어, 다음과 같은 프롬프트를 사용하여 테이블에 새로운 필드를 추가할 수 있습니다: **_학생 이메일을 저장할 열을 추가하고 싶습니다_**. **Send** 버튼을 클릭하여 AI Copilot에게 프롬프트를 전송합니다. - -![Adding a new field](../../images/copilot-new-column.png?WT.mc_id=academic-105485-koreyst) - -6. AI Copilot은 새로운 필드를 생성하고, 사용자 정의하여 요구 사항에 맞게 만들 수 있습니다. - -7. 테이블 작업이 완료되면 **Create app** 버튼을 클릭하여 앱을 생성합니다. - -8. AI Copilot은 설명에 기반한 반응형 캔버스 앱을 생성하며, 사용자 정의하여 요구 사항에 맞게 만들 수 있습니다. - -9. 교육자가 학생들에게 이메일을 보낼 수 있도록 앱에 새로운 화면을 추가할 수 있습니다. 예를 들어, 다음과 같은 프롬프트를 사용하여 앱에 새로운 화면을 추가할 수 있습니다: **_학생들에게 이메일을 보내기 위한 화면을 추가하고 싶습니다_**. **Send** 버튼을 클릭하여 AI Copilot에게 프롬프트를 전송합니다. - -![Adding a new screen via a prompt instruction](../../images/copilot-new-screen.png?WT.mc_id=academic-105485-koreyst) - -10. AI Copilot은 새로운 화면을 생성하고, 사용자 정의하여 요구 사항에 맞게 만들 수 있습니다. - -11. 앱 작업이 완료되면 **Save** 버튼을 클릭하여 앱을 저장합니다. - -12. 교육자와 앱을 공유하려면 **Share** 버튼을 클릭한 다음 **Share** 버튼을 다시 클릭합니다. 그런 다음 교육자의 이메일 주소를 입력하여 앱을 공유할 수 있습니다. - -> **과제**: 방금 구축한 앱은 좋은 시작이지만 개선할 수 있습니다. 이메일 기능을 사용하면 교육자는 학생들에게 이메일을 수동으로 보내야 합니다. Copilot을 사용하여 학생들이 과제를 제출할 때 자동으로 교육자에게 이메일을 보낼 수 있는 자동화를 구축할 수 있을까요? 힌트는 적절한 프롬프트를 사용하여 Power Automate에서 Copilot을 사용하여 이를 구축할 수 있다는 것입니다. - -### 우리 스타트업을 위한 송장 정보 테이블 구축하기 - -우리 스타트업의 재무팀은 송장을 처리하는 데 어려움을 겪고 있습니다. 송장을 추적하기 위해 스프레드시트를 사용하고 있지만 송장 수가 증가함에 따라 관리하기 어려워졌습니다. 그들은 송장 정보를 추출하고 해당 정보를 Dataverse 테이블에 저장하는 자동화를 구축할 수 있는 테이블을 만들어 달라고 요청했습니다. 또한 송장이 지불된 것과 미지불된 것을 확인할 수 있는 테이블을 제공해야 합니다. - -Power Platform에는 Dataverse라는 데이터 플랫폼이 있어 앱과 솔루션의 데이터를 저장할 수 있습니다. Dataverse는 앱의 데이터를 저장하기 위한 low-code 데이터 플랫폼으로, Microsoft Cloud에 안전하게 데이터를 저장하며 Power Platform 환경 내에서 프로비저닝됩니다. 데이터 분류, 데이터 계보, 세밀한 액세스 제어 등과 같은 내장 데이터 거버넌스 기능을 갖추고 있습니다. Dataverse에 대해 자세히 알아보려면 [여기](https://docs.microsoft.com/powerapps/maker/data-platform/data-platform-intro?WT.mc_id=academic-109639-somelezediko)를 참조하세요. - -우리 스타트업이 Dataverse를 사용해야 하는 이유는 무엇일까요? Dataverse 내의 표준 및 사용자 정의 테이블은 데이터를 위한 안전하고 클라우드 기반의 저장 옵션을 제공합니다. 테이블은 하나의 Excel 워크북에서 여러 개의 워크시트를 사용하는 것과 유사하게 다양한 유형의 데이터를 저장할 수 있습니다. 테이블을 사용하여 조직 또는 비즈니스 요구에 맞는 데이터를 저장할 수 있습니다. 우리 스타트업이 Dataverse를 사용함으로써 얻을 수 있는 이점은 다음과 같습니다. - -- **쉬운 관리**: 메타데이터와 데이터 모두 클라우드에 저장되므로 저장 또는 관리 방법에 대해 걱정할 필요가 없습니다. 앱과 솔루션 구축에 집중할 수 있습니다. - -- **보안**: Dataverse는 데이터를 위한 안전하고 클라우드 기반의 저장 옵션을 제공합니다. 역할 기반 보안을 사용하여 테이블의 데이터에 액세스할 수 있는 사용자와 액세스 방법을 제어할 수 있습니다. - -- **풍부한 메타데이터**: 데이터 유형과 관계를 Power Apps에서 직접 사용할 수 있습니다. - -- **로직 및 유효성 검사**: 비즈니스 규칙, 계산 필드 및 유효성 검사 규칙을 사용하여 비즈니스 로직을 강제하고 데이터의 정확성을 유지할 수 있습니다. - -이제 Dataverse가 무엇인지 알고 왜 사용해야 하는지 알았으니, AI Copilot을 사용하여 재무팀의 요구 사항을 충족하는 Dataverse 테이블을 생성하는 방법을 살펴보겠습니다. - -> **참고**: 이 테이블은 다음 섹션에서 송장 정보를 추출하고 해당 정보를 저장하는 자동화를 구축하는 데 사용됩니다. - -Copilot을 사용하여 Dataverse에서 테이블을 생성하려면 다음 단계를 따르세요: - -1. [Power Apps](https://make.powerapps.com?WT.mc_id=academic-105485-koreyst) 홈 화면으로 이동합니다. - -2. 왼쪽 탐색 창에서 **Tables**을 선택한 다음 **Describe the new Table**을 클릭합니다. - -![Select new table](../../images/describe-new-table.png?WT.mc_id=academic-105485-koreyst) - -3. **Describe the new Table** 화면에서 테이블을 생성할 내용을 텍스트 영역에 설명합니다. 예를 들어, **_송장 정보를 저장하기 위한 테이블을 생성하고 싶습니다_**. **Send** 버튼을 클릭하여 AI Copilot에게 프롬프트를 전송합니다. - -![Describe the table](../../images/copilot-chat-prompt-dataverse.png?WT.mc_id=academic-105485-koreyst) - -4. AI Copilot은 필요한 필드와 일부 샘플 데이터를 포함한 Dataverse 테이블을 제안합니다. 그런 다음 AI Copilot 도우미 기능을 통해 대화식 단계를 통해 테이블을 사용자 정의하여 요구 사항에 맞게 만들 수 있습니다. - -![Suggested Dataverse table](../../images/copilot-dataverse-table.png?WT.mc_id=academic-105485-koreyst) - -5. 재무팀은 공급업체에게 송장의 현재 상태를 알리기 위해 이메일을 보내고 싶어합니다. Copilot을 사용하여 테이블에 공급업체 이메일을 저장할 새로운 필드를 추가할 수 있습니다. 예를 들어, 다음과 같은 프롬프트를 사용하여 테이블에 새로운 필드를 추가할 수 있습니다: **_공급업체 이메일을 저장할 열을 추가하고 싶습니다_**. **Send** 버튼을 클릭하여 AI Copilot에게 프롬프트를 전송합니다. - -6. AI Copilot은 새로운 필드를 생성하고, 사용자 정의하여 요구 사항에 맞게 만들 수 있습니다. - -7. 테이블 작업이 완료되면 **Create** 버튼을 클릭하여 테이블을 생성합니다. - -## AI Builder를 사용한 Power Platform의 AI 모델 - -AI Builder는 Power Platform에서 사용할 수 있는 low-code AI 기능으로, 프로세스 자동화와 결과 예측을 도와주는 AI 모델을 사용할 수 있습니다. AI Builder를 사용하면 Dataverse나 SharePoint, OneDrive, Azure와 같은 다양한 클라우드 데이터 소스 또는 Dataverse 내의 데이터에 연결된 앱과 플로우에 AI를 적용할 수 있습니다. - -AI Builder는 두 가지 유형의 AI 모델을 제공합니다: Prebuilt AI 모델과 Custom AI 모델입니다. Prebuilt AI 모델은 Microsoft에서 훈련한 사용 준비가 된 AI 모델로, Power Platform에서 사용할 수 있습니다. 이 모델을 사용하면 데이터를 수집하고 모델을 빌드, 훈련 및 게시할 필요 없이 앱과 플로우에 지능을 추가할 수 있습니다. 이러한 모델을 사용하여 프로세스를 자동화하고 결과를 예측할 수 있습니다. - -Power Platform에서 사용할 수 있는 Prebuilt AI 모델 중 일부는 다음과 같습니다: - -- **키 구문 추출**: 이 모델은 텍스트에서 키 구문을 추출합니다. -- **언어 감지**: 이 모델은 텍스트의 언어를 감지합니다. -- **감정 분석**: 이 모델은 텍스트의 긍정적, 부정적, 중립적 또는 혼합된 감정을 감지합니다. -- **명함 판독기**: 이 모델은 명함에서 정보를 추출합니다. -- **텍스트 인식**: 이 모델은 이미지에서 텍스트를 추출합니다. -- **객체 감지**: 이 모델은 이미지에서 객체를 감지하고 추출합니다. -- **양식 처리**: 이 모델은 양식에서 정보를 추출합니다. -- **송장 처리**: 이 모델은 송장에서 정보를 추출합니다. - -Custom AI 모델을 사용하면 AI Builder에 직접 모델을 가져와서 AI Builder 사용자 정의 모델과 같은 방식으로 작동하도록 할 수 있습니다. 이 모델을 사용하여 Power Apps와 Power Automate에서 프로세스를 자동화하고 결과를 예측할 수 있습니다. 사용자 정의 모델을 사용할 때는 일부 제한 사항이 적용됩니다. 이에 대한 자세한 내용은 [여기](https://learn.microsoft.com/ai-builder/byo-model#limitations?WT.mc_id=academic-105485-koreyst)를 참조하세요. - -![AI builder models](../../images/ai-builder-models.png?WT.mc_id=academic-105485-koreyst) - -## 과제 #2 - 우리 스타트업을 위한 송장 처리 플로우 구축하기 - -재무팀은 송장 처리에 어려움을 겪고 있습니다. 송장을 추적하기 위해 스프레드시트를 사용하고 있지만 송장 수가 증가함에 따라 관리하기 어려워졌습니다. 그들은 AI를 활용하여 송장을 처리하는 워크플로우를 구축해주길 요청했습니다. 이 워크플로우는 송장에서 정보를 추출하고 해당 정보를 Dataverse 테이블에 저장할 수 있어야 합니다. 또한 추출된 정보를 재무팀에게 이메일로 보낼 수 있어야 합니다. - -AI Builder가 무엇이며 왜 사용해야 하는지 알았으니, 앞서 다룬 AI Builder의 송장 처리 AI 모델을 활용하여 재무팀이 송장을 처리하는 데 도움이 되는 워크플로우를 구축하는 방법을 알아보겠습니다. - -AI Builder의 송장 처리 AI 모델을 활용하여 재무팀이 송장을 처리하는 워크플로우를 구축하려면 다음 단계를 따르세요: - -1. [Power Automate](https://make.powerautomate.com?WT.mc_id=academic-105485-koreyst) 홈 화면으로 이동합니다. - -2. 홈 화면의 텍스트 영역을 사용하여 구축하려는 워크플로우를 설명합니다. 예를 들어, **_송장이 메일함에 도착했을 때 송장을 처리합니다_**. **Send** 버튼을 클릭하여 AI Copilot에게 프롬프트를 전송합니다. - - ![Copilot power automate](../../images/copilot-chat-prompt-powerautomate.png?WT.mc_id=academic-105485-koreyst) - -3. AI Copilot은 자동화하려는 작업을 수행하기 위해 필요한 동작을 제안합니다. 다음 단계를 진행하려면 **Next** 버튼을 클릭할 수 있습니다. - -4. 다음 단계에서 Power Automate는 워크플로우에 필요한 연결 설정을 위해 프롬프트를 표시합니다. 설정을 완료한 후 **Create flow** 버튼을 클릭하여 워크플로우를 생성합니다. - -5. AI Copilot은 워크플로우를 생성하고, 원하는 대로 워크플로우를 사용자 정의할 수 있습니다. - -6. 워크플로우의 트리거를 업데이트하고 **Folder**를 송장이 저장될 폴더로 설정합니다. 예를 들어, **Inbox**로 폴더를 설정할 수 있습니다. **Show advanced options**를 클릭하고 **Only with Attachments**를 **Yes**로 설정합니다. 이렇게 하면 워크플로우가 첨부 파일이 포함된 이메일이 폴더에 도착했을 때만 실행되도록 할 수 있습니다. - -7. 워크플로우에서 다음 동작을 제거합니다: **HTML to text**, **Compose**, **Compose 2**, **Compose 3**, **Compose 4**. 이 동작들은 사용하지 않을 것이기 때문에 제거합니다. - -8. 워크플로우에서 **Condition** 동작을 제거합니다. 사용하지 않을 것이기 때문에 제거합니다. 다음과 같이 보일 것입니다: - - ![power automate, remove actions](../../images/powerautomate-remove-actions.png?WT.mc_id=academic-105485-koreyst) - -9. **Add an action** 버튼을 클릭하고 **Dataverse**를 검색합니다. **Add a new row** 동작을 선택합니다. - -10. **송장에서 정보 추출** 동작에서 **Invoice File**을 이메일의 **Attachment Content**로 설정합니다. 이렇게 하면 워크플로우가 송장 첨부 파일에서 정보를 추출할 수 있습니다. - -11. 이전에 생성한 **Table**을 선택합니다. 예를 들어, **Invoice Information** 테이블을 선택할 수 있습니다. 이전 동작의 동적 콘텐츠를 사용하여 다음 필드를 채웁니다: - - - ID - - Amount - - Date - - Name - - Status - **Status**를 **Pending**으로 설정합니다. - - Supplier Email - **When a new email arrives** 트리거의 **From** 동적 콘텐츠를 사용합니다. - - ![power automate add row](../../images/powerautomate-add-row.png?WT.mc_id=academic-105485-koreyst) - -12. 워크플로우 작업이 완료되면 **Save** 버튼을 클릭하여 워크플로우를 저장합니다. 그런 다음 지정한 폴더로 송장 첨부 파일이 포함된 이메일을 보내어 워크플로우를 테스트할 수 있습니다. - -> **과제**: 방금 구축한 워크플로우는 좋은 시작입니다. 이제 재무팀이 공급업체에게 송장의 현재 상태를 알리기 위해 이메일을 보낼 수 있는 자동화를 구축하는 방법을 고민해보세요. 힌트: 워크플로우는 송장의 상태가 변경될 때 실행되어야 합니다. - -## Power Automate에서 텍스트 생성 AI 모델 사용하기 - -AI Builder의 Create Text with GPT AI 모델은 Microsoft Azure OpenAI 서비스를 기반으로 프롬프트를 기반으로 텍스트를 생성할 수 있는 기능을 제공합니다. 이 기능을 사용하면 GPT (Generative Pre-Trained Transformer) 기술을 앱과 워크플로우에 통합하여 다양한 자동화 흐름과 통찰력 있는 애플리케이션을 구축할 수 있습니다. - -GPT 모델은 방대한 양의 데이터를 기반으로 광범위한 훈련을 거쳐 프롬프트가 제공되면 인간의 언어와 유사한 텍스트를 생성할 수 있습니다. 워크플로우 자동화와 통합되면 GPT와 같은 AI 모델을 활용하여 다양한 작업을 간소화하고 자동화할 수 있습니다. - -예를 들어, 다음과 같은 다양한 용도로 텍스트를 자동으로 생성하는 흐름을 구축할 수 있습니다: 이메일 초안, 제품 설명 등. 또한 이 모델을 사용하여 챗봇과 고객 서비스 앱과 같은 다양한 앱에 텍스트를 생성할 수 있으며, 이를 통해 고객 서비스 담당자가 고객 문의에 효과적으로 대응할 수 있습니다. - -![create a prompt](../../images/create-prompt-gpt.png?WT.mc_id=academic-105485-koreyst) - -Power Automate에서 이 AI 모델을 사용하는 방법에 대해 자세히 알아보려면 [AI Builder와 GPT를 사용하여 지능 추가하기](https://learn.microsoft.com/training/modules/ai-builder-text-generation/?WT.mc_id=academic-109639-somelezediko) 모듈을 참조하세요. - -## 잘하셨습니다. 학습을 계속하세요! - -이 레슨을 완료한 후 [Generative AI 학습 컬렉션](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst)을 확인하여 생성형 AI 지식을 계속 향상시킬 수 있습니다! - -다음 레슨인 [Function Calling과 생성형 AI 통합](../../../11-integrating-with-function-calling/translations/ko/README.md?WT.mc_id=academic-105485-koreyst)을 살펴보세요! diff --git a/10-building-low-code-ai-applications/translations/pl/README.md b/10-building-low-code-ai-applications/translations/pl/README.md deleted file mode 100644 index 8d9c3951a2..0000000000 --- a/10-building-low-code-ai-applications/translations/pl/README.md +++ /dev/null @@ -1,246 +0,0 @@ -# Budowanie Aplikacji AI z Wykorzystaniem Narzędzi Niskokodowych - -[![Budowanie Aplikacji AI z Wykorzystaniem Narzędzi Niskokodowych](../../images/10-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson10-gh?WT.mc_id=academic-105485-koreyst) - -> _(Kliknij powyższy obraz, aby obejrzeć wideo z tej lekcji)_ - -## Wprowadzenie - -Teraz, gdy nauczyliśmy się budować aplikacje generujące obrazy, porozmawiajmy o podejściu niskokodowym. Generatywna SI może być wykorzystywana w różnych obszarach, w tym w rozwiązaniach niskokodowych, ale czym właściwie jest podejście niskokodowe i jak możemy wzbogacić je o sztuczną inteligencję? - -Tworzenie aplikacji i rozwiązań stało się łatwiejsze zarówno dla tradycyjnych programistów, jak i osób nieposiadających umiejętności programowania, dzięki wykorzystaniu Platform Programistycznych Low-Code. Platformy te umożliwiają budowanie aplikacji i rozwiązań przy minimalnej ilości kodu lub całkowicie bez niego. Osiąga się to dzięki wizualnemu środowisku programistycznemu, które pozwala przeciągać i upuszczać komponenty w celu tworzenia aplikacji i rozwiązań. Umożliwia to budowanie aplikacji i rozwiązań szybciej i przy mniejszych zasobach. W tej lekcji zagłębimy się w to, jak korzystać z podejścia Low-Code i jak wzbogacić je o AI za pomocą Power Platform. - -Power Platform daje organizacjom możliwość umożliwienia swoim zespołom budowania własnych rozwiązań poprzez intuicyjne środowisko niskokodowe lub bezkodowe. To środowisko pomaga uprościć proces tworzenia rozwiązań. Dzięki Power Platform rozwiązania mogą być budowane w ciągu dni lub tygodni zamiast miesięcy czy lat. Power Platform składa się z pięciu kluczowych produktów: Power Apps, Power Automate, Power BI, Power Pages i Copilot Studio. - -Ta lekcja obejmuje: - -- Wprowadzenie do Generatywnej SI w Power Platform -- Wprowadzenie do Copilota i jego wykorzystanie -- Korzystanie z Generatywnej SI do budowania aplikacji i przepływów w Power Platform -- Zrozumienie modeli SI w Power Platform z AI Builder - -## Cele Nauki - -Po zakończeniu tej lekcji będziesz potrafić: - -- Zrozumieć, jak działa Copilot w Power Platform. - -- Zbudować Aplikację do Śledzenia Zadań Studenckich dla naszego edukacyjnego startupu. - -- Zbudować Przepływ Przetwarzania Faktur, który wykorzystuje SI do wyodrębniania informacji z faktur. - -- Stosować najlepsze praktyki podczas korzystania z modelu SI Tworzenia Tekstu z GPT. - -Narzędzia i technologie, których użyjesz w tej lekcji, to: - -- **Power Apps**, do stworzenia aplikacji do śledzenia zadań studenckich, zapewniającej niskokodowe środowisko do tworzenia aplikacji do śledzenia, zarządzania i interakcji z danymi. - -- **Dataverse**, do przechowywania danych dla aplikacji do śledzenia zadań studenckich, gdzie Dataverse zapewni niskokodową platformę danych do przechowywania danych aplikacji. - -- **Power Automate**, do przepływu przetwarzania faktur, gdzie będziesz mieć niskokodowe środowisko programistyczne do budowania przepływów pracy automatyzujących proces przetwarzania faktur. - -- **AI Builder**, do modelu SI przetwarzania faktur, gdzie będziesz używać gotowych modeli SI do przetwarzania faktur dla naszego startupu. - -## Generatywna SI w Power Platform - -Wzbogacanie niskokodowego tworzenia aplikacji i ich funkcjonalności o generatywną sztuczną inteligencję jest kluczowym obszarem zainteresowania Power Platform. Celem jest umożliwienie każdemu budowania aplikacji, stron, pulpitów i automatyzacji procesów z wykorzystaniem SI, _bez wymagania jakiejkolwiek wiedzy z zakresu nauki o danych_. Ten cel jest osiągany poprzez integrację generatywnej SI z doświadczeniem programistycznym w Power Platform w formie Copilota i AI Builder. - -### Jak to działa? - -Copilot to asystent SI, który umożliwia tworzenie rozwiązań Power Platform poprzez opisanie wymagań w serii konwersacyjnych kroków przy użyciu języka naturalnego. Możesz na przykład polecić asystentowi SI określenie, jakie pola będzie używać Twoja aplikacja, a on stworzy zarówno aplikację, jak i bazowy model danych, lub możesz określić, jak skonfigurować przepływ w Power Automate. - -Możesz używać funkcji napędzanych przez Copilota jako funkcji w ekranach aplikacji, aby umożliwić użytkownikom odkrywanie spostrzeżeń poprzez interakcje konwersacyjne. - -AI Builder to niskokodowa możliwość SI dostępna w Power Platform, która umożliwia korzystanie z modeli SI, aby pomóc w automatyzacji procesów i przewidywaniu wyników. Dzięki AI Builder możesz wprowadzić SI do swoich aplikacji i przepływów, które łączą się z Twoimi danymi w Dataverse lub w różnych źródłach danych w chmurze, takich jak SharePoint, OneDrive czy Azure. - -Copilot jest dostępny we wszystkich produktach Power Platform: Power Apps, Power Automate, Power BI, Power Pages i Power Virtual Agents. AI Builder jest dostępny w Power Apps i Power Automate. W tej lekcji skupimy się na tym, jak używać Copilota i AI Builder w Power Apps i Power Automate do budowania rozwiązania dla naszego edukacyjnego startupu. - -### Copilot w Power Apps - -Jako część Power Platform, Power Apps zapewnia niskokodowe środowisko programistyczne do budowania aplikacji do śledzenia, zarządzania i interakcji z danymi. To zestaw usług do tworzenia aplikacji ze skalowalną platformą danych i możliwością łączenia się z usługami w chmurze i danymi lokalnymi. Power Apps pozwala budować aplikacje, które działają w przeglądarkach, na tabletach i telefonach, i mogą być udostępniane współpracownikom. Power Apps ułatwia użytkownikom tworzenie aplikacji dzięki prostemu interfejsowi, dzięki czemu każdy użytkownik biznesowy lub profesjonalny deweloper może tworzyć niestandardowe aplikacje. Doświadczenie tworzenia aplikacji jest również wzbogacone o Generatywną SI dzięki Copilotowi. - -Funkcja asystenta SI Copilot w Power Apps umożliwia opisanie, jakiego rodzaju aplikacji potrzebujesz i jakie informacje chcesz, aby Twoja aplikacja śledziła, zbierała lub pokazywała. Copilot następnie generuje responsywną aplikację Canvas na podstawie Twojego opisu. Możesz następnie dostosować aplikację do swoich potrzeb. AI Copilot generuje i sugeruje również tabelę Dataverse z polami, których potrzebujesz do przechowywania danych, które chcesz śledzić, oraz przykładowe dane. Później w tej lekcji przyjrzymy się, czym jest Dataverse i jak możesz go używać w Power Apps. Możesz następnie dostosować tabelę do swoich potrzeb, korzystając z funkcji asystenta AI Copilot poprzez kroki konwersacyjne. Ta funkcja jest łatwo dostępna z ekranu głównego Power Apps. - -### Copilot w Power Automate - -Jako część Power Platform, Power Automate pozwala użytkownikom tworzyć zautomatyzowane przepływy pracy między aplikacjami i usługami. Pomaga automatyzować powtarzalne procesy biznesowe, takie jak komunikacja, zbieranie danych i zatwierdzanie decyzji. Jego prosty interfejs pozwala użytkownikom o każdej kompetencji technicznej (od początkujących po doświadczonych programistów) automatyzować zadania. Doświadczenie tworzenia przepływów pracy jest również wzbogacone o Generatywną SI dzięki Copilotowi. - -Funkcja asystenta SI Copilot w Power Automate umożliwia opisanie, jakiego rodzaju przepływu potrzebujesz i jakie działania chcesz, aby Twój przepływ wykonywał. Copilot następnie generuje przepływ na podstawie Twojego opisu. Możesz następnie dostosować przepływ do swoich potrzeb. AI Copilot generuje i sugeruje również akcje, których potrzebujesz do wykonania zadania, które chcesz zautomatyzować. Później w tej lekcji przyjrzymy się, czym są przepływy i jak możesz ich używać w Power Automate. Możesz następnie dostosować akcje do swoich potrzeb, korzystając z funkcji asystenta AI Copilot poprzez kroki konwersacyjne. Ta funkcja jest łatwo dostępna z ekranu głównego Power Automate. - -## Zadanie: Zarządzanie zadaniami studentów i fakturami dla naszego startupu przy użyciu Copilota - -Nasz startup oferuje kursy online dla studentów. Startup rozwinął się szybko i teraz ma trudności z nadążeniem za popytem na swoje kursy. Startup zatrudnił Cię jako dewelopera Power Platform, aby pomóc im zbudować niskokodowe rozwiązanie, które pomoże im zarządzać zadaniami studentów i fakturami. Ich rozwiązanie powinno umożliwiać śledzenie i zarządzanie zadaniami studentów poprzez aplikację oraz automatyzować proces przetwarzania faktur poprzez przepływ pracy. Poproszono Cię o wykorzystanie Generatywnej SI do opracowania rozwiązania. - -Kiedy zaczynasz korzystać z Copilota, możesz użyć [Biblioteki Promptów Power Platform Copilot](https://github.com/pnp/powerplatform-prompts?WT.mc_id=academic-109639-somelezediko), aby rozpocząć pracę z promptami. Ta biblioteka zawiera listę promptów, których możesz użyć do budowania aplikacji i przepływów z Copilotem. Możesz również użyć promptów w bibliotece, aby uzyskać wyobrażenie o tym, jak opisać swoje wymagania Copilotowi. - -### Budowanie Aplikacji do Śledzenia Zadań Studenckich dla Naszego Startupu - -Edukatorzy w naszym startupie mają trudności z śledzeniem zadań studentów. Używali arkusza kalkulacyjnego do śledzenia zadań, ale stało się to trudne do zarządzania wraz ze wzrostem liczby studentów. Poprosili Cię o zbudowanie aplikacji, która pomoże im śledzić i zarządzać zadaniami studentów. Aplikacja powinna umożliwiać im dodawanie nowych zadań, przeglądanie zadań, aktualizowanie zadań i usuwanie zadań. Aplikacja powinna również umożliwiać edukatorom i studentom przeglądanie zadań, które zostały ocenione i tych, które nie zostały ocenione. - -Zbudujesz aplikację używając Copilota w Power Apps, wykonując poniższe kroki: - -1. Przejdź do ekranu głównego [Power Apps](https://make.powerapps.com?WT.mc_id=academic-105485-koreyst). - -1. Użyj pola tekstowego na ekranie głównym, aby opisać aplikację, którą chcesz zbudować. Na przykład, **_Chcę zbudować aplikację do śledzenia i zarządzania zadaniami studentów_**. Kliknij przycisk **Wyślij**, aby wysłać prompt do AI Copilot. - -![Opisz aplikację, którą chcesz zbudować](../../images/copilot-chat-prompt-powerapps.png?WT.mc_id=academic-105485-koreyst) - -1. AI Copilot zasugeruje tabelę Dataverse z polami, których potrzebujesz do przechowywania danych, które chcesz śledzić, oraz przykładowe dane. Możesz następnie dostosować tabelę do swoich potrzeb, korzystając z funkcji asystenta AI Copilot poprzez kroki konwersacyjne. - - > **Ważne**: Dataverse to bazowa platforma danych dla Power Platform. To niskokodowa platforma danych do przechowywania danych aplikacji. Jest w pełni zarządzaną usługą, która bezpiecznie przechowuje dane w chmurze Microsoft i jest dostarczana w ramach Twojego środowiska Power Platform. Zawiera wbudowane możliwości zarządzania danymi, takie jak klasyfikacja danych, linia pochodzenia danych, szczegółowa kontrola dostępu i więcej. Możesz dowiedzieć się więcej o Dataverse [tutaj](https://docs.microsoft.com/powerapps/maker/data-platform/data-platform-intro?WT.mc_id=academic-109639-somelezediko). - - ![Sugerowane pola w nowej tabeli](../../images/copilot-dataverse-table-powerapps.png?WT.mc_id=academic-105485-koreyst) - -1. Edukatorzy chcą wysyłać e-maile do studentów, którzy złożyli swoje zadania, aby informować ich o postępie ich zadań. Możesz użyć Copilota, aby dodać nowe pole do tabeli do przechowywania adresu e-mail studenta. Na przykład, możesz użyć następującego promptu, aby dodać nowe pole do tabeli: **_Chcę dodać kolumnę do przechowywania adresu e-mail studenta_**. Kliknij przycisk **Wyślij**, aby wysłać prompt do AI Copilot. - -![Dodawanie nowego pola](../../images/copilot-new-column.png?WT.mc_id=academic-105485-koreyst) - -1. AI Copilot wygeneruje nowe pole i możesz następnie dostosować pole do swoich potrzeb. - -1. Po zakończeniu pracy z tabelą kliknij przycisk **Utwórz aplikację**, aby utworzyć aplikację. - -1. AI Copilot wygeneruje responsywną aplikację Canvas na podstawie Twojego opisu. Możesz następnie dostosować aplikację do swoich potrzeb. - -1. Aby edukatorzy mogli wysyłać e-maile do studentów, możesz użyć Copilota, aby dodać nowy ekran do aplikacji. Na przykład, możesz użyć następującego promptu, aby dodać nowy ekran do aplikacji: **_Chcę dodać ekran do wysyłania e-maili do studentów_**. Kliknij przycisk **Wyślij**, aby wysłać prompt do AI Copilot. - -![Dodawanie nowego ekranu za pomocą instrukcji promptu](../../images/copilot-new-screen.png?WT.mc_id=academic-105485-koreyst) - -1. AI Copilot wygeneruje nowy ekran i możesz następnie dostosować ekran do swoich potrzeb. - -1. Po zakończeniu pracy z aplikacją kliknij przycisk **Zapisz**, aby zapisać aplikację. - -1. Aby udostępnić aplikację edukatorom, kliknij przycisk **Udostępnij**, a następnie kliknij ponownie przycisk **Udostępnij**. Możesz następnie udostępnić aplikację edukatorom, wprowadzając ich adresy e-mail. - -> **Twoje zadanie domowe**: Aplikacja, którą właśnie zbudowałeś, to dobry początek, ale można ją ulepszyć. Z funkcją e-maila edukatorzy mogą wysyłać e-maile do studentów tylko ręcznie, wpisując ich adresy e-mail. Czy możesz użyć Copilota do zbudowania automatyzacji, która umożliwi edukatorom automatyczne wysyłanie e-maili do studentów, gdy złożą swoje zadania? Wskazówka: z odpowiednim promptem możesz użyć Copilota w Power Automate do zbudowania tego. - -### Budowanie Tabeli Informacji o Fakturach dla Naszego Startupu - -Zespół finansowy naszego startupu ma trudności z śledzeniem faktur. Używali arkusza kalkulacyjnego do śledzenia faktur, ale stało się to trudne do zarządzania wraz ze wzrostem liczby faktur. Poprosili Cię o zbudowanie tabeli, która pomoże im przechowywać, śledzić i zarządzać informacjami o otrzymanych fakturach. Tabela powinna być używana do zbudowania automatyzacji, która wyodrębni wszystkie informacje z faktury i przechowa je w tabeli. Tabela powinna również umożliwiać zespołowi finansowemu przeglądanie faktur, które zostały opłacone i tych, które nie zostały opłacone. - -Power Platform posiada bazową platformę danych o nazwie Dataverse, która umożliwia przechowywanie danych dla twoich aplikacji i rozwiązań. Dataverse zapewnia niskokodową platformę danych do przechowywania danych aplikacji. Jest w pełni zarządzaną usługą, która bezpiecznie przechowuje dane w chmurze Microsoft i jest dostarczana w ramach Twojego środowiska Power Platform. Zawiera wbudowane możliwości zarządzania danymi, takie jak klasyfikacja danych, linia pochodzenia danych, szczegółowa kontrola dostępu i więcej. Możesz dowiedzieć się więcej [o Dataverse tutaj](https://docs.microsoft.com/powerapps/maker/data-platform/data-platform-intro?WT.mc_id=academic-109639-somelezediko). - -Dlaczego powinniśmy używać Dataverse dla naszego startupu? Standardowe i niestandardowe tabele w Dataverse zapewniają bezpieczną i opartą na chmurze opcję przechowywania danych. Tabele pozwalają przechowywać różne typy danych, podobnie jak używałbyś wielu arkuszy w jednym skoroszycie Excel. Możesz używać tabel do przechowywania danych, które są specyficzne dla Twojej organizacji lub potrzeb biznesowych. Niektóre korzyści, jakie nasz startup uzyska z używania Dataverse, obejmują, ale nie ograniczają się do: - -- **Łatwe zarządzanie**: Zarówno metadane, jak i dane są przechowywane w chmurze, więc nie musisz martwić się o szczegóły dotyczące tego, jak są przechowywane lub zarządzane. Możesz skupić się na budowaniu swoich aplikacji i rozwiązań. - -- **Bezpieczeństwo**: Dataverse zapewnia bezpieczną i opartą na chmurze opcję przechowywania danych. Możesz kontrolować, kto ma dostęp do danych w twoich tabelach i jak mogą uzyskać dostęp, używając zabezpieczeń opartych na rolach. - -- **Bogate metadane**: Typy danych i relacje są używane bezpośrednio w Power Apps - -- **Logika i walidacja**: Możesz używać reguł biznesowych, obliczanych pól i reguł walidacji, aby egzekwować logikę biznesową i utrzymywać dokładność danych. - -Teraz, gdy wiesz, czym jest Dataverse i dlaczego powinieneś go używać, przyjrzyjmy się, jak możesz użyć Copilota do utworzenia tabeli w Dataverse, aby spełnić wymagania naszego zespołu finansowego. - -> **Uwaga** : Będziesz używać tej tabeli w następnej sekcji do zbudowania automatyzacji, która wyodrębni wszystkie informacje z faktury i przechowa je w tabeli. - -Aby utworzyć tabelę w Dataverse za pomocą Copilota, wykonaj poniższe kroki: - -1. Przejdź do ekranu głównego [Power Apps](https://make.powerapps.com?WT.mc_id=academic-105485-koreyst). - -2. Na lewym pasku nawigacyjnym wybierz **Tabele**, a następnie kliknij **Opisz nową tabelę**. - -![Wybierz nową tabelę](../../images/describe-new-table.png?WT.mc_id=academic-105485-koreyst) - -1. Na ekranie **Opisz nową tabelę** użyj pola tekstowego, aby opisać tabelę, którą chcesz utworzyć. Na przykład, **_Chcę utworzyć tabelę do przechowywania informacji o fakturach_**. Kliknij przycisk **Wyślij**, aby wysłać prompt do AI Copilot. - -![Opisz tabelę](../../images/copilot-chat-prompt-dataverse.png?WT.mc_id=academic-105485-koreyst) - -1. AI Copilot zasugeruje tabelę Dataverse z polami, których potrzebujesz do przechowywania danych, które chcesz śledzić, oraz przykładowe dane. Możesz następnie dostosować tabelę do swoich potrzeb, korzystając z funkcji asystenta AI Copilot poprzez kroki konwersacyjne. - -![Sugerowana tabela Dataverse](../../images/copilot-dataverse-table.png?WT.mc_id=academic-105485-koreyst) - -1. Zespół finansowy chce wysyłać e-mail do dostawcy, aby informować go o aktualnym statusie ich faktury. Możesz użyć Copilota, aby dodać nowe pole do tabeli do przechowywania adresu e-mail dostawcy. Na przykład, możesz użyć następującego promptu, aby dodać nowe pole do tabeli: **_Chcę dodać kolumnę do przechowywania adresu e-mail dostawcy_**. Kliknij przycisk **Wyślij**, aby wysłać prompt do AI Copilot. - -1. AI Copilot wygeneruje nowe pole i możesz następnie dostosować pole do swoich potrzeb. - -1. Po zakończeniu pracy z tabelą kliknij przycisk **Utwórz**, aby utworzyć tabelę. - -## Modele SI w Power Platform z AI Builder - -AI Builder to niskokodowa możliwość SI dostępna w Power Platform, która umożliwia korzystanie z modeli SI, aby pomóc w automatyzacji procesów i przewidywaniu wyników. Dzięki AI Builder możesz wprowadzić SI do swoich aplikacji i przepływów, które łączą się z Twoimi danymi w Dataverse lub w różnych źródłach danych w chmurze, takich jak SharePoint, OneDrive czy Azure. - -## Gotowe modele SI vs Niestandardowe modele SI - -AI Builder oferuje dwa rodzaje modeli SI: Gotowe modele SI i Niestandardowe modele SI. Gotowe modele SI to modele gotowe do użycia, które są trenowane przez Microsoft i dostępne w Power Platform. Pomagają one dodać inteligencję do Twoich aplikacji i przepływów bez konieczności zbierania danych, a następnie budowania, trenowania i publikowania własnych modeli. Możesz używać tych modeli do automatyzacji procesów i przewidywania wyników. - -Niektóre z Gotowych modeli SI dostępnych w Power Platform obejmują: - -- **Ekstrakcja kluczowych fraz**: Ten model wyodrębnia kluczowe frazy z tekstu. -- **Wykrywanie języka**: Ten model wykrywa język tekstu. -- **Analiza sentymentu**: Ten model wykrywa pozytywny, negatywny, neutralny lub mieszany sentyment w tekście. -- **Czytnik wizytówek**: Ten model wyodrębnia informacje z wizytówek. -- **Rozpoznawanie tekstu**: Ten model wyodrębnia tekst z obrazów. -- **Wykrywanie obiektów**: Ten model wykrywa i wyodrębnia obiekty z obrazów. -- **Przetwarzanie dokumentów**: Ten model wyodrębnia informacje z formularzy. -- **Przetwarzanie faktur**: Ten model wyodrębnia informacje z faktur. - -Dzięki Niestandardowym modelom SI możesz wprowadzić własny model do AI Builder, aby mógł funkcjonować jak każdy niestandardowy model AI Builder, co pozwala na trenowanie modelu przy użyciu własnych danych. Możesz używać tych modeli do automatyzacji procesów i przewidywania wyników zarówno w Power Apps, jak i Power Automate. Podczas korzystania z własnego modelu istnieją pewne ograniczenia. Przeczytaj więcej o tych [ograniczeniach](https://learn.microsoft.com/ai-builder/byo-model#limitations?WT.mc_id=academic-105485-koreyst). - -![Modele AI builder](../../images/ai-builder-models.png?WT.mc_id=academic-105485-koreyst) - -## Projekt 2: Przepływ Przetwarzania Faktur z AI Builder - -## Zadanie 2 - Zbuduj Przepływ Przetwarzania Faktur dla Naszego Startupu - -Zespół finansowy ma trudności z przetwarzaniem faktur. Używali arkusza kalkulacyjnego do śledzenia faktur, ale stało się to trudne do zarządzania wraz ze wzrostem liczby faktur. Poprosili Cię o zbudowanie przepływu pracy, który pomoże im przetwarzać faktury przy użyciu SI. Przepływ pracy powinien umożliwiać im wyodrębnianie informacji z faktur i przechowywanie tych informacji w tabeli Dataverse. Przepływ pracy powinien również umożliwiać im wysyłanie e-maila do zespołu finansowego z wyodrębnionymi informacjami. - -Teraz, gdy wiesz, czym jest AI Builder i dlaczego powinieneś go używać, przyjrzyjmy się, jak możesz użyć Modelu SI Przetwarzania Faktur w AI Builder, który omówiliśmy wcześniej, do zbudowania przepływu pracy, który pomoże zespołowi finansowemu przetwarzać faktury. - -Aby zbudować przepływ pracy, który pomoże zespołowi finansowemu przetwarzać faktury przy użyciu Modelu SI Przetwarzania Faktur w AI Builder, wykonaj poniższe kroki: - -1. Przejdź do ekranu głównego [Power Automate](https://make.powerautomate.com?WT.mc_id=academic-105485-koreyst). - -2. Użyj pola tekstowego na ekranie głównym, aby opisać przepływ pracy, który chcesz zbudować. Na przykład, **_Przetwarzaj fakturę, gdy pojawia się w mojej skrzynce odbiorczej_**. Kliknij przycisk **Wyślij**, aby wysłać prompt do AI Copilot. - - ![Copilot power automate](../../images/copilot-chat-prompt-powerautomate.png?WT.mc_id=academic-105485-koreyst) - -3. AI Copilot zasugeruje akcje, których potrzebujesz do wykonania zadania, które chcesz zautomatyzować. Możesz kliknąć przycisk **Dalej**, aby przejść przez kolejne kroki. - -4. W następnym kroku Power Automate poprosi Cię o skonfigurowanie połączeń wymaganych dla przepływu. Po zakończeniu kliknij przycisk **Utwórz przepływ**, aby utworzyć przepływ. - -5. AI Copilot wygeneruje przepływ i możesz następnie dostosować przepływ do swoich potrzeb. - -6. Zaktualizuj wyzwalacz przepływu i ustaw **Folder** na folder, w którym będą przechowywane faktury. Na przykład, możesz ustawić folder na **Odebrane**. Kliknij **Pokaż opcje zaawansowane** i ustaw **Tylko z załącznikami** na **Tak**. Zapewni to, że przepływ uruchomi się tylko wtedy, gdy w folderze zostanie odebrany e-mail z załącznikiem. - -7. Usuń następujące akcje z przepływu: **HTML na tekst**, **Utwórz**, **Utwórz 2**, **Utwórz 3** i **Utwórz 4**, ponieważ nie będziesz ich używać. - -8. Usuń akcję **Warunek** z przepływu, ponieważ nie będziesz jej używać. Powinno to wyglądać jak na poniższym zrzucie ekranu: - - ![power automate, usuń akcje](../../images/powerautomate-remove-actions.png?WT.mc_id=academic-105485-koreyst) - -9. Kliknij przycisk **Dodaj akcję** i wyszukaj **Dataverse**. Wybierz akcję **Dodaj nowy wiersz**. - -10. W akcji **Wyodrębnij informacje z faktur** zaktualizuj **Plik faktury**, aby wskazywał na **Zawartość załącznika** z e-maila. Zapewni to, że przepływ wyodrębni informacje z załącznika faktury. - -11. Wybierz **Tabelę**, którą utworzyłeś wcześniej. Na przykład, możesz wybrać tabelę **Informacje o fakturze**. Wybierz dynamiczną zawartość z poprzedniej akcji, aby wypełnić następujące pola: - - - ID - - Kwota - - Data - - Nazwa - - Status - Ustaw **Status** na **Oczekujący**. - - E-mail dostawcy - Użyj dynamicznej zawartości **Od** z wyzwalacza **Gdy nadejdzie nowy e-mail**. - - ![power automate dodaj wiersz](../../images/powerautomate-add-row.png?WT.mc_id=academic-105485-koreyst) - -12. Po zakończeniu pracy z przepływem kliknij przycisk **Zapisz**, aby zapisać przepływ. Możesz następnie przetestować przepływ, wysyłając e-mail z fakturą do folderu, który określiłeś w wyzwalaczu. - -> **Twoje zadanie domowe**: Przepływ, który właśnie zbudowałeś, to dobry początek, teraz musisz pomyśleć, jak możesz zbudować automatyzację, która umożliwi naszemu zespołowi finansowemu wysyłanie e-maila do dostawcy, aby informować go o aktualnym statusie ich faktury. Twoja wskazówka: przepływ musi uruchamiać się, gdy status faktury zmienia się. - -## Użyj Modelu SI Generowania Tekstu w Power Automate - -Model SI Tworzenia Tekstu z GPT w AI Builder umożliwia generowanie tekstu na podstawie promptu i jest zasilany przez usługę Microsoft Azure OpenAI. Dzięki tej możliwości możesz włączyć technologię GPT (Generative Pre-Trained Transformer) do swoich aplikacji i przepływów, aby budować różnorodne zautomatyzowane przepływy i wartościowe aplikacje. - -Modele GPT przechodzą rozległe szkolenie na ogromnych ilościach danych, co umożliwia im tworzenie tekstu, który ściśle przypomina język ludzki, gdy podany jest prompt. Gdy są zintegrowane z automatyzacją przepływu pracy, modele SI takie jak GPT mogą być wykorzystane do usprawnienia i automatyzacji szerokiego zakresu zadań. - -Na przykład, możesz budować przepływy do automatycznego generowania tekstu dla różnych przypadków użycia, takich jak: szkice e-maili, opisy produktów i więcej. Możesz również użyć modelu do generowania tekstu dla różnych aplikacji, takich jak chatboty i aplikacje obsługi klienta, które umożliwiają agentom obsługi klienta skuteczne i efektywne odpowiadanie na zapytania klientów. - -![utwórz prompt](../../images/create-prompt-gpt.png?WT.mc_id=academic-105485-koreyst) - -Aby dowiedzieć się, jak używać tego Modelu SI w Power Automate, przejdź przez moduł [Dodaj inteligencję z AI Builder i GPT](https://learn.microsoft.com/training/modules/ai-builder-text-generation/?WT.mc_id=academic-109639-somelezediko). - -## Świetna praca! Kontynuuj naukę - -Po ukończeniu tej lekcji sprawdź naszą [Kolekcję nauki Generatywnej SI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst), aby kontynuować pogłębianie wiedzy na temat Generatywnej SI! - -Przejdź do Lekcji 11, gdzie przyjrzymy się, jak [integrować Generatywną SI z Wywołaniami Funkcji](../../../11-integrating-with-function-calling/translations/pl/README.md?WT.mc_id=academic-105485-koreyst)! diff --git a/10-building-low-code-ai-applications/translations/pt-br/README.md b/10-building-low-code-ai-applications/translations/pt-br/README.md deleted file mode 100644 index 968c0f7b1a..0000000000 --- a/10-building-low-code-ai-applications/translations/pt-br/README.md +++ /dev/null @@ -1,231 +0,0 @@ -# Criando Aplication de IA com Low Code - -[![Building Low Code AI Applications](../../images/10-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson10-gh?WT.mc_id=academic-105485-koreyst) - -> _(Clique na imagem acima para ver o vídeo desta lição)_ - -## Introdução - -Agora que aprendemos como criar aplicações geradoras de imagens, vamos falar sobre low code. A IA generativa pode ser usada em diversas áreas, incluindo low code. Mas o que é low code e como podemos adicionar IA nisso? - -A criação de aplicativos e soluções tornou-se mais fácil para desenvolvedores tradicionais e não desenvolvedores por meio do uso de Plataformas de Desenvolvimento Low Code. Essas plataformas possibilitam a criação de aplicativos e soluções com pouco ou nenhum código. Isso é alcançado fornecendo um ambiente visual de desenvolvimento que permite arrastar e soltar componentes para criar aplicativos e soluções. Isso permite que você construa aplicativos e soluções mais rapidamente e com menos recursos. Nesta lição, vamos aprofundar como usar o Low Code e como aprimorar o desenvolvimento de low code com IA usando a Power Platform. - -A Power Platform oferece às organizações a oportunidade de capacitar suas equipes a criar suas próprias soluções por meio de um ambiente intuitivo de low-code ou no-code. Esse ambiente ajuda a simplificar o processo de construção de soluções. Com a Power Platform, as soluções podem ser construídas em dias ou semanas, em vez de meses ou anos. A Power Platform consiste em cinco produtos-chave: Power Apps, Power Automate, Power BI, Power Pages e Power Virtual Agents. - -### Metas de Aprendizagem - -Ao final desta lição, você será capaz de: - -- Entender como Copilot funciona na Power Platform. -- Criar um aplicativo de rastreamento de atribuições de estudantes para nossa startup. -- Criar um fluxo de processamento de faturas que usa IA para extrair informações de faturas. -- Aplicar as melhores práticas ao usar o Modelo de IA Create Text with GPT. - -As ferramentas e tecnologias que você usará nesta lição são: - -- **Power Apps**, para o aplicativo de rastreamento de atribuições de estudantes, que fornece um ambiente de desenvolvimento de low-code para criar aplicativos para rastrear, gerenciar e interagir com dados. -- **Dataverse**, para armazenar os dados do aplicativo de rastreamento de atribuições de estudantes, onde o Dataverse fornecerá uma plataforma de dados de baixo código para armazenar os dados do aplicativo. -- **Power Automate**, para o fluxo de processamento de faturas, onde você terá um ambiente de desenvolvimento de low-code para criar fluxos de trabalho para automatizar o processo de processamento de faturas. -- **AI Builder**, para o Modelo de IA de processamento de faturas, onde você usará modelos de IA predefinidos para processar as faturas para nossa startup. - -## IA Generativa na Power Platform - -O aprimoramento do desenvolvimento de low-code e aplicativos com IA generativa é uma área-chave para a Power Platform. O objetivo é permitir que todos criam aplicativos, sites, painéis e automatizem processos com IA, _sem exigir qualquer conhecimento em ciência de dados_. Esse objetivo é alcançado integrando a IA generativa na experiência de desenvolvimento de low-code na Power Platform na forma de Copilot e AI Builder. - -### Como isso funciona? - -Copilot é um assistente de IA que permite que você crie soluções da Power Platform descrevendo seus requisitos em uma série de etapas de conversação usando linguagem natural. Você pode, por exemplo, instruir seu assistente de IA a declarar quais campos seu aplicativo usará e ele criará tanto o aplicativo quanto o modelo de dados subjacente, ou você poderia especificar como configurar um fluxo no Power Automate. - -Você pode usar as funcionalidades orientadas pelo Copilot como um recurso nas telas do seu aplicativo para permitir que os usuários descubram insights por meio de interações conversacionais. - -O AI Builder é uma capacidade de IA de baixo código disponível na Power Platform que permite que você use Modelos de IA para ajudá-lo a automatizar processos e prever resultados. Com o AI Builder, você pode trazer IA para seus aplicativos e fluxos que se conectam aos seus dados no Dataverse ou em várias fontes de dados em nuvem, como SharePoint, OneDrive ou Azure. - -O Copilot está disponível em todos os produtos da Power Platform: Power Apps, Power Automate, Power BI, Power Pages e Power Virtual Agents. O AI Builder está disponível no Power Apps e Power Automate. Nesta lição, vamos nos concentrar em como usar Copilot e AI Builder no Power Apps e Power Automate para criar uma solução para nossa startup educacional. - -### Copilot no Power Apps - -Como parte da Power Platform, o Power Apps fornece um ambiente de desenvolvimento de low-code para criar aplicativos para rastrear, gerenciar e interagir com dados. É uma suíte de serviços de desenvolvimento de aplicativos com uma plataforma de dados escalável e a capacidade de se conectar a serviços em nuvem e dados locais. O Power Apps permite que você construa aplicativos que são executados em navegadores, tablets e telefones, e podem ser compartilhados com colegas. O Power Apps facilita os usuários no desenvolvimento de aplicativos com uma interface simples, para que cada usuário de negócios ou desenvolvedor profissional possa criar aplicativos personalizados. A experiência de desenvolvimento de aplicativos também é aprimorada com IA generativa por meio do Copilot. - -O recurso de assistente de IA Copilot no Power Apps permite que você descreva que tipo de aplicativo você precisa e que informações deseja que seu aplicativo rastreie, colete ou exiba. O Copilot então gera um aplicativo Canvas responsivo com base na sua descrição. Você pode personalizar o aplicativo conforme suas necessidades. O AI Copilot também gera e sugere uma Tabela Dataverse com os campos que você precisa para armazenar os dados que deseja rastrear e alguns dados de exemplo. Vamos examinar o que é o Dataverse e como você pode usá-lo no Power Apps nesta lição mais tarde. Você pode, então, personalizar a tabela para atender às suas necessidades usando o AI Copilot por meio de etapas de conversação. Este recurso está prontamente disponível na tela inicial do Power Apps. - -### Copilot no Power Automate - -Como parte da Power Platform, o Power Automate permite que os usuários criem fluxos de trabalho automatizados entre aplicativos e serviços. Ele ajuda a automatizar processos de negócios repetitivos, como comunicação, coleta de dados e aprovações de decisões. Sua interface simples permite que usuários com qualquer competência técnica (de iniciantes a desenvolvedores experientes) automatizem tarefas de trabalho. A experiência de desenvolvimento de fluxo de trabalho também é aprimorada com IA generativa por meio do Copilot. - -O recurso de assistente de IA Copilot no Power Automate permite que você descreva que tipo de fluxo você precisa e quais ações deseja que seu fluxo execute. O Copilot, então, gera um fluxo com base na sua descrição. Você pode personalizar o fluxo conforme suas necessidades. O AI Copilot também gera e sugere as ações necessárias para realizar a tarefa que você deseja automatizar. Vamos examinar o que são os fluxos e como você pode usá-los no Power Automate nesta lição mais tarde. Você pode, então, personalizar as ações para atender às suas necessidades usando o AI Copilot por meio de etapas de conversação. Este recurso está prontamente disponível na tela inicial do Power Automate. - -## Atribuição: gerenciar atribuições de estudantes e faturas para nossa startup, usando Copilot - -Nossa startup fornece cursos online para estudantes. A startup cresceu rapidamente e está enfrentando dificuldades para acompanhar a demanda por seus cursos. A startup contratou você como desenvolvedor da Power Platform para ajudá-los a criar uma solução de baixo código para ajudá-los a gerenciar suas atribuições de estudantes e faturas. Sua solução deve ser capaz de ajudá-los a rastrear e gerenciar as atribuições de estudantes por meio de um aplicativo e automatizar o processo de processamento de faturas por meio de um fluxo. Foi solicitado a você que use a IA generativa para desenvolver a solução. - -Quando estiver começando a usar o Copilot, você pode usar a [Biblioteca de Prompts do Power Platform Copilot](https://github.com/pnp/powerplatform-prompts?WT.mc_id=academic-109639-somelezediko) para começar com os prompts. Esta biblioteca contém uma lista de prompts que você pode usar para criar aplicativos e fluxos com Copilot. Você também pode usar os prompts na biblioteca para ter uma ideia de como descrever seus requisitos para o Copilot. - -### Criando um Aplicativo de Rastreamento de Atribuições de Estudantes para Nossa Startup - -Os educadores em nossa startup têm tido dificuldades para acompanhar as atribuições de estudantes. Eles têm usado uma planilha para rastrear as atribuições, mas isso tem se tornado difícil de gerenciar à medida que o número de estudantes aumentou. Eles pediram a você que construa um aplicativo que os ajude a rastrear e gerenciar as atribuições de estudantes. O aplicativo deve permitir que eles adicionem novas atribuições, vejam atribuições, atualizem atribuições e excluam atribuições. O aplicativo também deve permitir que educadores e estudantes vejam as atribuições que foram avaliadas e aquelas que ainda não foram avaliadas. - -Você criará o aplicativo usando Copilot no Power Apps seguindo as etapas abaixo: - -1. Acesse a [tela inicial do Power Apps](https://make.powerapps.com?WT.mc_id=academic-105485-koreyst). - -2. Use a área de texto na tela inicial para descrever o aplicativo que deseja criar. Por exemplo, **_Quero criar um aplicativo para rastrear e gerenciar as atribuições de estudantes_**. Clique no botão **Enviar** para enviar o prompt ao AI Copilot. - -![Descreva o aplicativo que deseja criar](../../images/copilot-chat-prompt-powerapps.png?WT.mc_id=academic-105485-koreyst) - -1. The AI Copilot will suggest a Dataverse Table with the fields you need to store the data you want to track and some sample data. You can then customize the table to meet your needs using the AI Copilot assistant feature through conversational steps. - - > **Important**: Dataverse is the underlying data platform for Power Platform. It is a low-code data platform for storing the app's data. It is a fully managed service that securely stores data in the Microsoft Cloud and is provisioned within your Power Platform environment. It comes with built-in data governance capabilities, such as data classification, data lineage, fine-grained access control, and more. You can learn more about Dataverse [here](https://docs.microsoft.com/powerapps/maker/data-platform/data-platform-intro?WT.mc_id=academic-109639-somelezediko). - - ![Suggested fields in your new table](../../images/copilot-dataverse-table-powerapps.png?WT.mc_id=academic-105485-koreyst) - -1. Os educadores desejam enviar e-mails aos alunos que enviaram suas atribuições para mantê-los atualizados sobre o progresso de suas tarefas. Você pode usar o Copilot para adicionar um novo campo à tabela para armazenar o e-mail do aluno. Por exemplo, você pode usar o seguinte comando para adicionar um novo campo à tabela: **_Quero adicionar uma coluna para armazenar o e-mail do aluno_**. Clique no botão **Enviar** para enviar o comando ao AI Copilot. - -![Adicionando um novo campo](../../images/copilot-new-column.png?WT.mc_id=academic-105485-koreyst) - -1. O AI Copilot gerará um novo campo e você poderá personalizá-lo conforme suas necessidades. - -1. Quando terminar com a tabela, clique no botão **Criar aplicativo** para criar o aplicativo. - -1. O AI Copilot gerará um aplicativo Canvas responsivo com base na sua descrição. Você pode, então, personalizar o aplicativo conforme suas necessidades. - -1. Para que os educadores possam enviar e-mails aos alunos, você pode usar o Copilot para adicionar uma nova tela ao aplicativo. Por exemplo, você pode usar o seguinte comando para adicionar uma nova tela ao aplicativo: **_Quero adicionar uma tela para enviar e-mails aos alunos_**. Clique no botão **Enviar** para enviar o comando ao AI Copilot. - -![Adicionando uma nova tela via comando](../../images/copilot-new-screen.png?WT.mc_id=academic-105485-koreyst) - -1. O AI Copilot gerará uma nova tela e você poderá personalizá-la conforme suas necessidades. - -1. Quando terminar com o aplicativo, clique no botão **Salvar** para salvar o aplicativo. - -1. Para compartilhar o aplicativo com os educadores, clique no botão **Compartilhar** e depois clique novamente no botão **Compartilhar**. Você pode, então, compartilhar o aplicativo com os educadores inserindo seus endereços de e-mail. - -> **Dever de Casa**: O aplicativo que você acabou de criar é um bom começo, mas pode ser melhorado. Com o recurso de e-mail, os educadores só podem enviar e-mails aos alunos manualmente digitando seus e-mails. Você pode usar o Copilot para criar uma automação que permitirá aos educadores enviar e-mails aos alunos automaticamente quando eles enviarem suas atribuições? Sua dica é que, com o comando certo, você pode usar o Copilot no Power Automate para criar isso. - -### Criar uma Tabela de Informações de Faturas para Nossa Startup - -A equipe financeira de nossa startup tem tido dificuldades para acompanhar as faturas. Eles têm usado uma planilha para rastrear as faturas, mas isso tem se tornado difícil de gerenciar à medida que o número de faturas aumentou. Eles pediram a você que construa uma tabela que os ajude a armazenar, rastrear e gerenciar as informações das faturas que receberam. A tabela deve ser usada para criar uma automação que extrairá todas as informações da fatura e as armazenará na tabela. A tabela também deve permitir que a equipe financeira veja as faturas que foram pagas e aquelas que ainda não foram pagas. - -A Power Platform possui uma plataforma de dados subjacente chamada Dataverse que permite armazenar os dados para seus aplicativos e soluções. O Dataverse fornece uma plataforma de dados de baixo código para armazenar os dados do aplicativo. É um serviço totalmente gerenciado que armazena dados com segurança na nuvem da Microsoft e é provisionado dentro do seu ambiente Power Platform. Ele vem com capacidades integradas de governança de dados, como classificação de dados, linhagem de dados, controle de acesso fino e muito mais. Você pode aprender mais [sobre o Dataverse aqui](https://docs.microsoft.com/powerapps/maker/data-platform/data-platform-intro?WT.mc_id=academic-109639-somelezediko). - -Por que devemos usar o Dataverse para nossa startup? As tabelas padrão e personalizadas dentro do Dataverse fornecem uma opção de armazenamento segura e baseada na nuvem para seus dados. Tabelas permitem que você armazene diferentes tipos de dados, semelhante a como você pode usar várias planilhas em uma única pasta de trabalho do Excel. Você pode usar tabelas para armazenar dados específicos da sua organização ou necessidade de negócios. Alguns dos benefícios que nossa startup obterá ao usar o Dataverse incluem, mas não estão limitados a: - -- **Fácil de gerenciar**: Tanto os metadados quanto os dados são armazenados na nuvem, então você não precisa se preocupar com os detalhes de como eles são armazenados ou gerenciados. Você pode se concentrar em criar seus aplicativos e soluções. - -- **Seguro**: O Dataverse fornece uma opção de armazenamento segura e baseada na nuvem para seus dados. Você pode controlar quem tem acesso aos dados em suas tabelas e como podem acessá-los usando segurança baseada em funções. - -- **Metadados ricos**: Tipos de dados e relacionamentos são usados diretamente dentro do Power Apps - -- **Lógica e validação**: Você pode usar regras de negócios, campos calculados e regras de validação para impor lógica de negócios e manter a precisão dos dados. - -Agora que você sabe o que é o Dataverse e por que deve usá-lo, vamos ver como você pode usar o Copilot para criar uma tabela no Dataverse para atender aos requisitos de nossa equipe financeira. - -> **Nota** : Você usará esta tabela na próxima seção para criar uma automação que extrairá todas as informações da fatura e as armazenará na tabela. - -Para criar uma tabela no Dataverse usando o Copilot, siga as etapas abaixo: - -1. Acesse a [tela inicial do Power Apps](https://make.powerapps.com?WT.mc_id=academic-105485-koreyst). - -2. Na barra de navegação à esquerda, selecione **Tabelas** e, em seguida, clique em **Descrever a nova tabela**. - -![Selecionar nova tabela](../../images/describe-new-table.png?WT.mc_id=academic-105485-koreyst) - -1. Na tela **Descrever a nova tabela**, use a área de texto para descrever a tabela que deseja criar. Por exemplo, **_Quero criar uma tabela para armazenar informações de fatura_**. Clique no botão **Enviar** para enviar o comando ao AI Copilot. - -![Descrever a tabela](../../images/copilot-chat-prompt-dataverse.png?WT.mc_id=academic-105485-koreyst) - -1. O AI Copilot sugerirá uma Tabela Dataverse com os campos necessários para armazenar os dados que você deseja rastrear e alguns dados de exemplo. Você pode, então, personalizar a tabela para atender às suas necessidades usando o recurso de assistente AI Copilot por meio de etapas de conversação. - -![Tabela Dataverse sugerida](../../images/copilot-dataverse-table.png?WT.mc_id=academic-105485-koreyst) - -1. A equipe financeira deseja enviar um e-mail ao fornecedor para atualizá-lo com o status atual de sua fatura. Você pode usar o Copilot para adicionar um novo campo à tabela para armazenar o e-mail do fornecedor. Por exemplo, você pode usar o seguinte comando para adicionar um novo campo à tabela: **_Quero adicionar uma coluna para armazenar o e-mail do fornecedor_**. Clique no botão **Enviar** para enviar o comando ao AI Copilot. - -1. O AI Copilot gerará um novo campo e você poderá personalizá-lo conforme suas necessidades. - -1. Quando terminar com a tabela, clique no botão **Criar** para criar a tabela. - -## Modelos de IA na Power Platform com o AI Builder - -O AI Builder é uma capacidade de IA de baixo código disponível na Power Platform que permite que você use Modelos de IA para automatizar processos e prever resultados. Com o AI Builder, você pode adicionar IA aos seus aplicativos e fluxos que se conectam aos seus dados no Dataverse ou em várias fontes de dados em nuvem, como SharePoint, OneDrive ou Azure. - -## Modelos de IA Pré-Criados vs Modelos de IA Personalizados - -O AI Builder fornece dois tipos de Modelos de IA: Modelos de IA Pré-Construídos e Modelos de IA Personalizados. Os Modelos de IA Pré-Construídos estão prontos para uso, treinados pela Microsoft e disponíveis na Power Platform. Eles ajudam a adicionar inteligência aos seus aplicativos e fluxos sem a necessidade de coletar dados e, em seguida, criar, treinar e publicar seus próprios modelos. Você pode usar esses modelos para automatizar processos e prever resultados. - -Alguns dos Modelos de IA Pré-Construídos disponíveis na Power Platform incluem: - -- **Extração de Frases-Chave**: Este modelo extrai frases-chave de texto. -- **Detecção de Idioma**: Este modelo detecta o idioma de um texto. -- **Análise de Sentimento**: Este modelo detecta sentimento positivo, negativo, neutro ou misto em texto. -- **Leitor de Cartões de Visita**: Este modelo extrai informações de cartões de visita. -- **Reconhecimento de Texto**: Este modelo extrai texto de imagens. -- **Detecção de Objetos**: Este modelo detecta e extrai objetos de imagens. -- **Processamento de Formulários**: Este modelo extrai informações de formulários. -- **Processamento de Faturas**: Este modelo extrai informações de faturas. - -Com Modelos de IA Personalizados, você pode trazer seu próprio modelo para o AI Builder, permitindo que ele funcione como qualquer modelo personalizado do AI Builder, permitindo que você treine o modelo usando seus próprios dados. Você pode usar esses modelos para automatizar processos e prever resultados tanto no Power Apps quanto no Power Automate. Ao usar seu próprio modelo, existem limitações que se aplicam. Leia mais sobre essas [limitações](https://learn.microsoft.com/ai-builder/byo-model#limitations?WT.mc_id=academic-105485-koreyst). - -![Modelos do AI Builder](../../images/ai-builder-models.png?WT.mc_id=academic-105485-koreyst) - -## Tarefa #2 - Criar um Fluxo de Processamento de Faturas para Nossa Startup - -A equipe financeira tem tido dificuldades para processar faturas. Eles têm usado uma planilha para rastrear as faturas, mas isso tem se tornado difícil de gerenciar à medida que o número de faturas aumentou. Eles pediram a você que construa um fluxo que os ajudará a processar faturas usando IA. O fluxo deve permitir que eles extraiam informações das faturas e armazenem as informações em uma tabela do Dataverse. O fluxo também deve permitir que eles enviem um e-mail à equipe financeira com as informações extraídas. - -Agora que você sabe o que é o AI Builder e por que deve usá-lo, vamos ver como você pode usar o Modelo de IA de Processamento de Faturas no AI Builder, que cobrimos anteriormente, para criar um fluxo que ajudará a equipe financeira a processar faturas. - -Para criar um fluxo que ajudará a equipe financeira a processar faturas usando o Modelo de IA de Processamento de Faturas no AI Builder, siga as etapas abaixo: - -1. Acesse a [tela inicial do Power Automate](https://make.powerautomate.com?WT.mc_id=academic-105485-koreyst). - -2. Use a área de texto na tela inicial para descrever o fluxo que você deseja criar. Por exemplo, **_Processar uma fatura quando ela chegar à minha caixa de correio_**. Clique no botão **Enviar** para enviar o comando ao AI Copilot. - - ![Copilot power automate](../../images/copilot-chat-prompt-powerautomate.png?WT.mc_id=academic-105485-koreyst) - -3. O AI Copilot sugerirá as ações que você precisa realizar para a tarefa que deseja automatizar. Você pode clicar no botão **Próximo** para passar para as próximas etapas. - -4. Na próxima etapa, o Power Automate solicitará que você configure as conexões necessárias para o fluxo. Quando terminar, clique no botão **Criar fluxo** para criar o fluxo. - -5. O AI Copilot gerará um fluxo e você poderá personalizá-lo para atender às suas necessidades. - -6. Atualize o acionador do fluxo e defina a **Pasta** para a pasta onde as faturas serão armazenadas. Por exemplo, você pode definir a pasta como **Caixa de entrada**. Clique em **Mostrar opções avançadas** e defina **Apenas com Anexos** como **Sim**. Isso garantirá que o fluxo só seja executado quando um e-mail com um anexo for recebido na pasta. - -7. Remova as seguintes ações do fluxo: **HTML para texto**, **Compor**, **Compor 2**, **Compor 3** e **Compor 4**, pois você não as usará. - -8. Remova a ação **Condição** do fluxo, pois você não a usará. Deve se parecer com a captura de tela a seguir: - - ![Power Automate, remover ações](../../images/powerautomate-remove-actions.png?WT.mc_id=academic-105485-koreyst) - -9. Clique no botão **Adicionar uma ação** e pesquise por **Dataverse**. Selecione a ação **Adicionar uma nova linha**. - -10. Na ação **Extrair informações das faturas**, atualize o **Arquivo da Fatura** para apontar para o **Conteúdo do Anexo** do e-mail. Isso garantirá que o fluxo extraia informações do anexo da fatura. - -11. Selecione a **Tabela** que você criou anteriormente. Por exemplo, você pode selecionar a tabela **Informações da Fatura**. Escolha o conteúdo dinâmico da ação anterior para preencher os seguintes campos: - - - ID - - Valor - - Data - - Nome - - Status - Defina o **Status** como **Pendente**. - - E-mail do Fornecedor - Use o conteúdo dinâmico do **Quando um novo e-mail chega** para o gatilho. - - ![Power Automate, adicionar linha](../../images/powerautomate-add-row.png?WT.mc_id=academic-105485-koreyst) - -12. Quando terminar o fluxo, clique no botão **Salvar** para salvar o fluxo. Você pode testar o fluxo enviando um e-mail com uma fatura para a pasta que você especificou no gatilho. - -> **Dever de casa**: O fluxo que você acabou de criar é um bom começo. Agora, você precisa pensar em como pode criar uma automação que permitirá que nossa equipe financeira envie um e-mail ao fornecedor para atualizá-lo com o status atual de sua fatura. Sua dica: o fluxo deve ser executado quando o status da fatura mudar. - -## Utilize um Modelo de IA de Geração de Texto no Power Automate - -O Modelo de IA Criar Texto com GPT no AI Builder permite que você gere texto com base em um prompt e é alimentado pelo Serviço Microsoft Azure OpenAI. Com essa capacidade, você pode incorporar a tecnologia GPT (Generative Pre-Trained Transformer) em seus aplicativos e fluxos para criar uma variedade de fluxos automatizados e aplicativos perspicazes. - -Os modelos GPT passam por treinamento extensivo em grandes quantidades de dados, permitindo que eles produzam texto que se assemelha de perto à linguagem humana quando fornecidos com um prompt. Quando integrados à automação de fluxo de trabalho, modelos de IA como o GPT podem ser aproveitados para simplificar e automatizar uma ampla variedade de tarefas. - -Por exemplo, você pode criar fluxos para gerar automaticamente texto para uma variedade de casos de uso, como rascunhos de e-mails, descrições de produtos e muito mais. Você também pode usar o modelo para gerar texto para vários aplicativos, como chatbots e aplicativos de atendimento ao cliente que permitem que os agentes de atendimento ao cliente respondam de forma eficaz e eficiente às perguntas dos clientes. - -![create a prompt](../../images/create-prompt-gpt.png?WT.mc_id=academic-105485-koreyst) - -Para aprender a usar este modelo de IA no Power Automate, passe pelo módulo [Adicionar inteligência com o AI Builder e GPT](https://learn.microsoft.com/training/modules/ai-builder-text-generation/?WT.mc_id=academic-109639-somelezediko). - -## Excelente trabalho! Vamos continuar com o Apredizado! - -Após concluir esta lição, confira nossa [coleção de aprendizado de IA generativa](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) para continuar a aprimorar seu conhecimento em IA generativa! - -Vamos avançar para a Lição 11, onde veremos como [Integrando a IA generativa com chamada de função](../../../11-integrating-with-function-calling/translations/pt-br/README.md?WT.mc_id=academic-105485-koreyst)! diff --git a/10-building-low-code-ai-applications/translations/tw/README.md b/10-building-low-code-ai-applications/translations/tw/README.md deleted file mode 100644 index 111b01cdff..0000000000 --- a/10-building-low-code-ai-applications/translations/tw/README.md +++ /dev/null @@ -1,245 +0,0 @@ -# 建構低程式碼 AI 應用程式 - -[![建構低程式碼 AI 應用程式](../../images/10-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson10-gh?WT.mc_id=academic-105485-koreyst) - -> _(點擊上方圖片以觀看本課的影片)_ - -## 簡介 - -現在我們已經學會如何建構影像生成應用程式,讓我們來談談低程式碼。生成式 AI 可以用於包括低程式碼在內的各種不同領域,但什麼是低程式碼,我們如何將 AI 添加到其中呢? - -建構應用程式和解決方案對於傳統開發者和非開發者來說變得更加容易,這要歸功於低程式碼開發平台。低程式碼開發平台使您能夠用很少甚至不需要程式碼來建構應用程式和解決方案。這是通過提供一個可視化的開發環境來實現的,該環境使您能夠拖放元件來建構應用程式和解決方案。這使您能夠更快地建構應用程式和解決方案,並且需要更少的資源。在本課程中,我們將深入探討如何使用低程式碼以及如何使用 Power Platform 與 AI 增強低程式碼開發。 - -Power Platform 為組織提供了一個機會,讓他們的團隊能夠通過直觀的低程式碼或無程式碼環境來建構自己的解決方案。這個環境有助於簡化建構解決方案的過程。使用 Power Platform,解決方案可以在幾天或幾週內建構完成,而不是幾個月或幾年。Power Platform 包含五個主要產品:Power Apps、Power Automate、Power BI、Power Pages 和 Copilot Studio。 - -本課程涵蓋: - -- 介紹 Power Platform 中的生成式 AI -- 介紹 Copilot 及其使用方法 -- 使用生成式 AI 在 Power Platform 中建構應用程式和流程 -- 使用 AI Builder 了解 Power Platform 中的 AI 模型 - -## 學習目標 - -在這節課結束時,你將能夠: - -- 了解 Copilot 在 Power Platform 中的運作方式。 - -- 為我們的教育初創公司建構一個學生作業追蹤應用程式。 - -- 建構一個使用 AI 從發票中提取資訊的發票處理流程。 - -- 在使用 GPT AI 模型建立文字時應用最佳實踐。 - -這節課中你將使用的工具和技術有: - -- **Power Apps**, 用於學生作業追蹤應用程式,提供低程式碼開發環境來建構應用程式以追蹤、管理和互動資料。 - -- **Dataverse**, 用於儲存學生作業追蹤應用程式的資料,Dataverse 將提供低程式碼資料平台來儲存應用程式的資料。 - -- **Power Automate**, 用於發票處理流程,你將擁有低程式碼開發環境來建構工作流程以自動化發票處理過程。 - -- **AI Builder**, 用於發票處理 AI 模型,你將使用預建的 AI 模型來處理我們新創公司的發票。 - -## 生成式 AI 在 Power Platform - -提升低程式碼開發和應用與生成式 AI 是 Power Platform 的一個關鍵重點領域。目標是讓每個人都能建構 AI 驅動的應用程式、網站、儀表板並自動化流程,_無需任何資料科學專業知識_。這個目標是通過將生成式 AI 以 Copilot 和 AI Builder 的形式整合到 Power Platform 的低程式碼開發體驗中來實現的。 - -### 這是如何運作的? - -Copilot 是一個 AI 助手,通過使用自然語言在一系列對話步驟中描述您的需求,使您能夠建構 Power Platform 解決方案。例如,您可以指示您的 AI 助手說明您的應用程式將使用哪些欄位,它將建立應用程式和基礎資料模型,或者您可以指定如何在 Power Automate 中設定流程。 - -您可以在您的應用程式畫面中使用由 Copilot 驅動的功能,讓使用者透過對話互動來發掘見解。 - -AI Builder 是一種在 Power Platform 中提供的低程式碼 AI 功能,使您能夠使用 AI 模型來幫助自動化流程和預測結果。使用 AI Builder,您可以將 AI 引入您的應用程式和連接到 Dataverse 或各種雲端資料來源(如 SharePoint、OneDrive 或 Azure)的流程。 - -Copilot 可用於所有 Power Platform 產品: Power Apps、Power Automate、Power BI、Power Pages 和 Power Virtual Agents。AI Builder 可用於 Power Apps 和 Power Automate。在本課程中,我們將重點介紹如何在 Power Apps 和 Power Automate 中使用 Copilot 和 AI Builder 來為我們的教育初創公司建構解決方案。 - -### Copilot in Power Apps - -作為 Power Platform 的一部分,Power Apps 提供了一個低程式碼開發環境,用於建構應用程式以追蹤、管理和互動資料。這是一套應用程式開發服務,具有可延展的資料平台,並能連接到雲端服務和內部部署資料。Power Apps 允許您建構可在瀏覽器、平板電腦和手機上執行的應用程式,並能與同事共享。Power Apps 透過簡單的介面讓使用者輕鬆進入應用程式開發,讓每個商業使用者或專業開發者都能建構自訂應用程式。透過 Copilot,應用程式開發體驗也因生成式 AI 而得到增強。 - -Power Apps 中的 copilot AI 助手功能使您能夠描述您需要什麼樣的應用程式以及您希望應用程式追蹤、收集或顯示哪些資訊。Copilot 然後根據您的描述生成一個響應式 Canvas 應用程式。然後您可以自訂應用程式以滿足您的需求。AI Copilot 還會生成並建議一個包含您需要的欄位來儲存您想要追蹤的資料的 Dataverse 表格和一些範例資料。我們將在本課程後面介紹什麼是 Dataverse 以及如何在 Power Apps 中使用它。然後您可以使用 AI Copilot 助手功能通過對話步驟來自訂表格以滿足您的需求。此功能可以從 Power Apps 主畫面中輕鬆使用。 - -### Copilot in Power Automate - -作為 Power Platform 的一部分,Power Automate 讓使用者在應用程式和服務之間建立自動化工作流程。它有助於自動化重複的業務流程,例如通信、資料收集和決策批准。其簡單的介面允許每個技術能力層級的使用者(從初學者到經驗豐富的開發人員)自動化工作任務。透過 Copilot,生成式 AI 也增強了工作流程開發體驗。 - -Power Automate 中的副駕駛 AI 助手功能使您能夠描述您需要的流程類型以及希望流程執行的操作。副駕駛然後根據您的描述生成一個流程。然後您可以自訂流程以滿足您的需求。AI 副駕駛還會生成並建議您需要執行的操作來完成您想要自動化的任務。我們將在本課程的後面部分查看什麼是流程以及如何在 Power Automate 中使用它們。然後,您可以使用 AI 副駕駛助手功能通過對話步驟來自訂操作以滿足您的需求。此功能可從 Power Automate 主畫面中隨時使用。 - -## 作業: 使用 Copilot 管理我們新創公司的學生作業和發票 - -我們的初創公司為學生提供線上課程。該初創公司發展迅速,現在難以應對課程的需求。該初創公司聘請了你作為 Power Platform 開發人員,幫助他們建構一個低程式碼解決方案,以幫助他們管理學生作業和發票。他們的解決方案應能通過應用程式幫助他們追蹤和管理學生作業,並通過工作流程自動化發票處理過程。你被要求使用生成式 AI 開發該解決方案。 - -當你開始使用 Copilot 時,你可以使用 [Power Platform Copilot Prompt Library](https://github.com/pnp/powerplatform-prompts?WT.mc_id=academic-109639-somelezediko) 來開始使用提示。此函式庫包含一系列提示,你可以用來與 Copilot 一起建構應用程式和流程。你也可以使用函式庫中的提示來了解如何向 Copilot 描述你的需求。 - -### 建構我們新創公司的學生作業追蹤應用程式 - -我們新創公司的教育工作者一直在努力跟蹤學生的作業。他們一直使用電子表格來跟蹤作業,但隨著學生數量的增加,這變得難以管理。他們要求你建構一個應用程式來幫助他們跟蹤和管理學生作業。該應用程式應允許他們新增作業、查看作業、更新作業和刪除作業。該應用程式還應允許教育工作者和學生查看已評分和未評分的作業。 - -您將使用 Power Apps 中的 Copilot 按照以下步驟建構應用程式: - -1. 導航到 [Power Apps](https://make.powerapps.com?WT.mc_id=academic-105485-koreyst) 主畫面。 - -1. 使用主畫面上的文字區域描述您想要建構的應用程式。例如,**_我想建構一個應用程式來追蹤和管理學生作業_**。點擊 **Send** 按鈕將提示發送給 AI Copilot。 - -![描述你想要建構的應用程式](../../images/copilot-chat-prompt-powerapps.png?WT.mc_id=academic-105485-koreyst) - -1. AI Copilot 會建議一個 Dataverse 表格,其中包含您需要儲存想要追蹤的資料的欄位和一些範例資料。然後,您可以使用 AI Copilot 助手功能,通過對話步驟來自訂表格以滿足您的需求。 - - > **重要**: Dataverse 是 Power Platform 的基礎資料平台。它是一個低程式碼的資料平台,用於儲存應用程式的資料。它是一個完全管理的服務,安全地將資料儲存在 Microsoft Cloud 中,並在您的 Power Platform 環境中配置。它具有內建的資料治理功能,例如資料分類、資料譜系、細粒度存取控制等。您可以在[此處](https://docs.microsoft.com/powerapps/maker/data-platform/data-platform-intro?WT.mc_id=academic-109639-somelezediko)了解更多關於 Dataverse 的資訊。 - - ![在您的新表格中建議的欄位](../../images/copilot-dataverse-table-powerapps.png?WT.mc_id=academic-105485-koreyst) - -1. 教育工作者希望向已提交作業的學生發送電子郵件,以便讓他們了解作業的進度。您可以使用 Copilot 向表格添加一個新欄位來儲存學生的電子郵件。例如,您可以使用以下提示來向表格添加新欄位: **_我想添加一個欄位來儲存學生的電子郵件_**。點擊 **發送** 按鈕將提示發送給 AI Copilot。 - -![新增一個新欄位](../../images/copilot-new-column.png?WT.mc_id=academic-105485-koreyst) - -1. AI Copilot 會生成一個新欄位,然後您可以自訂該欄位以滿足您的需求。 - -1. 完成表格後,點擊 **Create app** 按鈕來建立應用程式。 - -1. AI Copilot 會根據您的描述生成一個響應式 Canvas 應用程式。然後您可以自訂應用程式以滿足您的需求。 - -1. 對於教育者發送電子郵件給學生,您可以使用 Copilot 向應用程式添加一個新螢幕。例如,您可以使用以下提示來向應用程式添加新螢幕:**_我想添加一個螢幕來發送電子郵件給學生_**。點擊 **Send** 按鈕將提示發送給 AI Copilot。 - -![通過提示指令添加新螢幕](../../images/copilot-new-screen.png?WT.mc_id=academic-105485-koreyst) - -1. AI Copilot 會生成一個新畫面,然後您可以自訂畫面以滿足您的需求。 - -1. 完成應用程式後,點擊 **Save** 按鈕來保存應用程式。 - -1. 要與教育工作者分享應用程式,點擊 **Share** 按鈕,然後再次點擊 **Share** 按鈕。您可以通過輸入他們的電子郵件地址來與教育工作者分享應用程式。 - -> **你的作業**: 你剛建構的應用程式是一個好的開始,但可以進一步改進。使用電子郵件功能時,教育者只能手動輸入學生的電子郵件地址來發送郵件。你能使用Copilot來建構一個自動化功能,使教育者在學生提交作業時自動發送電子郵件嗎?提示:使用正確的提示,你可以在Power Automate中使用Copilot來建構這個功能。 - -### 建構我們新創公司的發票資訊表格 - -我們初創公司的財務團隊一直在努力追蹤發票。他們一直在使用電子表格來追蹤發票,但隨著發票數量的增加,這變得難以管理。他們要求你建立一個表格,幫助他們存儲、追蹤和管理收到的發票資訊。該表格應用於建構一個自動化系統,將所有發票資訊提取並存儲在表格中。該表格還應使財務團隊能夠查看已支付和未支付的發票。 - -Power Platform 有一個名為 Dataverse 的底層資料平台,可讓您儲存應用程式和解決方案的資料。Dataverse 提供一個低程式碼的資料平台來儲存應用程式的資料。這是一個完全受管理的服務,能夠安全地將資料儲存在 Microsoft Cloud 中,並在您的 Power Platform 環境中配置。它具有內建的資料治理功能,例如資料分類、資料沿革、細粒度存取控制等。您可以在[此處了解更多關於 Dataverse 的資訊](https://docs.microsoft.com/powerapps/maker/data-platform/data-platform-intro?WT.mc_id=academic-109639-somelezediko)。 - -為什麼我們的初創公司應該使用 Dataverse?Dataverse 中的標準和自訂表格為您的數據提供了一個安全且基於雲端的存儲選項。表格讓您可以存儲不同類型的數據,類似於您在單個 Excel 工作簿中使用多個工作表的方式。您可以使用表格來存儲特定於您的組織或業務需求的數據。我們的初創公司使用 Dataverse 所獲得的一些好處包括但不限於: - -- **易於管理**: Metadata 和資料都存儲在雲端,因此您不必擔心它們如何存儲或管理。您可以專注於建構您的應用程式和解決方案。 - -- **安全**: Dataverse 為您的資料提供安全且基於雲端的存儲選項。您可以使用基於角色的安全性控制誰可以訪問表中的資料以及他們如何訪問。 - -- **豐富的 Metadata**: 資料類型和關係直接在 Power Apps 中使用。 - -- **邏輯和驗證**: 您可以使用業務規則、計算欄位和驗證規則來強制執行業務邏輯並保持資料準確性。 - -現在你已經知道什麼是 Dataverse 以及為什麼應該使用它,讓我們來看看如何使用 Copilot 在 Dataverse 中建立一個表格以滿足我們財務團隊的需求。 - -> **注意** : 您將在下一節中使用此表來建構一個自動化流程,該流程將提取所有發票資訊並將其存儲在表中。 - -要使用 Copilot 在 Dataverse 中建立表格,請按照以下步驟操作: - -1. 導航到 [Power Apps](https://make.powerapps.com?WT.mc_id=academic-105485-koreyst) 主畫面。 - -2. 在左側導航欄中,選擇 **Tables**,然後點擊 **Describe the new Table**。 - -![選擇新表格](../../images/describe-new-table.png?WT.mc_id=academic-105485-koreyst) - -1. 在 **描述新表格** 畫面上,使用文字區域描述您想要建立的表格。例如,**_我想建立一個表格來儲存發票資訊_**。點擊 **送出** 按鈕將提示發送給 AI Copilot。 - -![描述此表格](../../images/copilot-chat-prompt-dataverse.png?WT.mc_id=academic-105485-koreyst) - -1. AI Copilot 將建議一個 Dataverse 表格,包含您需要儲存您想追蹤的資料的欄位和一些範例資料。然後,您可以使用 AI Copilot 助手功能通過對話步驟自訂表格以滿足您的需求。 - -![建議的Dataverse表格](../../images/copilot-dataverse-table.png?WT.mc_id=academic-105485-koreyst) - -1. 財務團隊希望發送電子郵件給供應商,以更新他們的發票當前狀態。你可以使用Copilot向表格添加一個新欄位來存儲供應商電子郵件。例如,你可以使用以下提示來向表格添加新欄位: **_我想添加一個欄位來存儲供應商電子郵件_**。點擊**發送**按鈕將提示發送給AI Copilot。 - -1. AI Copilot會生成一個新欄位,然後你可以自定義該欄位以滿足你的需求。 - -1. 完成表格後,點擊**建立**按鈕來建立表格。 - -## AI 模型在 Power Platform 中的應用與 AI Builder - -AI Builder 是一種在 Power Platform 中提供的低程式碼 AI 功能,使您能夠使用 AI 模型來幫助自動化流程和預測結果。使用 AI Builder,您可以將 AI 引入您的應用程式和連接到 Dataverse 或各種雲端資料來源(如 SharePoint、OneDrive 或 Azure)的流程。 - -## 預建 AI 模型 vs 自訂 AI 模型 - -AI Builder 提供兩種類型的 AI 模型: 預建 AI 模型和自訂 AI 模型。預建 AI 模型是由 Microsoft 訓練並在 Power Platform 中可用的即用型 AI 模型。這些模型幫助你為應用程式和流程添加智能,而無需收集資料並建構、訓練和發佈你自己的模型。你可以使用這些模型來自動化流程並預測結果。 - -Power Platform 中可用的一些預建 AI 模型包括: - -- **關鍵詞提取**: 此模型從文本中提取關鍵詞。 -- **語言檢測**: 此模型檢測文本的語言。 -- **情感分析**: 此模型檢測文本中的正面、負面、中立或混合情感。 -- **名片讀取器**: 此模型從名片中提取資訊。 -- **文本識別**: 此模型從圖像中提取文本。 -- **物件檢測**: 此模型檢測並從圖像中提取物件。 -- **文件處理**: 此模型從表單中提取資訊。 -- **發票處理**: 此模型從發票中提取資訊。 - -使用自訂 AI 模型,您可以將自己的模型引入 AI Builder,使其能像任何 AI Builder 自訂模型一樣運作,允許您使用自己的資料訓練模型。您可以使用這些模型在 Power Apps 和 Power Automate 中自動化流程並預測結果。使用您自己的模型時,有一些限制適用。閱讀更多關於這些[限制](https://learn.microsoft.com/ai-builder/byo-model#limitations?WT.mc_id=academic-105485-koreyst)。 - -![AI 建構模型](../../images/ai-builder-models.png?WT.mc_id=academic-105485-koreyst) - -## 作業 #2 - 為我們的創業公司建構發票處理流程 - -財務團隊一直在努力處理發票。他們一直在使用電子表格來追蹤發票,但隨著發票數量的增加,這變得難以管理。他們要求你建構一個工作流程,幫助他們使用 AI 處理發票。該工作流程應能讓他們從發票中提取資訊並將資訊存儲在 Dataverse 表中。該工作流程還應能讓他們將提取的資訊發送電子郵件給財務團隊。 - -現在你已經知道什麼是 AI Builder 以及為什麼應該使用它,讓我們來看看如何在 AI Builder 中使用我們之前提到的發票處理 AI 模型,來建構一個幫助財務團隊處理發票的工作流程。 - -要建構一個工作流程,以幫助財務團隊使用 AI Builder 中的發票處理 AI 模型處理發票,請按照以下步驟操作: - -1. 導航到[Power Automate](https://make.powerautomate.com?WT.mc_id=academic-105485-koreyst)主畫面。 - -2. 使用主畫面上的文字區域描述您想要建構的工作流程。例如,**_處理到達郵箱的發票_**。點擊**發送**按鈕將提示發送給AI Copilot。 - - ![Copilot power automate](../../images/copilot-chat-prompt-powerautomate.png?WT.mc_id=academic-105485-koreyst) - -3. AI Copilot會建議您需要執行的動作來完成您想要自動化的任務。您可以點擊**下一步**按鈕進行下一步。 - -4. 在下一步中,Power Automate會提示您設定流程所需的連接。完成後,點擊**建立流程**按鈕來建立流程。 - -5. AI Copilot會生成一個流程,然後您可以自訂流程以符合您的需求。 - -6. 更新流程的觸發器並將**資料夾**設置為存放發票的資料夾。例如,您可以將資料夾設置為**收件箱**。點擊**顯示進階選項**並將**僅限附件**設置為**是**。這將確保流程僅在收到帶有附件的電子郵件時執行。 - -7. 從流程中移除以下動作:**HTML轉文字**、**撰寫**、**撰寫2**、**撰寫3**和**撰寫4**,因為您不會使用它們。 - -8. 從流程中移除**條件**動作,因為您不會使用它。應該如下圖所示: - - ![power automate, remove actions](../../images/powerautomate-remove-actions.png?WT.mc_id=academic-105485-koreyst) - -9. 點擊**新增動作**按鈕並搜索**Dataverse**。選擇**新增一行**動作。 - -10. 在**從發票中提取資訊**動作中,更新**發票檔案**以指向電子郵件中的**附件內容**。這將確保流程從發票附件中提取資訊。 - -11. 選擇您之前建立的**表格**。例如,您可以選擇**發票資訊**表格。選擇前一動作中的動態內容來填充以下欄位: - - - ID - - 金額 - - 日期 - - 名稱 - - 狀態 - 將**狀態**設置為**待處理**。 - - 供應商電子郵件 - 使用**當新郵件到達時**觸發器中的**寄件者**動態內容。 - - ![power automate add row](../../images/powerautomate-add-row.png?WT.mc_id=academic-105485-koreyst) - -12. 完成流程後,點擊**儲存**按鈕來儲存流程。然後,您可以通過向觸發器中指定的資料夾發送帶有發票的電子郵件來測試流程。 - -> **你的作業**: 你剛剛建構的流程是一個好的開始,現在你需要思考如何建構一個自動化流程,使我們的財務團隊能夠發送電子郵件給供應商,更新他們的發票當前狀態。提示: 當發票狀態變更時,流程必須執行。 - -## 在 Power Automate 中使用文本生成 AI 模型 - -在 AI Builder 中使用 GPT AI 模型建立文字,讓你能夠根據提示生成文字,並由 Microsoft Azure OpenAI 服務提供支持。利用這項功能,你可以將 GPT(生成式預訓練轉換器)技術整合到你的應用程式和流程中,以建構各種自動化流程和具洞察力的應用程式。 - -GPT 模型經過大量數據的廣泛訓練,使其在提供提示時能夠生成與人類語言非常相似的文本。當與工作流程自動化集成時,像 GPT 這樣的 AI 模型可以用來簡化和自動化各種任務。 - -例如,你可以建構流程來自動生成各種用例的文本,例如: 電子郵件草稿、產品描述等。你也可以使用該模型為各種應用程式生成文本,例如聊天機器人和客服應用程式,使客服人員能夠有效且高效地回應客戶查詢。 - -![建立提示](../../images/create-prompt-gpt.png?WT.mc_id=academic-105485-koreyst) - -要學習如何在 Power Automate 中使用此 AI 模型,請參閱[使用 AI Builder 和 GPT 增加智慧](https://learn.microsoft.com/training/modules/ai-builder-text-generation/?WT.mc_id=academic-109639-somelezediko)模組。 - -## 很棒的工作!繼續學習 - -完成本課程後,請查看我們的[生成式 AI 學習集合](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst)以繼續提升您的生成式 AI 知識! - -前往第11課,我們將探討如何[將生成式AI與函式呼叫整合](../../../11-integrating-with-function-calling/translations/tw/README.md?WT.mc_id=academic-105485-koreyst)! - diff --git a/10-building-low-code-ai-applications/translations/tw/assignment.md b/10-building-low-code-ai-applications/translations/tw/assignment.md deleted file mode 100644 index 5f282702bb..0000000000 --- a/10-building-low-code-ai-applications/translations/tw/assignment.md +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/11-integrating-with-function-calling/translations/cn/README.md b/11-integrating-with-function-calling/translations/cn/README.md deleted file mode 100644 index ca96b1f7bc..0000000000 --- a/11-integrating-with-function-calling/translations/cn/README.md +++ /dev/null @@ -1,456 +0,0 @@ -# 第十一章:为生成式 AI 添加 function calling - -[![Integrating with function calling](../../images/11-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson11-gh?WT.mc_id=academic-105485-koreyst) - -到目前为止,您在之前的章节中已经学到了相当多的知识。 然而,我们可以进一步改进。 可以解决的一些问题是如何获得更一致的响应格式,以便更轻松地处理下游响应。 此外,我们可能希望添加来自其他来源的数据以进一步丰富我们的应用程序。 - -上述问题正是本章要解决的问题。 - -## 本章概述 - -在本章中,您将学习到: - -- 解释什么是 function calling 及其用例。 -- 使用 Azure OpenAI 创建 function calling。 -- 如何将 function calling 集成到应用程序中。 - -## 学习目标 - -在完成本章的学习,您将能够: - -- 解释使用 function calling 的目的。 -- 使用 Azure OpenAI Service 设置 function calling 。 -- 为您的应用程序用例设计有效的 function calling 。 - 。 - -## 场景:通过功能改进我们的聊天机器人 - -在本课程中,我们希望为 "Our Startup" 构建一个功能,允许用户使用聊天机器人来查找技术课程。 我们将推荐适合他们的技能水平、当前角色和感兴趣的技术的课程。 - -为了完成这个场景,我们将使用以下组合: - -- “Azure Open AI” 为用户创建聊天体验。 -- “Microsoft Learn Catalog API” 帮助用户根据用户的请求查找课程。 -- “Function Calling” 接受用户的查询并将其发送到相关函数以发出 API 请求。 - -首先,让我们看看为什么我们要首先使用 Function Calling: - -## 为什么需要 Function Calling - -在函数调用之前,LLMs 的回复是非结构化且不一致的。 开发人员需要编写复杂的验证代码,以确保他们能够处理响应的每种变化。 用户无法获得诸如“斯德哥尔摩现在的天气怎么样?”之类的答案。 这是因为模型局限于数据训练的时间。 - -Function Calling 是 Azure Open AI Service 的一项功能,旨在克服以下限制: - -- **一致的响应格式**。 如果我们能够更好地控制响应格式,我们就可以更轻松地将响应下游集成到其他系统。 -- **外部数据**。 能够在聊天上下文中使用应用程序其他来源的数据 - -## 通过场景说明问题 - -> 如果您想运行以下场景,我们建议您创建一个文件 _Notebook.ipynb_ 并将以下代码粘贴到单独的代码单元格中。 您也可以继续阅读,因为我们正在尝试说明函数可以帮助解决问题的问题。 - -让我们看一下说明响应格式问题的示例: - -假设我们想要创建一个学生数据数据库,以便我们可以向他们建议正确的课程。 下面我们有两个对学生的描述,它们所包含的数据非常相似。 - -1. 创建与我们的 Azure OpenAI 资源的连接: - - ```python - import os - import openai - import json - openai.api_type = "azure" - openai.api_base = "YOUR OPENAI API BASE URL" - openai.api_version = "2023-07-01-preview" - openai.api_key = os.getenv("OPENAI_API_KEY") - ``` - - Below is some Python code for configuring our connection to Azure Open AI where we set `api_type`, `api_base`, `api_version` and `api_key`. - -2. 使用变量 'student_1_description' 和 'student_2_description' 创建两个学生描述。 - - ```python - student_1_description="Emily Johnson is a sophomore majoring in computer science at Duke University. She has a 3.7 GPA. Emily is an active member of the university's Chess Club and Debate Team. She hopes to pursue a career in software engineering after graduating." - - student_2_description = "Michael Lee is a sophomore majoring in computer science at Stanford University. He has a 3.8 GPA. Michael is known for his programming skills and is an active member of the university's Robotics Club. He hopes to pursue a career in artificial intelligence after finishing his studies." - ``` - - We want to send the above student descriptions to an LLM to parse the data. This data can later be used in our application and be sent to an API or stored in a database. - -3. 让我们创建两个相同的提示,指引 LLM 给我们指出哪些兴趣点: - - ```python - prompt1 = f''' - Please extract the following information from the given text and return it as a JSON object: - - name - major - school - grades - club - - This is the body of text to extract the information from: - {student_1_description} - ''' - - prompt2 = f''' - Please extract the following information from the given text and return it as a JSON object: - - name - major - school - grades - club - - This is the body of text to extract the information from: - {student_2_description} - ''' - ``` - - 上述提示指示 LLM 提取信息并以 JSON 格式返回响应。 - -4. 设置提示并连接到 Azure OpenAI 后,我们现在将使用 `openai.ChatCompletion` 将提示发送到 LLM。 我们将提示存储在 `messages` 变量中,并将角色分配给 `user`.。 这是为了模仿用户写入聊天机器人的消息。 - - ```python - # response from prompt one - openai_response1 = openai.ChatCompletion.create( - engine="gpt-function", - messages = [{'role': 'user', 'content': prompt1}] - ) - openai_response1['choices'][0]['message']['content'] - - # response from prompt two - openai_response2 = openai.ChatCompletion.create( - engine="gpt-function", - messages = [{'role': 'user', 'content': prompt2 }] - ) - openai_response2['choices'][0]['message']['content'] - ``` - -现在我们可以将两个请求发送到 LLM 并通过查找 `openai_response1['choices'][0]['message']['content']` 来检查我们收到的响应。 - -1. 最后,我们可以通过调用 `json.loads` 将响应结果转换为 JSON 格式: - - ```python - # Loading the response as a JSON object - json_response1 = json.loads(openai_response1['choices'][0]['message']['content']) - json_response1 - ``` - - Response 1: - - ```json - { - "name": "Emily Johnson", - "major": "computer science", - "school": "Duke University", - "grades": "3.7", - "club": "Chess Club" - } - ``` - - Response 2: - - ```json - { - "name": "Michael Lee", - "major": "computer science", - "school": "Stanford University", - "grades": "3.8 GPA", - "club": "Robotics Club" - } - ``` - - 尽管提示相同且描述相似,但我们看到 `Grades` 属性值的格式不同,例如有时我们可以获得“3.7”或“3.7 GPA”格式。 - - 这个结果是因为 LLM 以书面提示的形式获取非结构化数据并返回非结构化数据。 我们需要有一个结构化的格式,以便我们知道在存储或使用这些数据时会发生什么 - -那么我们该如何解决格式化问题呢? 通过使用 function calling,我们可以确保收到返回的结构化数据。 当使用 function calling 时,LLM 实际上并不调用或运行任何函数。 相反,我们为 LLMs 创建了一个响应结构。 然后,我们使用这些结构化响应来了解要在应用程序中运行哪些功能。. - -![function flow](../../images/Function-Flow.png?WT.mc_id=academic-105485-koreyst) - -然后我们可以获取函数返回的内容并将其发送回 LLM。 然后, LLM 将使用自然语言来回答用户的查询。 - -## 使用 function calling 的用例 - -在许多不同的用例中,function calling 可以改进您的应用程序,例如: - -- **调用外部工具**。 聊天机器人非常擅长回答用户的问题。 通过使用函数调用,聊天机器人可以使用来自用户的消息来完成某些任务。 例如,学生可以要求聊天机器人“向我的老师发送电子邮件,说我需要有关该主题的更多帮助”。 这可以对 'send_email(to: string, body: string)' 进行函数调用 - -- **创建 API 或数据库查询**。 用户可以使用自然语言查找信息,并将其转换为格式化查询或 API 请求。 举个例子,老师请求“谁是完成最后作业的学生”,该老师可以调用名为 'get_completed(student_name: string, assignment: int, current_status: string)' 的函数 - -- **创建结构化数据**。 用户可以获取一段文本或 CSV 并使用 LLM 从中提取重要信息。 例如,学生可以将有关和平协议的维基百科文章转换为创建人工智能闪存卡。 这可以通过使用名为 'get_important_facts(agreement_name:string,date_signed:string,partys_involved:list)' 的函数来完成 - -## 创建您的第一个 function calling - -创建 function calling 的过程包括 3 个主要步骤: - -1. **调用** Chat Completions API,并提供您的函数列表和用户消息。 -2. **读取**模型的响应以执行操作,即执行函数或 API 调用。 -3. **使用**函数的响应再次调用 Chat Completions API,以使用该信息创建对用户的响应。 - -![LLM Flow](../../images/LLM-Flow.png?WT.mc_id=academic-105485-koreyst) - -### Step 1 - 创建消息 - -Step 1 是创建用户消息。 这可以通过获取文本输入的值来动态分配,或者您可以在此处分配一个值。 如果这是您第一次使用聊天完成 API,我们需要定义消息的“角色”和“内容”。 - -`role` 可以是`system` (创建规则)、`assistant` 模型)或`user`最终用户)。 对于函数调用,我们将其指定为 `user` 和一个示例问题。 - -```python -messages= [ {"role": "user", "content": "Find me a good course for a beginner student to learn Azure."} ] -``` - -通过分配不同的角色, LLMs 可以清楚地知道是系统在说话还是用户在说话,这有助于建立 LLMs 可以建立的对话历史记录。 - -### Step 2 - 创建 functions - -接下来,我们将定义一个函数以及该函数的参数。 我们在这里仅使用一个名为“search_courses”的函数,但您可以创建多个函数。 - -> **重要**:功能包含在发给 LLM 的系统消息中,并将包含在您拥有的可用 tokens 数量中。 - -下面,我们将函数创建为项目数组。 每个项目都是一个函数,并具有属性 `name`, `description` 和 `parameters`: - -```python -functions = [ - { - "name":"search_courses", - "description":"Retrieves courses from the search index based on the parameters provided", - "parameters":{ - "type":"object", - "properties":{ - "role":{ - "type":"string", - "description":"The role of the learner (i.e. developer, data scientist, student, etc.)" - }, - "product":{ - "type":"string", - "description":"The product that the lesson is covering (i.e. Azure, Power BI, etc.)" - }, - "level":{ - "type":"string", - "description":"The level of experience the learner has prior to taking the course (i.e. beginner, intermediate, advanced)" - } - }, - "required":[ - "role" - ] - } - } -] -``` - -下面让我们更详细地描述每个函数实例: - -- `name` - 我们想要调用的函数的名称。 -- `description` - 这是函数如何工作的描述。 在这里,重要的是要具体和清晰。 -- `parameters` - 您希望模型在其响应中生成的值和格式的列表。 参数数组由项目组成,其中项目具有以下属性: - 1. `type` - 将存储属性的数据类型。 - 2. `properties` - 模型将用于其响应的特定值的列表 - 1. `name` - 键是模型将在其格式化响应中使用的属性的名称,例如,`product`。 - 2. `type` - 该属性的数据类型,例如,`string`。 - 3. `description` - 特定属性的描述。 - -还有一个可选属性“required” - 完成 function call 所需的属性。 - -### Step 3 - 进行 function call - -定义函数后,我们现在需要将其包含在对聊天完成 API 的调用中。 我们通过向请求添加 `functions` 来做到这一点。 在这种情况下 `functions=functions`。 - -还有一个选项可以将“function_call”设置为“auto”。 这意味着我们将让 LLM 根据用户消息决定应该调用哪个函数,而不是我们自己分配它。 - -下面是我们调用 `ChatCompletion.create` 的一些代码,请注意我们如何设置 `functions=functions` 和 `function_call="auto"` ,从而让 LLM 选择何时调用我们提供的函数: - -```python -response = openai.ChatCompletion.create( engine="gpt-function", - messages=messages, - functions=functions, - function_call="auto", ) - -print(response['choices'][0]['message']) -``` - -现在返回的响应结果如下所示: - -```json -{ - "role": "assistant", - "function_call": { - "name": "search_courses", - "arguments": "{\n \"role\": \"student\",\n \"product\": \"Azure\",\n \"level\": \"beginner\"\n}" - } -} -``` - -在这里,我们可以看到如何调用函数 `search_courses` 以及使用哪些参数,如 JSON 响应中的 `arguments` 属性中所列。 - -结论是,LLMs 能够找到适合函数参数的数据,因为它从聊天完成调用中提供给“messages”参数的值中提取数据。 下面是“messages”值的提醒: - -```python -messages= [ {"role": "user", "content": "Find me a good course for a beginner student to learn Azure."} ] -``` - -如您所见,`student`, `Azure` 和 `beginner` 是从`messages` 中提取的,并设置为函数的输入。 以这种方式使用函数是从提示中提取信息的好方法,同时也可以为 LLM 提供结构并具有可重用的功能。 - -接下来,我们需要看看如何在我们的应用程序中使用它。 - -## 将 function calling 集成到应用程序中 - -在我们测试了 LLM 的格式化响应后,现在我们可以将其集成到应用程序中。 - -### 管理流程 - -要将其集成到我们的应用程序中,我们需要执行以下步骤: - -1. 首先,我们调用 Open AI 服务并将消息存储在名为 `response_message` 的变量中。 - - ```python - response_message = response["choices"][0]["message"] - ``` - -2. 现在我们将定义调用 Microsoft Learn API 来获取课程列表的函数: - - ```python - import requests - - def search_courses(role, product, level): - url = "https://learn.microsoft.com/api/catalog/" - params = { - "role": role, - "product": product, - "level": level - } - response = requests.get(url, params=params) - modules = response.json()["modules"] - results = [] - for module in modules[:5]: - title = module["title"] - url = module["url"] - results.append({"title": title, "url": url}) - return str(results) - ``` - - 请注意我们现在如何创建一个实际的 Python 函数,该函数映射到 `functions` 变量中引入的函数名称。 我们还进行真正的外部 API 调用来获取我们需要的数据。 在这种情况下,我们根据 Microsoft Learn API 来搜索培训模块。 - - 好的,我们创建了 `functions` 变量和相应的 Python 函数,我们如何告诉 LLM 如何将这两个映射在一起,以便调用我们的 Python 函数? - -3. 要查看是否需要调用 Python 函数,我们需要查看 LLM 响应并查看“function_call”是否是其中的一部分并调用所指出的函数。 以下是进行下面提到的检查的方法: - - ```python - # Check if the model wants to call a function - if response_message.get("function_call"): - print("Recommended Function call:") - print(response_message.get("function_call")) - print() - - # Call the function. - function_name = response_message["function_call"]["name"] - - available_functions = { - "search_courses": search_courses, - } - function_to_call = available_functions[function_name] - - function_args = json.loads(response_message["function_call"]["arguments"]) - function_response = function_to_call(**function_args) - - print("Output of function call:") - print(function_response) - print(type(function_response)) - - - # Add the assistant response and function response to the messages - messages.append( # adding assistant response to messages - { - "role": response_message["role"], - "function_call": { - "name": function_name, - "arguments": response_message["function_call"]["arguments"], - }, - "content": None - } - ) - messages.append( # adding function response to messages - { - "role": "function", - "name": function_name, - "content":function_response, - } - ) - ``` - - These three lines, ensure we extract the function name, the arguments and make the call: - - ```python - function_to_call = available_functions[function_name] - - function_args = json.loads(response_message["function_call"]["arguments"]) - function_response = function_to_call(**function_args) - ``` - - 以下是运行代码的输出: - - **Output** - - ```Recommended Function call: - { - "name": "search_courses", - "arguments": "{\n \"role\": \"student\",\n \"product\": \"Azure\",\n \"level\": \"beginner\"\n}" - } - - Output of function call: - [{'title': 'Describe concepts of cryptography', 'url': 'https://learn.microsoft.com/en-us/training/modules/describe-concepts-of-cryptography/? - WT.mc_id=api_CatalogApi'}, {'title': 'Introduction to audio classification with TensorFlow', 'url': 'https://learn.microsoft.com/en- - us/training/modules/intro-audio-classification-tensorflow/?WT.mc_id=api_CatalogApi'}, {'title': 'Design a Performant Data Model in Azure SQL - Database with Azure Data Studio', 'url': 'https://learn.microsoft.com/en-us/training/modules/design-a-data-model-with-ads/? - WT.mc_id=api_CatalogApi'}, {'title': 'Getting started with the Microsoft Cloud Adoption Framework for Azure', 'url': - 'https://learn.microsoft.com/en-us/training/modules/cloud-adoption-framework-getting-started/?WT.mc_id=api_CatalogApi'}, {'title': 'Set up the - Rust development environment', 'url': 'https://learn.microsoft.com/en-us/training/modules/rust-set-up-environment/?WT.mc_id=api_CatalogApi'}] - - ``` - -4. 现在我们将向 LLM 发送更新后的消息 `messages` ,以便我们可以接收自然语言响应,而不是 API JSON 格式的响应。 - - ```python - print("Messages in next request:") - print(messages) - print() - - second_response = openai.ChatCompletion.create( - messages=messages, - engine="gpt-function", - function_call="auto", - functions=functions, - temperature=0 - ) # get a new response from GPT where it can see the function response - - - print(second_response["choices"][0]["message"]) - ``` - - **Output** - - ```python - { - "role": "assistant", - "content": "I found some good courses for beginner students to learn Azure:\n\n1. [Describe concepts of cryptography] (https://learn.microsoft.com/training/modules/describe-concepts-of-cryptography/?WT.mc_id=api_CatalogApi)\n2. [Introduction to audio classification with TensorFlow](https://learn.microsoft.com/training/modules/intro-audio-classification-tensorflow/?WT.mc_id=api_CatalogApi)\n3. [Design a Performant Data Model in Azure SQL Database with Azure Data Studio](https://learn.microsoft.com/training/modules/design-a-data-model-with-ads/?WT.mc_id=api_CatalogApi)\n4. [Getting started with the Microsoft Cloud Adoption Framework for Azure](https://learn.microsoft.com/training/modules/cloud-adoption-framework-getting-started/?WT.mc_id=api_CatalogApi)\n5. [Set up the Rust development environment](https://learn.microsoft.com/training/modules/rust-set-up-environment/?WT.mc_id=api_CatalogApi)\n\nYou can click on the links to access the courses." - } - - ``` - -## 作业 - -要继续学习 Azure 开放 AI function calling,您可以构建: - -- 该功能的更多参数可以帮助学习者找到更多课程。 您可以在此处找到可用的 API 参数: -- 创建另一个函数调用,从学习者那里获取更多信息,例如他们的母语 -- 当函数调用和/或 API 调用未返回任何合适的课程时创建错误处理 - - 提示:按照 [Learn API 参考文档](https://learn.microsoft.com/training/support/catalog-api-developer-reference?WT.mc_id=academic-105485-koreyst) 页面了解此操作的方式和和哪些数据是可用的 - -## Great Work! Continue the Journey - -## 继续学习 - -想要了解有关 Function Calling 的更多信息? 转至[进阶学习的页面](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) 查找有关此主章节的其他学习资源。 - -前往第十二章,我们将学习 [为人工智能应用程序添加用户体验](../../../12-designing-ux-for-ai-applications/translations/cn/README.md?WT.mc_id=academic-105485-koreyst)! diff --git a/11-integrating-with-function-calling/translations/ja-jp/README.md b/11-integrating-with-function-calling/translations/ja-jp/README.md deleted file mode 100644 index 8a8d2370d9..0000000000 --- a/11-integrating-with-function-calling/translations/ja-jp/README.md +++ /dev/null @@ -1,486 +0,0 @@ -# Function Calling との統合 - -[![Integrating with function calling](../../images/11-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson11-gh?WT.mc_id=academic-105485-koreyst) - -これまでのレッスンでかなり多くの内容を学びました。しかし、私たちはさらに成長できます。取り組むべき課題の一つは、一貫性のある回答フォーマットの作成です。回答フォーマットが一貫すると後続の処理はスムーズに進められます。また、他のデータ・ソースからデータを追加し、アプリケーションをさらに拡張できます。 - -上記の問題を、この章で取り扱います。 - -## はじめに - -このレッスンでは、下記の内容について説明します。 - -- 関数呼び出し (function calling) とは何か、その使用例について説明します。 -- Azure OpenAI を使用して関数呼び出しを作成します。 -- 関数呼び出しをアプリケーションに統合する方法を学びます。 - -## 学習目標 - -このレッスンを修了すると、下記を理解できます: - -- 関数呼び出しを使う理由を説明できます。 -- Azure OpenAI Service を使用して関数呼び出しアプリを構築できます。 -- アプリケーションのユースケースに適した効果的な関数呼び出しを設計できます。 - -## シナリオ:関数を用いてチャットボットを改善する - -このレッスンでは、教育スタートアップで、利用者である学生がチャットボットを使用して技術コースを検索できる機能を実装したいと考えています。利用者のスキルレベル、現在の役割、興味のある技術に合わせたコースを推奨します。 - -このシナリオを実現するために、下記の機能やサービスを使用します: - -- `Azure OpenAI`:利用者にチャット体験を提供する為に使用します。 -- `Microsoft Learn Catalog API`:利用者のリクエストに基づいて、コースを見つける支援を行います。 -- `Function Calling`:利用者の問い合わせ内容を取得し、それを関数に送信し API リクエストを作成します。 - -手始めに、そもそもなぜ関数呼び出しを使用する必要があるのかを見てみましょう。 - -## 関数呼び出しを行う理由 - -関数呼び出しを行う前は、LLM からの回答は構造化されておらず、一貫性がありませんでした。開発者は、得られるさまざまな回答に対して処理できるように、複雑な検証コードを記述する必要がありました。例えば、利用者は「今のストックホルムの天気は何ですか?」のような回答を得られませんでした。これは、モデルの学習データをトレーニングした時間が制限されているためです。 - -「関数呼び出し」は、Azure OpenAI Service の機能で、下記ができるようになります: - -- **一貫した回答形式**:回答形式をより適切に制御できれば、回答結果を他のシステムに対してより簡単に統合できます。 -- **外部データの利用**:アプリケーションは、チャットのコンテキスト(文脈)に、他の外部データ・ソースのデータを使用できます。 - -## シナリオを通じた問題の説明 - -> _Notebook.ipynb_ というファイルを作成し、下記のコードをコピー&ペーストしてください。仮に下記のシナリオを実行したい場合は、別のコードセルへの貼り付けをお勧めします。また、下記に記述する関数が、実際の問題に対処するための説明も行っているので、あわせて記述内容をご覧ください。 - -「一貫した回答フォーマットの取得」に関する問題の例を見てみましょう: - -たとえば、学生データのデータベースを作成し、学生に対して適切なコースを提案できるようにしたいと考えています。下記に含まれているデータ中に、2 人の非常によく似た学生の説明があります。 - -1. Azure OpenAI リソースへの接続を作成します。 - -```python -import os -import json -from openai import AzureOpenAI -from dotenv import load_dotenv -load_dotenv() - -client = AzureOpenAI( -api_key=os.environ['AZURE_OPENAI_API_KEY'], # これもデフォルトで省略できます -api_version = "2023-07-01-preview" -) - -deployment=os.environ['AZURE_OPENAI_DEPLOYMENT'] -``` - -上記は、Azure OpenAI への接続するための  Python  コードで、ここでは `api_version`、`api_key`を設定します。 - -1. `student_1_description`と`student_2_description`という変数を使用して、2 人の学生の説明を記述します。 - -```python -student_1_description= f'''Emily Johnson は、Duke University の -コンピューターサイエンス専攻の2年生です。彼女の GPA は 3.7 です。 -Emily は大学のチェス・クラブとディベート・チームの活動的なメンバーです。 -彼女は卒業後、ソフトウェア・エンジニアリングのキャリアに進むのを望んでいます。 -''' - -student_2_description = f'''Michael Lee は、Stanford University の -コンピューターサイエンス専攻の2年生です。彼の GPA は 3.8 です。 -Michael はプログラミングが得意と知られており、大学のロボティクス・クラブの -活動的なメンバーです。 -彼は学習を終えた後、人工知能関連のキャリアに進むのを望んでいます。 -''' -``` - -上記の学生の説明を LLM に送信し、データを解析します。このデータは後でアプリケーションで使用したり、API に送信したり、データベースへの保存ができます。 - -1. 関心のある情報を LLM に指示するため、2 つの同一プロンプトを作成します。 - -```python -prompt1 = f''' - 以下の情報を指定されたテキストから抽出し、それをJSONオブジェクトとして返してください: - - 名前 - 専攻 - 学校 - 成績 - クラブ - - 情報を抽出するためのテキスト本文は以下の通りです: - {student_1_description} - ''' - - prompt2 = f''' - 以下の情報を指定されたテキストから抽出し、それをJSONオブジェクトとして返してください: - - 名前 - 専攻 - 学校 - 成績 - クラブ - - 情報を抽出するためのテキスト本文は以下の通りです: - {student_2_description} - ''' -``` - -上記のプロンプトは、LLM に情報を抽出し、応答を JSON 形式で返すように指示しています。 - -1. プロンプトと Azure OpenAI の接続設定を行った後、`openai.ChatCompletion`を使用してプロンプトを LLM に送信します。プロンプトは `messages` 変数に格納し、ロールを `user` に設定します。これはチャット・ボットに対して、利用者からメッセージが書き込まれる様子を模倣するために記載しています。 - - ```python - # プロンプト1からの応答 - openai_response1 = client.chat.completions.create( - model=deployment, - messages = [{'role': 'user', 'content': prompt1}] - ) - openai_response1.choices[0].message.content - - # プロンプト2からの応答 - openai_response2 = client.chat.completions.create( - model=deployment, - messages = [{'role': 'user', 'content': prompt2}] - ) - openai_response2.choices[0].message.content - ``` - -これで、両方のリクエストを LLM に送信し、受信した回答を `[openai_response1.choices[0].message.content]` 等で取得できます。 - -1. 最後に、`json.loads` を呼び出すと、応答を JSON 形式に変換できます: - -```python -# 応答を JSON オブジェクトとして読み込む -json_response1 = json.loads(openai_response1.choices[0].message.content) -json_response1 -``` - -応答 1: - -```json -{ - "name": "Emily Johnson", - "major": "コンピューターサイエンス", - "school": "Duke University", - "grades": "3.7", - "club": "チェス・クラブ" -} -``` - -応答 2: - -```json -{ - "name": "Michael Lee", - "major": "コンピューターサイエンス", - "school": "Stanford University", - "grades": "3.8 GPA", - "club": "ロボティクス・クラブ" -} -``` - -プロンプトは同じで、説明も似ていますが、`grades` プロパティ値の出力形式が異なっています。例えばここでは、`3.7`や`3.8 GPA`のような形式で出力されています。 - -この結果は、記述したプロンプト内で非構造化のデータを取得し、結果として非構造化データを返しているからです。このデータを保存したり再利用するためには、どのような値を期待するかを把握できるように、構造化データの形式にする必要があります。 - -それでは上記のような、出力フォーマットの問題をどのように解決すればよいのでしょうか。結論から言うと、関数呼び出しを使用すれば、構造化データを確実に受け取れるようになります。関数呼び出しを使用する場合、LLM は実際には特定の関数を呼び出したり実行したりするわけではありません。代わりに、LLM は構造化した回答(データ)を作成します。その後、この構造化した回答(データ)を使用して、実行すべき関数を決めます。 - -![function flow](../../images/Function-Flow.png?WT.mc_id=academic-105485-yoterada) - -そして関数からの返却値を取得し、それを LLM に送り返します。その後、LLM は自然言語を使用して利用者の問い合わせに対して回答します。 - -## 関数呼び出しを使用するユースケース - -関数呼び出しを使用するとアプリが改善されるユースケースは多岐にわたります: - -- **外部ツールの呼び出し**:チャット・ボットは利用者からの質問に回答するのが得意です。関数呼び出しを使用すると、チャット・ボットは利用者からのメッセージを使用して、特定のタスクを完了できます。例えば、学生はチャットボットに「この科目についてさらに支援が必要というメールを、教員に送信してください」と依頼できます。これにより、`send_email(to: string, body: string)`という関数呼び出しを行います。 - -- **API  またはデータベースクエリの作成**:利用者は、書式設定された問い合わせ、または API 要求に変換される自然言語を使用して、情報を検索できます。例えば、教師が「最後の課題を完了した生徒は誰ですか」と要求すると、`get_completed(student_name: string, assignment: int, current_status: string)`という関数を呼び出します。 - -- **構造化データの作成**:利用者は、テキストまたは CSV フォーマットのデータを取得し、LLM を使用して、そこから重要な情報を抽出できます。例えば学生は、和平合意に関するウィキペディアの記事を変換して、AI フラッシュカードを作成できます。これは、`get_important_facts(agreement_name: string, date_signed: string, parties_involved: list)`という関数を使用して行います。 - -## 最初の関数呼び出しの作成 - -関数呼び出しを作成するプロセスは、以下の 3 つの主要なステップから構成されています。 - -1. **呼び出し**:関数リストとユーザー・メッセージを用いて、Chat Completions API を呼び出します。 -2. **読み取り**:モデルからの回答を読み取り、アクションを実行します。つまり、関数を実行したり、API 呼び出しを行ったりします。 -3. **再呼び出し**:関数からの返却値を用いて、Chat Completions API を再度呼び出し、その情報を使用して利用者に対する回答を作成します。 - -![LLM Flow](../../images/LLM-Flow.png?WT.mc_id=academic-105485-yoterada) - -### ステップ 1 - メッセージの作成 - -最初のステップで、ユーザー・メッセージを作成します。これは、テキストの入力値を取得して動的に割り当てるか、もしくはここで直接値を割り当てできます。仮に Chat Completions API を初めて使用するの場合は、メッセージの `role` と `content` を定義してください。 - -`role` は `system`(ルールを作成)、`assistant`(モデル)、または `user`(エンドユーザー)のいずれかになります。関数呼び出しは、`user` として、質問を割り当てます。 - -```python -messages= [ {"role": "user", "content": "初心者の学生が Azure を学ぶための良い学習コースを見つけてください。"} ] -``` - -異なる役割を割り当てると、LLM は、システムが言っているのか、それとも利用者が言っているのかが明確になり、LLM は会話履歴を構築するのに役立ちます。 - -### ステップ 2 - 関数の作成 - -次に、関数とその関数のパラメータを定義します。ここでは `search_courses` という 1 つの関数のみを使用しますが、複数の関数も作れます。 - -> **重要** : 関数は LLM のシステム・メッセージに含まれており、利用可能なトークンの数に含まれます。 - -下記は、関数を項目の配列として作成しています。各項目は関数であり、`name`、`description`、`parameters` というプロパティを持ちます。 - -```python -functions = [ - { - "name":"search_courses", - "description":"提供されたパラメータに基づいて検索インデックスからコースを取得します", - "parameters":{ - "type":"object", - "properties":{ - "role":{ - "type":"string", - "description":"学習者の役割(例:開発者、データサイエンティスト、学生など)" - }, - "product":{ - "type":"string", - "description":"レッスンでカバーしている製品(例:Azure、Power BIなど)" - }, - "level":{ - "type":"string", - "description":"コースを受講する学習者のレベル(例:初心者、中級者、上級者)" - } - }, - "required":[ - "role" - ] - } - } -] -``` - -下記に、関数について詳しく説明します。 - -- `name` - 呼び出したい関数名 -- `description` - 関数がどのように動作するかの説明。ここは具体的で明確な説明の記述が必要 -- `parameters` - モデルによって回答で生成する値とフォーマットのリスト。`parameters` 配列として構成し、次のプロパティを含む - 1. `type` - プロパティのデータ型 - 1. `properties` - 回答に使用する特定の値のリスト - 1. `name` - フォーマットされた回答で使用するプロパティ名。例えば、`product` - 1. `type` - プロパティのデータ型。例えば、`string` - 1. `description` - 特定のプロパティの説明 - -また、オプションのプロパティとして `required`もあります。これは関数呼び出しが必須かを指定するプロパティです。 - -### ステップ 3 - 関数呼び出しの実行 - -関数を定義した後、次に Chat Completion API の呼び出しにその関数を含める必要があります。これを行うには、リクエストに `functions` を追加します。この場合、`functions=functions`とします。 - -また、`function_call` を `auto` に設定するオプションもあります。これは、どの関数を呼び出すか、利用者からのメッセージに基づいて LLM に判断させ、自分で割り当てるのではなく、LLM に選択させます。 - -以下に、`ChatCompletion.create` を呼び出すコードを示します。`functions=functions` と `function_call="auto"` を設定し、LLM に提供する関数をいつ呼び出すかを選択させる方法に注目してください。 - -```python -response = client.chat.completions.create(model=deployment, - messages=messages, - functions=functions, - function_call="auto") - -print(response.choices[0].message) -``` - -返される回答は下記のようになります。 - -```json -{ - "role": "assistant", - "function_call": { - "name": "search_courses", - "arguments": "{\n \"role\": \"学生\",\n \"product\": \"Azure\",\n \"level\": \"初心者\"\n}" - } -} -``` - -ここでは、`search_courses` 関数がどのように呼び出され、どのような引数で呼び出されたかを、JSON 形式で返された応答の `arguments` プロパティ・リストから確認できます。 - -結論として、LLM は Chat Completion 呼び出しの `messages` パラメータで提供した値からデータを抽出し、関数の引数に適合するデータを見つけられました。以下は、`messages` 値の内容です。 - -```python -messages= [ {"role": "user", "content": "初心者の学生が Azure を学ぶための良い学習コースを見つけてください。"} ] -``` - -ご覧の通り、`学生`、`Azure`、`初心者`は `messages` から抽出され、関数への入力として設定されました。このように関数を使用すると、プロンプトから情報を抽出するだけでなく、LLM に構造化データを提供し、再利用可能なデータを持てます。 - -次に、この機能をアプリでどのように使用できるかを確認します。 - -## アプリケーションの関数呼び出しとの統合 - -LLM からフォーマットされた応答を取得した後、これをアプリケーションに統合します。 - -### フローの管理 - -アプリケーションに統合するためには、下記の手順で行います。 - -1. まず、Open AI サービスを呼び出し、メッセージを `response_message` という変数に代入します。 - -```python -response_message = response.choices[0].message -``` - -1. 次に、Microsoft Learn のカタログ API を呼び出してコースの一覧を取得する関数を定義します。 - -```python -import requests - -def search_courses(role, product, level): - url = "https://learn.microsoft.com/api/catalog/" - params = { - "role": role, - "product": product, - "level": level - } - response = requests.get(url, params=params) - modules = response.json()["modules"] - results = [] - for module in modules[:5]: - title = module["title"] - url = module["url"] - results.append({"title": title, "url": url}) - return str(results) -``` - -`functions` 変数に記載した関数名にマップする、実際の Python 関数を作成する方法に注目してください。また、必要なデータを取得するために、実際に外部 API 呼び出しも行っています。ここでは、Microsoft Learn API に対してトレーニング モジュールを検索しています。 - -いま、`functions` 変数とそれに対応する Python 関数を作成しましたが、実際の Python 関数を呼び出すために、これら 2 つをマッピングした内容を、LLM に指示するにはどうすればよいでしょうか? - -1. Python 関数を呼び出す必要があるかどうかを確認するためには、LLM からの応答を調べ、 `function_call` が含まれているかを確認し、指摘された関数を呼び出す必要があります。以下のようにしてチェックを行います。 - -```python -# モデルが関数を呼び出したいかどうかを確認 -if response_message.function_call.name: - print("Recommended Function call:") - print(response_message.function_call.name) - print() - - # 関数を呼び出す - function_name = response_message.function_call.name - - available_functions = { - "search_courses": search_courses, - } - function_to_call = available_functions[function_name] - - function_args = json.loads(response_message.function_call.arguments) - function_response = function_to_call(**function_args) - - print("関数呼び出しの出力:") - print(function_response) - print(type(function_response)) - - - # アシスタントの応答と関数の応答をメッセージに追加 - messages.append( # アシスタントの応答をメッセージに追加 - { - "role": response_message.role, - "function_call": { - "name": function_name, - "arguments": response_message.function_call.arguments, - }, - "content": None - } - ) - messages.append( # 関数の応答をメッセージに追加 - { - "role": "function", - "name": function_name, - "content":function_response, - } -) -``` - -下記の 3 行は、関数名と引数を抽出し、呼び出しを確認できます。 - -```python -function_to_call = available_functions[function_name] - -function_args = json.loads(response_message.function_call.arguments) -function_response = function_to_call(**function_args) -``` - -下記は、コードを実行した出力結果です。 - -**Output** - -```output -{ - "name": "search_courses", - "arguments": "{\n \"role\": \"学生\",\n \"product\": \"Azure\",\n \"level\": \"初心者\"\n}" -} - -関数呼び出しの出力: - [ - { - "title": "暗号の概念についての説明", - "url": "https://learn.microsoft.com/training/modules/describe-concepts-of-cryptography/?WT.mc_id=api_CatalogApi" - }, - { - "title": "TensorFlow を使用したオーディオ分類の概要", - "url": "https://learn.microsoft.com/training/modules/intro-audio-classification-tensorflow/?WT.mc_id=api_CatalogApi" - }, - { - "title": "Azure Data Studio を使って Azure SQL Database でパフォーマンスに優れたデータ モデルを設計する", - "url": "https://learn.microsoft.com/training/modules/design-a-data-model-with-ads/?WT.mc_id=api_CatalogApi" - }, - { - "title": "Azure 用の Microsoft クラウド導入フレームワークの概要", - "url": "https://learn.microsoft.com/training/modules/cloud-adoption-framework-getting-started/?WT.mc_id=api_CatalogApi" - }, - { - "title": "Rust 開発環境を設定する", - "url": "https://learn.microsoft.com/training/modules/rust-set-up-environment/?WT.mc_id=api_CatalogApi" - } - ] - -``` - -1. 次に、更新したメッセージ `messages` を LLM に送信して、JSON 形式の応答ではなく自然言語の応答を受け取ります。 - -```python -print("次のリクエストのメッセージ:") -print(messages) -print() - -second_response = client.chat.completions.create( - messages=messages, - model=deployment, - function_call="auto", - functions=functions, - temperature=0 - ) # 関数からの応答を元にした GPT から新しい応答を取得 - -print(second_response.choices[0].message) -``` - -**Output** - -```output -{ - "role": "assistant", - "content": "Azureを学ぶ初心者の学生向けにいくつかの良いコースを見つけました:\n\n - 1. [暗号の概念についての説明] (https://learn.microsoft.com/training/modules/describe-concepts-of-cryptography/?WT.mc_id=api_CatalogApi)\n - 2. [TensorFlow を使用したオーディオ分類の概要](https://learn.microsoft.com/training/modules/intro-audio-classification-tensorflow/?WT.mc_id=api_CatalogApi)\n - 3. [Azure Data Studio を使って Azure SQL Database でパフォーマンスに優れたデータ モデルを設計する](https://learn.microsoft.com/training/modules/design-a-data-model-with-ads/?WT.mc_id=api_CatalogApi)\n - 4. [Azure 用の Microsoft クラウド導入フレームワークの概要](https://learn.microsoft.com/training/modules/cloud-adoption-framework-getting-started/?WT.mc_id=api_CatalogApi)\n - 5. [Rust 開発環境を設定する](https://learn.microsoft.com/training/modules/rust-set-up-environment/?WT.mc_id=api_CatalogApi)\n\n - リンクをクリックしてコースにアクセスできます。" -} -``` - -## 課題 - -Azure OpenAI Function Calling の学習を続けるために、以下を試してみてください。 - -- 学習者がより多くのコースを見つける為に有効な関数のパラメーターを探して増やす。 -- 学習者の母国語を聞くなど、学習者からより多くの情報を取得するための別の関数呼び出しを作成する。 -- 関数呼び出しや API 呼び出しが、適切なコースを返さない場合のエラー処理を実装する。 - -ヒント: これらのデータを、どこでどのように利用できるかを確認するために、[Learn API リファレンス ドキュメント](https://learn.microsoft.com/training/support/catalog-api-developer-reference?WT.mc_id=academic-105485-yoterada) をご参照ください。 - -## お疲れ様でした! 学習を続ける - -このレッスン修了後、[生成 AI 学習コレクション](https://aka.ms/genai-collection?WT.mc_id=academic-105485-yoterada) をチェックして、Generative AI の知識をレベルアップさせましょう。 - -次のレッスン 12 では、[AI アプリケーション用の UX デザイン](../../../12-designing-ux-for-ai-applications/translations/ja-jp/README.md?WT.mc_id=academic-105485-yoterada)について学びます! diff --git a/11-integrating-with-function-calling/translations/ko/README.md b/11-integrating-with-function-calling/translations/ko/README.md deleted file mode 100644 index bf09716b70..0000000000 --- a/11-integrating-with-function-calling/translations/ko/README.md +++ /dev/null @@ -1,458 +0,0 @@ -# Function Calling과 통합하기 - -[![Integrating with function calling](../../images/11-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson11-gh?WT.mc_id=academic-105485-koreyst) - -지금까지 이전 레슨에서 많은 것을 배웠습니다. 그러나 더 나아갈 수 있습니다. 우리가 해결할 수 있는 몇 가지 문제는 응답 형식을 더 일관되게 만들어 응답을 더 쉽게 처리할 수 있도록 하는 것이며, 또한 응용 프로그램을 더 풍부하게 만들기 위해 다른 소스에서 데이터를 추가할 수도 있습니다. - -위에서 언급한 문제들은 이번 챕터에서 다루고자 하는 내용입니다. - -## 소개 - -이 레슨에서는 다음을 다룹니다: - -- function calling이란 무엇이며 사용 사례는 무엇인지 설명합니다. -- Azure OpenAI를 사용하여 function calling을 만드는 방법을 알아봅니다. -- function calling을 응용 프로그램에 통합하는 방법을 알아봅니다. - -## 학습 목표 - -이 레슨을 마치면 다음을 할 수 있게 됩니다: - -- function calling을 사용하는 목적을 설명할 수 있습니다. -- Azure Open AI 서비스를 사용하여 function calling을 설정할 수 있습니다. -- 응용 프로그램의 사용 사례에 맞는 효과적인 function calling을 설계할 수 있습니다. - -## 시나리오: 함수를 사용하여 챗봇 개선하기 - -이 레슨에서는 교육 스타트업을 위한 기능을 구축하려고 합니다. 사용자가 챗봇을 사용하여 기술적인 과목을 찾을 수 있는 기능을 추가할 것입니다. 우리는 사용자의 기술 수준, 현재 역할 및 관심 기술에 맞는 과목을 추천할 것입니다. - -이 시나리오를 완료하기 위해 다음을 조합하여 사용할 것입니다: - -- 사용자에게 채팅 경험을 제공하기 위해 `Azure Open AI` 사용. -- 사용자의 요청에 기반하여 과목을 찾는 데 도움을 주는 `Microsoft Learn Catalog API` 사용. -- 사용자의 쿼리를 가져와 API 요청을 수행하는 함수에 전달하기 위해 `function calling` 사용. - -시작하기 전에, 왜 우리가 처음부터 function calling을 사용하고자 하는지 살펴보겠습니다: - -## Function calling의 필요성 - -function calling 이전에 LLM에서의 응답은 구조화되지 않고 일관성이 없었습니다. 개발자는 각 응답의 변형을 처리할 수 있도록 복잡한 유효성 검사 코드를 작성해야 했습니다. 사용자는 "스톡홀름의 현재 날씨는 어떻게 되나요?"와 같은 답변을 받을 수 없었습니다. 이는 모델이 데이터를 훈련한 시점으로 제한되었기 때문입니다. - -function calling은 다음과 같은 제한 사항을 극복하기 위한 Azure Open AI 서비스의 기능입니다: - -- **일관된 응답 형식**. 응답 형식을 더 잘 제어할 수 있다면 응답을 다른 시스템과 더 쉽게 통합할 수 있습니다. -- **외부 데이터**. 채팅 컨텍스트에서 응용 프로그램의 다른 소스 데이터를 사용할 수 있는 능력. - -## 시나리오를 통해 문제 설명하기 - -> 아래 시나리오를 실행하려면 [제공된 노트북](../../python/aoai-assignment.ipynb?WT.mc_id=academic-105485-koreyst)을 사용하는 것을 권장합니다. 문제를 설명하기 위해 함수가 문제를 해결하는 데 도움이 되는 시나리오를 보여주려고 하므로 읽기만 해도 됩니다. - -응답 형식 문제를 보여주는 예제를 살펴보겠습니다: - -학생 데이터베이스를 생성하여 학생들에게 적합한 과목을 제안할 수 있도록 하려고 합니다. 아래에는 데이터 내용이 매우 유사한 두 학생의 설명이 있습니다. - -1. Azure Open AI 리소스에 연결을 만듭니다: - - ```python - import os - import json - from openai import AzureOpenAI - from dotenv import load_dotenv - load_dotenv() - - client = AzureOpenAI( - api_key=os.environ['AZURE_OPENAI_API_KEY'], # 이것은 기본값이며, 생략 가능합니다. - api_version = "2023-07-01-preview" - ) - - deployment=os.environ['AZURE_OPENAI_DEPLOYMENT'] - ``` - - 다음은 `api_type`, `api_base`, `api_version` 및 `api_key`를 설정하는 Azure Open AI에 대한 연결을 구성하기 위한 일부 Python 코드입니다. - -2. Creating two student descriptions using variables `student_1_description` and `student_2_description`. - - ```python - student_1_description="Emily Johnson는 Duke 대학교에서 컴퓨터 공학을 전공하는 2학년 학생입니다. 그녀는 3.7의 평점을 가지고 있습니다. Emily는 대학의 체스 동아리와 토론 팀의 활발한 회원입니다. 졸업 후 소프트웨어 엔지니어링 분야에서 경력을 쌓고자 합니다." - - student_2_description = "Michael Lee는 Stanford 대학교에서 컴퓨터 공학을 전공하는 2학년 학생입니다. 그는 3.8의 평점을 가지고 있습니다. Michael은 프로그래밍 기술로 유명하며 대학의 로봇 공학 동아리의 활발한 회원입니다. 그는 학업을 마친 후 인공지능 분야에서 경력을 쌓고자 합니다." - ``` - - 위의 학생 설명을 LLM에게 보내 데이터를 구문 분석하도록 하려고 합니다. 이 데이터는 나중에 우리의 애플리케이션에서 사용되어 API로 전송되거나 데이터베이스에 저장될 수 있습니다. - -3. LLM에게 우리가 관심 있는 정보를 지시하는 두 개의 동일한 프롬프트를 생성해 봅시다: - - ```python - prompt1 = f''' - 다음 텍스트에서 다음 정보를 추출하여 JSON 객체로 반환해주세요: - - 이름 - 전공 - 학교 - 성적 - 동아리 - - 다음 텍스트에서 정보를 추출해주세요: - {student_1_description} - ''' - - prompt2 = f''' - 다음 텍스트에서 다음 정보를 추출하여 JSON 객체로 반환해주세요: - - 이름 - 전공 - 학교 - 성적 - 동아리 - - 다음 텍스트에서 정보를 추출해주세요: - {student_2_description} - ''' - ``` - - 위의 프롬프트는 LLM에게 정보를 추출하고 응답을 JSON 형식으로 반환하도록 지시합니다. - -4. 프롬프트와 Azure Open AI와의 연결을 설정한 후, `openai.ChatCompletion`을 사용하여 프롬프트를 LLM에게 전송합니다. 프롬프트를 `messages` 변수에 저장하고 역할을 `user`로 지정합니다. 이는 챗봇에게 사용자의 메시지를 모방하기 위한 것입니다. - - ```python - # prompt one에 대한 응답 - openai_response1 = client.chat.completions.create( - model=deployment, - messages = [{'role': 'user', 'content': prompt1}] - ) - openai_response1.choices[0].message.content - - # prompt two에 대한 응답 - openai_response2 = client.chat.completions.create( - model=deployment, - messages = [{'role': 'user', 'content': prompt2}] - ) - openai_response2.choices[0].message.content - ``` - -이제 우리는 두 요청을 LLM에게 보내고, `openai_response1['choices'][0]['message']['content']`와 같이 응답을 받을 수 있습니다. - -1. 마지막으로, `json.loads`를 호출하여 응답을 JSON 형식으로 변환할 수 있습니다: - - ```python - # 응답을 JSON 객체로 로드합니다. - json_response1 = json.loads(openai_response1.choices[0].message.content) - json_response1 - ``` - - 응답 1: - - ```json - { - "이름": "Emily Johnson", - "전공": "컴퓨터 공학", - "학교": "Duke 대학교", - "성적": "3.7", - "동아리": "체스 동아리" - } - ``` - - 응답 2: - - ```json - { - "이름": "Michael Lee", - "전공": "컴퓨터 공학", - "학교": "Stanford 대학교", - "성적": "3.8 GPA", - "동아리": "로봇 공학 동아리" - } - ``` - - 프롬프트는 동일하고 설명은 유사하지만, `Grades` 속성의 값은 때로는 `3.7` 또는 `3.7 GPA`와 같이 서로 다른 형식으로 포맷되는 것을 볼 수 있습니다. - - 이 결과는 LLM이 쓰인 프롬프트의 구조화되지 않은 (unstructured) 데이터를 받아들이고 구조화되지 않은 (unstructured) 데이터를 반환하기 때문입니다. 이 데이터를 저장하거나 사용할 때 어떤 형식을 기대해야 하는지 알기 위해 구조화된 (structured) 형식이 필요합니다. - - 그렇다면 포맷팅 문제를 어떻게 해결할까요? functional calling을 사용하여 구조화된 데이터를 받을 수 있도록 할 수 있습니다. function calling을 사용할 때, LLM은 실제로 함수를 호출하거나 실행하지 않습니다. 대신, LLM에게 응답을 따르기 위한 구조를 만듭니다. 그런 다음, 우리는 응답을 사용하여 응용 프로그램에서 어떤 함수를 실행할지 알 수 있습니다. - -![function flow](../../images/Function-Flow.png?WT.mc_id=academic-105485-koreyst) - -함수에서 반환된 값을 가져와서 LLM에게 다시 전송할 수 있습니다. 그럼 LLM은 자연어를 사용하여 사용자의 질문에 답변합니다. - -## function call을 사용하는 사용 사례 - -function call을 사용하여 앱을 개선할 수 있는 다양한 사용 사례가 있습니다. 예를 들어 다음과 같은 경우입니다: - -- **외부 도구 호출**: 챗봇은 사용자의 질문에 대한 답변을 제공하는 데에 탁월합니다. function calling을 사용하면 챗봇은 사용자의 메시지를 사용하여 특정 작업을 완료할 수 있습니다. 예를 들어, 학생이 챗봇에게 "이 주제에 대해 더 많은 도움이 필요하다는 내 강사에게 이메일을 보내주세요"라고 요청할 수 있습니다. 이는 `send_email(to: string, body: string)` function calling을 수행할 수 있습니다. - -- **API 또는 데이터베이스 쿼리 생성**: 사용자는 자연어를 사용하여 형식화된 쿼리나 API 요청을 통해 정보를 찾을 수 있습니다. 예를 들어, 선생님이 "최근 과제를 완료한 학생들은 누구인가요?"라고 요청할 수 있으며, 이는 `get_completed(student_name: string, assignment: int, current_status: string)`라는 함수를 호출할 수 있습니다. - -- **구조화된 데이터 생성**: 사용자는 텍스트 블록이나 CSV에서 중요한 정보를 추출하기 위해 LLM을 사용할 수 있습니다. 예를 들어, 학생이 평화 협정에 대한 위키피디아 문서를 가져와 AI 플래시 카드를 만들 수 있습니다. 이는 `get_important_facts(agreement_name: string, date_signed: string, parties_involved: list)`라는 함수를 사용하여 수행할 수 있습니다. - -## 첫 번째 Function Call 생성 - -Function Call을 생성하는 과정은 다음 3단계로 이루어집니다: - -1. 함수 목록과 사용자 메시지를 사용하여 Chat Completions API를 **호출**합니다. -2. 모델의 응답을 **읽어** 함수를 실행하거나 API 호출을 수행합니다. -3. 함수의 응답을 사용하여 사용자에게 응답을 생성하기 위해 Chat Completions API에 **다시 호출**합니다. - -![LLM Flow](../../images/LLM-Flow.png?WT.mc_id=academic-105485-koreyst) - -### 단계 1 - 메시지 생성 - -첫 번째 단계는 사용자 메시지를 생성하는 것입니다. 이는 동적으로 텍스트 입력의 값을 가져와 할당할 수도 있고, 여기에서 값을 직접 할당할 수도 있습니다. Chat Completions API를 처음 사용하는 경우, `role`과 `content`를 메시지에 정의해야 합니다. - -`role`은 `system` (규칙 생성), `assistant` (모델), `user` (최종 사용자) 중 하나일 수 있습니다. function calling을 위해 `user`로 할당하고 예시 질문을 작성합니다. - -```python -messages= [ {"role": "user", "content": "Azure를 배우기 위한 초보 학생에게 좋은 강좌를 찾아주세요."} ] -``` - -다른 역할을 할당함으로써, 시스템이 무언가를 말하는지 사용자가 말하는지 LLM에게 명확하게 전달되어 LLM이 대화 기록을 구축하는 데 도움이 됩니다. - -### 단계 2 - 함수 생성 - -다음으로, 함수와 해당 함수의 매개변수를 정의합니다. 여기에서는 `search_courses`라는 하나의 함수만 사용하지만 여러 개의 함수를 생성할 수 있습니다. - -> **중요**: 함수는 LLM에게 시스템 메시지에 포함되며 사용 가능한 토큰의 양에 포함됩니다. - -아래에서는 각 항목이 함수인 배열로 함수를 생성합니다. 각 항목은 `name`, `description`, `parameters` 속성을 가지고 있습니다: - -```python -functions = [ - { - "name":"search_courses", - "description":"Retrieves courses from the search index based on the parameters provided", - "parameters":{ - "type":"object", - "properties":{ - "role":{ - "type":"string", - "description":"The role of the learner (i.e. developer, data scientist, student, etc.)" - }, - "product":{ - "type":"string", - "description":"The product that the lesson is covering (i.e. Azure, Power BI, etc.)" - }, - "level":{ - "type":"string", - "description":"The level of experience the learner has prior to taking the course (i.e. beginner, intermediate, advanced)" - } - }, - "required":[ - "role" - ] - } - } -] -``` - -아래에서 각 함수 인스턴스를 자세히 설명하겠습니다: - -- `name` - 호출하려는 함수의 이름입니다. -- `description` - 함수가 작동하는 방식에 대한 설명입니다. 여기서는 구체적이고 명확하게 작성하는 것이 중요합니다. -- `parameters` - 모델이 응답에서 생성할 값과 형식의 목록입니다. 매개변수 배열은 다음 속성을 가진 항목으로 구성됩니다: - 1. `type` - 속성의 데이터 유형이 저장됩니다. - 1. `properties` - 모델이 응답에 사용할 구체적인 값의 목록입니다. - 1. `name` - 모델이 형식화된 응답에서 사용할 속성의 이름입니다. 예를 들어, `product`입니다. - 1. `type` - 이 속성의 데이터 유형입니다. 예를 들어, `string`입니다. - 1. `description` - 특정 속성에 대한 설명입니다. - -function call이 완료되기 위해 선택적으로 `required` 속성도 있습니다. - -### 단계 3 - function call 만들기 - -함수를 정의한 후에는 Chat Completions API 호출에 해당 함수를 포함해야 합니다. 이를 위해 요청에 `functions`를 추가합니다. 이 경우 `functions=functions`로 설정합니다. - -`function_call`을 `auto`로 설정하는 옵션도 있습니다. 이는 우리가 직접 할당하는 대신 LLM이 사용자 메시지를 기반으로 어떤 함수를 호출할지 결정하도록 합니다. - -아래 코드에서는 `ChatCompletion.create`를 호출하는 방법을 보여줍니다. `functions=functions`와 `function_call="auto"`를 설정하여 LLM에게 우리가 제공한 함수를 언제 호출할지 결정하도록 합니다: - -```python -response = client.chat.completions.create(model=deployment, - messages=messages, - functions=functions, - function_call="auto") - -print(response.choices[0].message) -``` - -The response coming back now looks like so: - -```json -{ - "role": "assistant", - "function_call": { - "name": "search_courses", - "arguments": "{\n \"role\": \"student\",\n \"product\": \"Azure\",\n \"level\": \"beginner\"\n}" - } -} -``` - -여기에서는 `search_courses` 함수가 어떻게 호출되고 어떤 인수로 호출되었는지를 볼 수 있습니다. 이는 JSON 응답의 `arguments` 속성에 나열된 것과 동일합니다. - -LLM은 `messages` 매개변수에 제공된 값에서 데이터를 추출하여 함수의 인수와 일치하는 데이터를 찾을 수 있었습니다. 아래는 `messages` 값의 복습입니다: - -```python -messages= [ {"role": "user", "content": "초보 학생이 Azure를 배우기 위한 좋은 강좌를 찾아주세요."} ] -``` - -`messages`에서 `student`, `Azure` 및 `beginner`가 추출되어 함수의 입력으로 설정되었음을 확인할 수 있습니다. 함수를 이렇게 사용하는 것은 프롬프트에서 정보를 추출하는 좋은 방법이며 LLM에 구조를 제공하고 재사용 가능한 기능을 갖도록 하는 데 유용합니다. - -다음으로, 이를 앱에 통합하는 방법을 살펴보겠습니다. - -## Function Call을 애플리케이션에 통합하기 - -LLM에서 서식이 지정된 응답을 테스트한 후, 이제 이를 애플리케이션에 통합할 수 있습니다. - -### 흐름 관리 - -애플리케이션에 이를 통합하기 위해 다음 단계를 수행해 보겠습니다: - -1. 먼저 Open AI 서비스에 호출을 수행하고 메시지를 `response_message`라는 변수에 저장합니다. - - ```python - response_message = response.choices[0].message - ``` - -1. 이제 Microsoft Learn API를 호출하여 강좌 목록을 가져올 함수를 정의합니다: - - ```python - import requests - - def search_courses(role, product, level): - url = "https://learn.microsoft.com/api/catalog/" - params = { - "role": role, - "product": product, - "level": level - } - response = requests.get(url, params=params) - modules = response.json()["modules"] - results = [] - for module in modules[:5]: - title = module["title"] - url = module["url"] - results.append({"title": title, "url": url}) - return str(results) - ``` - - 이제 우리는 `functions` 변수에 도입된 함수 이름과 매핑되는 실제 Python 함수를 생성합니다. 또한 필요한 데이터를 가져오기 위해 실제 외부 API 호출을 수행합니다. 이 경우에는 Microsoft Learn API를 사용하여 교육 모듈을 검색합니다. - - 그래서 `functions` 변수와 해당하는 Python 함수를 생성했는데, 어떻게 LLM에게 이 둘을 매핑하여 Python 함수를 호출하도록 알려줄까요? - - 1. Python 함수를 호출해야 하는지 확인하기 위해 LLM 응답을 살펴보고 `function_call`이 포함되어 있는지 확인한 후 해당 함수를 호출해야 합니다. 아래에 언급된 확인 방법을 사용하여 이를 수행할 수 있습니다: - - ```python - # 모델이 함수를 호출하려는지 확인합니다. - if response_message.function_call.name: - print("추천 function call:") - print(response_message.function_call.name) - print() - - # 함수를 호출합니다. - function_name = response_message.function_call.name - - available_functions = { - "search_courses": search_courses, - } - function_to_call = available_functions[function_name] - - function_args = json.loads(response_message.function_call.arguments) - function_response = function_to_call(**function_args) - - print("function call 결과:") - print(function_response) - print(type(function_response)) - - - # 어시스턴트 응답과 함수 응답을 메시지에 추가합니다. - messages.append( # 어시스턴트 응답을 메시지에 추가 - { - "role": response_message.role, - "function_call": { - "name": function_name, - "arguments": response_message.function_call.arguments, - }, - "content": None - } - ) - messages.append( # 함수 응답을 메시지에 추가 - { - "role": "function", - "name": function_name, - "content":function_response, - } - ) - ``` - - 이 세 줄은 함수 이름, 인수를 추출하고 호출을 수행하는 것을 보장합니다: - - ```python - function_to_call = available_functions[function_name] - - function_args = json.loads(response_message.function_call.arguments) - function_response = function_to_call(**function_args) - ``` - - 아래는 코드를 실행한 결과입니다: - - **결과** - - ```Recommended Function call: - { - "name": "search_courses", - "arguments": "{\n \"role\": \"student\",\n \"product\": \"Azure\",\n \"level\": \"beginner\"\n}" - } - - Output of function call: - [{'title': 'Describe concepts of cryptography', 'url': 'https://learn.microsoft.com/training/modules/describe-concepts-of-cryptography/? - WT.mc_id=api_CatalogApi'}, {'title': 'Introduction to audio classification with TensorFlow', 'url': 'https://learn.microsoft.com/en- - us/training/modules/intro-audio-classification-tensorflow/?WT.mc_id=api_CatalogApi'}, {'title': 'Design a Performant Data Model in Azure SQL - Database with Azure Data Studio', 'url': 'https://learn.microsoft.com/training/modules/design-a-data-model-with-ads/? - WT.mc_id=api_CatalogApi'}, {'title': 'Getting started with the Microsoft Cloud Adoption Framework for Azure', 'url': - 'https://learn.microsoft.com/training/modules/cloud-adoption-framework-getting-started/?WT.mc_id=api_CatalogApi'}, {'title': 'Set up the - Rust development environment', 'url': 'https://learn.microsoft.com/training/modules/rust-set-up-environment/?WT.mc_id=api_CatalogApi'}] - - ``` - -1. 이제 우리는 업데이트된 메시지 `messages`를 LLM에 보내서 API JSON 형식의 응답 대신 자연어 응답을 받을 것입니다. - - ```python - print("Messages in next request:") - print(messages) - print() - - second_response = client.chat.completions.create( - messages=messages, - model=deployment, - function_call="auto", - functions=functions, - temperature=0 - ) # GPT에서 함수 응답을 볼 수 있는 새로운 응답을 받습니다. - - - print(second_response.choices[0].message) - ``` - - **Output** - - ```python - { - "role": "assistant", - "content": "Azure를 배우기 위한 초보 학생들을 위한 좋은 강의를 찾았어요:\n\n1. [암호학 개념 설명](https://learn.microsoft.com/training/modules/describe-concepts-of-cryptography/?WT.mc_id=api_CatalogApi)\n2. [TensorFlow를 사용한 오디오 분류 소개](https://learn.microsoft.com/training/modules/intro-audio-classification-tensorflow/?WT.mc_id=api_CatalogApi)\n3. [Azure SQL Database에서 성능이 우수한 데이터 모델 설계](https://learn.microsoft.com/training/modules/design-a-data-model-with-ads/?WT.mc_id=api_CatalogApi)\n4. [Azure를 위한 Microsoft Cloud Adoption Framework 시작하기](https://learn.microsoft.com/training/modules/cloud-adoption-framework-getting-started/?WT.mc_id=api_CatalogApi)\n5. [Rust 개발 환경 설정하기](https://learn.microsoft.com/training/modules/rust-set-up-environment/?WT.mc_id=api_CatalogApi)\n\n링크를 클릭하여 강의에 접속할 수 있습니다." - } - - ``` - -## 과제 - -Azure Open AI Function Calling 학습을 계속 진행하기 위해 다음을 구현해 볼 수 있습니다: - -- 학습자가 더 많은 강의를 찾을 수 있도록 함수의 추가 매개변수를 만들어보세요. -- 학습자의 모국어와 같은 추가 정보를 받아들이는 다른 function call을 생성하세요. -- function call 및/또는 API 호출이 적합한 강의를 반환하지 않을 경우 오류 처리를 만들어보세요. - -힌트: [Learn API 참조 문서](https://learn.microsoft.com/training/support/catalog-api-developer-reference?WT.mc_id=academic-105485-koreyst) 페이지를 참고하여 이 데이터가 어떻게 사용 가능한지 확인하세요. - -## 훌륭합니다! 계속해서 학습하세요 - -이 레슨을 완료한 후, [Generative AI 학습 컬렉션](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst)을 확인하여 Generative AI 지식을 더욱 향상시킬 수 있습니다! - -12번 레슨으로 이동하여 [AI 애플리케이션을 위한 UX 디자인](../../../12-designing-ux-for-ai-applications/translations/ko/README.md?WT.mc_id=academic-105485-koreyst)에 대해 알아보세요! diff --git a/11-integrating-with-function-calling/translations/pl/README.md b/11-integrating-with-function-calling/translations/pl/README.md deleted file mode 100644 index a593ab99ee..0000000000 --- a/11-integrating-with-function-calling/translations/pl/README.md +++ /dev/null @@ -1,458 +0,0 @@ -# Integracja z wywołaniami funkcji - -[![Integracja z wywołaniami funkcji](../../images/11-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson11-gh?WT.mc_id=academic-105485-koreyst) - -W poprzednich lekcjach nauczyłeś się już całkiem sporo. Jednak możemy jeszcze ulepszyć nasze podejście. Możemy skupić się na tym, jak uzyskać bardziej spójny format odpowiedzi, aby ułatwić pracę z odpowiedzią w dalszych etapach. Ponadto możemy chcieć dodać dane z innych źródeł, aby dodatkowo wzbogacić naszą aplikację. - -Powyższe problemy są właśnie tym, co ten rozdział ma na celu rozwiązać. - -## Wprowadzenie - -Ta lekcja obejmie: - -- Wyjaśnienie czym jest wywoływanie funkcji i jego przypadki użycia. -- Tworzenie wywołania funkcji przy użyciu Azure OpenAI. -- Jak zintegrować wywołanie funkcji w aplikacji. - -## Cele Nauki - -Po zakończeniu tej lekcji będziesz potrafił: - -- Wyjaśnić cel używania wywołań funkcji. -- Skonfigurować wywołanie funkcji przy użyciu Azure OpenAI Service. -- Projektować efektywne wywołania funkcji dla przypadków użycia Twojej aplikacji. - -## Scenariusz: Ulepszanie naszego chatbota za pomocą funkcji - -W tej lekcji chcemy zbudować funkcję dla naszego startupu edukacyjnego, która pozwoli użytkownikom korzystać z chatbota do znajdowania kursów technicznych. Będziemy polecać kursy, które pasują do ich poziomu umiejętności, aktualnej roli i interesującej ich technologii. - -Aby ukończyć ten scenariusz, będziemy korzystać z kombinacji: - -- `Azure OpenAI` do stworzenia doświadczenia czatu dla użytkownika. -- `Microsoft Learn Catalog API` do pomocy użytkownikom w znalezieniu kursów na podstawie ich zapytań. -- `Wywołania funkcji` do przyjęcia zapytania użytkownika i wysłania go do funkcji w celu wykonania żądania API. - -Aby zacząć, przyjrzyjmy się, dlaczego w ogóle chcielibyśmy używać wywołań funkcji: - -## Dlaczego Wywołania Funkcji - -Przed wywołaniami funkcji, odpowiedzi z LLM były nieustrukturyzowane i niespójne. Programiści musieli pisać złożony kod walidacji, aby upewnić się, że są w stanie obsłużyć każdą odmianę odpowiedzi. Użytkownicy nie mogli otrzymać odpowiedzi na pytania takie jak "Jaka jest aktualna pogoda w Sztokholmie?". Działo się tak, ponieważ modele były ograniczone do danych, na których były trenowane. - -Wywołanie funkcji to funkcja usługi Azure OpenAI, która pozwala przezwyciężyć następujące ograniczenia: - -- **Spójny format odpowiedzi**. Jeśli możemy lepiej kontrolować format odpowiedzi, możemy łatwiej zintegrować odpowiedź w dalszych etapach z innymi systemami. -- **Zewnętrzne dane**. Możliwość wykorzystania danych z innych źródeł aplikacji w kontekście czatu. - -## Ilustracja problemu na podstawie scenariusza - -> Zalecamy skorzystanie z [dołączonego notebooka](../../python/aoai-assignment.ipynb?WT.mc_id=academic-105485-koreyst), jeśli chcesz uruchomić poniższy scenariusz. Możesz też po prostu czytać dalej, ponieważ staramy się zilustrować problem, w rozwiązaniu którego mogą pomóc funkcje. - -Przyjrzyjmy się przykładowi, który ilustruje problem z formatem odpowiedzi: - -Powiedzmy, że chcemy stworzyć bazę danych z danymi studentów, abyśmy mogli zasugerować im odpowiedni kurs. Poniżej mamy dwa opisy studentów, które są bardzo podobne pod względem zawartych danych. - -1. Tworzenie połączenia z naszym zasobem Azure OpenAI: - - ```python - import os - import json - from openai import AzureOpenAI - from dotenv import load_dotenv - load_dotenv() - - client = AzureOpenAI( - api_key=os.environ['AZURE_OPENAI_API_KEY'], # to jest również wartość domyślna, można ją pominąć - api_version = "2023-07-01-preview" - ) - - deployment=os.environ['AZURE_OPENAI_DEPLOYMENT'] - ``` - - Powyżej znajduje się kod Pythona do konfiguracji naszego połączenia z Azure OpenAI, gdzie ustawiamy `api_type`, `api_base`, `api_version` i `api_key`. - -1. Tworzenie dwóch opisów studentów przy użyciu zmiennych `student_1_description` i `student_2_description`. - - ```python - student_1_description="Emily Johnson jest studentką drugiego roku informatyki na Uniwersytecie Duke. Ma średnią ocen 3,7. Emily jest aktywną członkinią uniwersyteckiego Klubu Szachowego i Drużyny Debat. Ma nadzieję na karierę w inżynierii oprogramowania po ukończeniu studiów." - - student_2_description = "Michael Lee jest studentem drugiego roku informatyki na Uniwersytecie Stanford. Ma średnią ocen 3,8. Michael znany jest ze swoich umiejętności programistycznych i jest aktywnym członkiem uniwersyteckiego Klubu Robotyki. Ma nadzieję na karierę w sztucznej inteligencji po ukończeniu studiów." - ``` - - Chcemy wysłać powyższe opisy studentów do LLM, aby przeanalizować dane. Te dane mogą być później wykorzystane w naszej aplikacji i wysłane do API lub przechowywane w bazie danych. - -1. Stwórzmy dwa identyczne prompty, w których instruujemy LLM, jakie informacje nas interesują: - - ```python - prompt1 = f''' - Proszę wyodrębnić następujące informacje z podanego tekstu i zwrócić je jako obiekt JSON: - - name - major - school - grades - club - - Poniżej znajduje się tekst, z którego należy wyodrębnić informacje: - {student_1_description} - ''' - - prompt2 = f''' - Proszę wyodrębnić następujące informacje z podanego tekstu i zwrócić je jako obiekt JSON: - - name - major - school - grades - club - - Poniżej znajduje się tekst, z którego należy wyodrębnić informacje: - {student_2_description} - ''' - ``` - - Powyższe prompty instruują LLM, aby wyodrębnił informacje i zwrócił odpowiedź w formacie JSON. - -1. Po skonfigurowaniu promptów i połączenia z Azure OpenAI, wyślemy teraz prompty do LLM za pomocą `openai.ChatCompletion`. Zapisujemy prompt w zmiennej `messages` i przypisujemy rolę do `user`. Ma to na celu naśladowanie wiadomości od użytkownika pisanej do chatbota. - - ```python - # odpowiedź na pierwszy prompt - openai_response1 = client.chat.completions.create( - model=deployment, - messages = [{'role': 'user', 'content': prompt1}] - ) - openai_response1.choices[0].message.content - - # odpowiedź na drugi prompt - openai_response2 = client.chat.completions.create( - model=deployment, - messages = [{'role': 'user', 'content': prompt2}] - ) - openai_response2.choices[0].message.content - ``` - -Teraz możemy wysłać oba zapytania do LLM i zbadać otrzymaną odpowiedź, znajdując ją w ten sposób: `openai_response1['choices'][0]['message']['content']`. - -1. Na koniec możemy przekonwertować odpowiedź na format JSON, wywołując `json.loads`: - - ```python - # Wczytywanie odpowiedzi jako obiektu JSON - json_response1 = json.loads(openai_response1.choices[0].message.content) - json_response1 - ``` - - Odpowiedź 1: - - ```json - { - "name": "Emily Johnson", - "major": "computer science", - "school": "Duke University", - "grades": "3.7", - "club": "Chess Club" - } - ``` - - Odpowiedź 2: - - ```json - { - "name": "Michael Lee", - "major": "computer science", - "school": "Stanford University", - "grades": "3.8 GPA", - "club": "Robotics Club" - } - ``` - - Chociaż prompty są takie same, a opisy są podobne, widzimy wartości właściwości `Grades` sformatowane inaczej, ponieważ czasami możemy otrzymać format `3.7` lub `3.7 GPA`. - - Wynik ten wynika z faktu, że LLM przyjmuje nieustrukturyzowane dane w formie pisanego promptu i również zwraca nieustrukturyzowane dane. Potrzebujemy ustrukturyzowanego formatu, abyśmy wiedzieli, czego się spodziewać przy przechowywaniu lub używaniu tych danych. - -Jak więc rozwiązać problem z formatowaniem? Używając wywołania funkcji, możemy upewnić się, że otrzymamy ustrukturyzowane dane. Podczas korzystania z wywołania funkcji, LLM nie wywołuje ani nie uruchamia żadnych funkcji. Zamiast tego tworzymy strukturę, którą LLM ma naśladować w swoich odpowiedziach. Następnie używamy tych ustrukturyzowanych odpowiedzi, aby wiedzieć, jaką funkcję uruchomić w naszych aplikacjach. - -![function flow](../../images/Function-Flow.png?WT.mc_id=academic-105485-koreyst) - -Możemy następnie wziąć to, co zwraca funkcja i wysłać to z powrotem do LLM. LLM odpowie następnie używając języka naturalnego, aby odpowiedzieć na zapytanie użytkownika. - -## Przypadki użycia wywołań funkcji - -Istnieje wiele różnych przypadków użycia, w których wywołania funkcji mogą ulepszyć Twoją aplikację, takich jak: - -- **Wywoływanie zewnętrznych narzędzi**. Chatboty są świetne w udzielaniu odpowiedzi na pytania użytkowników. Korzystając z wywołania funkcji, chatboty mogą używać wiadomości od użytkowników do wykonywania określonych zadań. Na przykład, student może poprosić chatbota o "Wysłanie e-maila do mojego instruktora z informacją, że potrzebuję więcej pomocy z tym tematem". Może to wywołać funkcję `send_email(to: string, body: string)` - -- **Tworzenie zapytań API lub bazy danych**. Użytkownicy mogą znaleźć informacje używając języka naturalnego, który zostaje przekształcony w sformatowane zapytanie lub żądanie API. Przykładem może być nauczyciel, który prosi o "Kto są studenci, którzy ukończyli ostatnie zadanie", co może wywołać funkcję o nazwie `get_completed(student_name: string, assignment: int, current_status: string)` - -- **Tworzenie ustrukturyzowanych danych**. Użytkownicy mogą wziąć blok tekstu lub CSV i użyć LLM do wyodrębnienia ważnych informacji z niego. Na przykład, student może przekonwertować artykuł z Wikipedii o porozumieniach pokojowych, aby stworzyć fiszki AI. Można to zrobić za pomocą funkcji o nazwie `get_important_facts(agreement_name: string, date_signed: string, parties_involved: list)` - -## Tworzenie Pierwszego Wywołania Funkcji - -Proces tworzenia wywołania funkcji obejmuje 3 główne kroki: - -1. **Wywołanie** API Chat Completions z listą Twoich funkcji i wiadomością użytkownika. -2. **Odczytanie** odpowiedzi modelu w celu wykonania działania, tj. wykonania funkcji lub wywołania API. -3. **Wykonanie** kolejnego wywołania API Chat Completions z odpowiedzią z Twojej funkcji, aby użyć tych informacji do stworzenia odpowiedzi dla użytkownika. - -![LLM Flow](../../images/LLM-Flow.png?WT.mc_id=academic-105485-koreyst) - -### Krok 1 - tworzenie wiadomości - -Pierwszym krokiem jest utworzenie wiadomości użytkownika. Może to być dynamicznie przypisane przez pobranie wartości wejściowej tekstowej lub możesz przypisać wartość tutaj. Jeśli jest to Twój pierwszy raz pracy z API Chat Completions, musimy zdefiniować `role` i `content` wiadomości. - -`role` może być albo `system` (tworzenie reguł), `assistant` (model) lub `user` (użytkownik końcowy). W przypadku wywołania funkcji przypiszemy to jako `user` i przykładowe pytanie. - -```python -messages= [ {"role": "user", "content": "Znajdź mi dobry kurs dla początkującego studenta do nauki Azure."} ] -``` - -Przypisując różne role, LLM ma jasność, czy to system coś mówi, czy użytkownik, co pomaga budować historię konwersacji, na której LLM może bazować. - -### Krok 2 - tworzenie funkcji - -Następnie zdefiniujemy funkcję i jej parametry. Użyjemy tutaj tylko jednej funkcji o nazwie `search_courses`, ale możesz utworzyć wiele funkcji. - -> **Ważne**: Funkcje są zawarte w wiadomości systemowej do LLM i będą wliczane w ilość dostępnych tokenów, które masz do dyspozycji. - -Poniżej tworzymy funkcje jako tablicę elementów. Każdy element jest funkcją i ma właściwości `name`, `description` i `parameters`: - -```python -functions = [ - { - "name":"search_courses", - "description":"Pobiera kursy z indeksu wyszukiwania na podstawie dostarczonych parametrów", - "parameters":{ - "type":"object", - "properties":{ - "role":{ - "type":"string", - "description":"Rola uczącego się (np. developer, data scientist, student, itp.)" - }, - "product":{ - "type":"string", - "description":"Produkt, którego dotyczy lekcja (np. Azure, Power BI, itp.)" - }, - "level":{ - "type":"string", - "description":"Poziom doświadczenia, jaki posiada uczący się przed przystąpieniem do kursu (np. beginner, intermediate, advanced)" - } - }, - "required":[ - "role" - ] - } - } -] -``` - -Opiszmy bardziej szczegółowo każdą instancję funkcji poniżej: - -- `name` - Nazwa funkcji, którą chcemy wywołać. -- `description` - Jest to opis działania funkcji. Tutaj ważne jest, aby być konkretnym i jasnym. -- `parameters` - Lista wartości i format, które chcesz, aby model wyprodukował w swojej odpowiedzi. Tablica parametrów składa się z elementów, gdzie elementy mają następujące właściwości: - 1. `type` - Typ danych, w którym będą przechowywane właściwości. - 1. `properties` - Lista określonych wartości, które model wykorzysta w swojej odpowiedzi - 1. `name` - Klucz to nazwa właściwości, którą model użyje w swojej sformatowanej odpowiedzi, na przykład `product`. - 1. `type` - Typ danych tej właściwości, na przykład `string`. - 1. `description` - Opis konkretnej właściwości. - -Istnieje również opcjonalna właściwość `required` - wymagana właściwość do ukończenia wywołania funkcji. - -### Krok 3 - Wykonanie wywołania funkcji - -Po zdefiniowaniu funkcji, musimy teraz uwzględnić ją w wywołaniu API Chat Completion. Robimy to dodając `functions` do żądania. W tym przypadku `functions=functions`. - -Istnieje również opcja ustawienia `function_call` na `auto`. Oznacza to, że pozwolimy LLM zdecydować, która funkcja powinna być wywołana na podstawie wiadomości użytkownika, zamiast przypisywać ją samodzielnie. - -Oto kod poniżej, w którym wywołujemy `ChatCompletion.create`, zauważ, jak ustawiamy `functions=functions` i `function_call="auto"`, dając tym samym LLM wybór, kiedy wywołać funkcje, które mu dostarczamy: - -```python -response = client.chat.completions.create(model=deployment, - messages=messages, - functions=functions, - function_call="auto") - -print(response.choices[0].message) -``` - -Zwracana odpowiedź wygląda teraz tak: - -```json -{ - "role": "assistant", - "function_call": { - "name": "search_courses", - "arguments": "{\n \"role\": \"student\",\n \"product\": \"Azure\",\n \"level\": \"beginner\"\n}" - } -} -``` - -Tutaj możemy zobaczyć, jak funkcja `search_courses` została wywołana i z jakimi argumentami, wymienionymi we właściwości `arguments` w odpowiedzi JSON. - -LLM był w stanie znaleźć dane pasujące do argumentów funkcji, ponieważ wyodrębnił je z wartości dostarczonej do parametru `messages` w wywołaniu chat completion. Poniżej przypomnienie wartości `messages`: - -```python -messages= [ {"role": "user", "content": "Znajdź mi dobry kurs dla początkującego studenta do nauki Azure."} ] -``` - -Jak widzisz, `student`, `Azure` i `beginner` zostały wyodrębnione z `messages` i ustawione jako dane wejściowe do funkcji. Używanie funkcji w ten sposób to świetny sposób na wyodrębnianie informacji z promptu, ale także do zapewnienia struktury dla LLM i posiadania funkcjonalności wielokrotnego użytku. - -Następnie musimy zobaczyć, jak możemy to wykorzystać w naszej aplikacji. - -## Integracja Wywołań Funkcji w Aplikacji - -Po przetestowaniu sformatowanej odpowiedzi z LLM, możemy teraz zintegrować to z aplikacją. - -### Zarządzanie przepływem - -Aby zintegrować to z naszą aplikacją, wykonajmy następujące kroki: - -1. Najpierw wykonajmy wywołanie do usług OpenAI i zapiszmy wiadomość w zmiennej o nazwie `response_message`. - - ```python - response_message = response.choices[0].message - ``` - -1. Teraz zdefiniujemy funkcję, która wywoła Microsoft Learn API, aby uzyskać listę kursów: - - ```python - import requests - - def search_courses(role, product, level): - url = "https://learn.microsoft.com/api/catalog/" - params = { - "role": role, - "product": product, - "level": level - } - response = requests.get(url, params=params) - modules = response.json()["modules"] - results = [] - for module in modules[:5]: - title = module["title"] - url = module["url"] - results.append({"title": title, "url": url}) - return str(results) - ``` - - Zauważ, jak teraz tworzymy rzeczywistą funkcję Pythona, która mapuje się na nazwy funkcji wprowadzone w zmiennej `functions`. Wykonujemy również rzeczywiste zewnętrzne wywołania API w celu pobrania potrzebnych danych. W tym przypadku korzystamy z Microsoft Learn API, aby wyszukać moduły szkoleniowe. - -Ok, więc stworzyliśmy zmienne `functions` i odpowiadającą im funkcję Pythona, jak powiedzieć LLM, jak mapować te dwie rzeczy, aby nasza funkcja Pythona została wywołana? - -1. Aby zobaczyć, czy potrzebujemy wywołać funkcję Pythona, musimy zajrzeć do odpowiedzi LLM i sprawdzić, czy `function_call` jest jej częścią i wywołać wskazaną funkcję. Oto jak można dokonać wspomnianego sprawdzenia poniżej: - - ```python - # Sprawdź, czy model chce wywołać funkcję - if response_message.function_call.name: - print("Zalecane wywołanie funkcji:") - print(response_message.function_call.name) - print() - - # Wywołaj funkcję. - function_name = response_message.function_call.name - - available_functions = { - "search_courses": search_courses, - } - function_to_call = available_functions[function_name] - - function_args = json.loads(response_message.function_call.arguments) - function_response = function_to_call(**function_args) - - print("Wynik wywołania funkcji:") - print(function_response) - print(type(function_response)) - - - # Dodaj odpowiedź asystenta i odpowiedź funkcji do wiadomości - messages.append( # dodawanie odpowiedzi asystenta do wiadomości - { - "role": response_message.role, - "function_call": { - "name": function_name, - "arguments": response_message.function_call.arguments, - }, - "content": None - } - ) - messages.append( # dodawanie odpowiedzi funkcji do wiadomości - { - "role": "function", - "name": function_name, - "content":function_response, - } - ) - ``` - - Te trzy linie zapewniają, że wyodrębniamy nazwę funkcji, argumenty i wykonujemy wywołanie: - - ```python - function_to_call = available_functions[function_name] - - function_args = json.loads(response_message.function_call.arguments) - function_response = function_to_call(**function_args) - ``` - - Poniżej znajduje się wynik uruchomienia naszego kodu: - - **Wynik** - - ```Zalecane wywołanie funkcji: - { - "name": "search_courses", - "arguments": "{\n \"role\": \"student\",\n \"product\": \"Azure\",\n \"level\": \"beginner\"\n}" - } - - Wynik wywołania funkcji: - [{'title': 'Describe concepts of cryptography', 'url': 'https://learn.microsoft.com/training/modules/describe-concepts-of-cryptography/? - WT.mc_id=api_CatalogApi'}, {'title': 'Introduction to audio classification with TensorFlow', 'url': 'https://learn.microsoft.com/en- - us/training/modules/intro-audio-classification-tensorflow/?WT.mc_id=api_CatalogApi'}, {'title': 'Design a Performant Data Model in Azure SQL - Database with Azure Data Studio', 'url': 'https://learn.microsoft.com/training/modules/design-a-data-model-with-ads/? - WT.mc_id=api_CatalogApi'}, {'title': 'Getting started with the Microsoft Cloud Adoption Framework for Azure', 'url': - 'https://learn.microsoft.com/training/modules/cloud-adoption-framework-getting-started/?WT.mc_id=api_CatalogApi'}, {'title': 'Set up the - Rust development environment', 'url': 'https://learn.microsoft.com/training/modules/rust-set-up-environment/?WT.mc_id=api_CatalogApi'}] - - ``` - -1. Teraz wyślemy zaktualizowaną wiadomość `messages` do LLM, abyśmy mogli otrzymać odpowiedź w języku naturalnym zamiast odpowiedzi w formacie JSON API. - - ```python - print("Wiadomości w następnym żądaniu:") - print(messages) - print() - - second_response = client.chat.completions.create( - messages=messages, - model=deployment, - function_call="auto", - functions=functions, - temperature=0 - ) # uzyskaj nową odpowiedź od GPT, gdzie może zobaczyć odpowiedź funkcji - - - print(second_response.choices[0].message) - ``` - - **Wynik** - - ```python - { - "role": "assistant", - "content": "Znalazłem kilka dobrych kursów dla początkujących studentów do nauki Azure:\n\n1. [Describe concepts of cryptography] (https://learn.microsoft.com/training/modules/describe-concepts-of-cryptography/?WT.mc_id=api_CatalogApi)\n2. [Introduction to audio classification with TensorFlow](https://learn.microsoft.com/training/modules/intro-audio-classification-tensorflow/?WT.mc_id=api_CatalogApi)\n3. [Design a Performant Data Model in Azure SQL Database with Azure Data Studio](https://learn.microsoft.com/training/modules/design-a-data-model-with-ads/?WT.mc_id=api_CatalogApi)\n4. [Getting started with the Microsoft Cloud Adoption Framework for Azure](https://learn.microsoft.com/training/modules/cloud-adoption-framework-getting-started/?WT.mc_id=api_CatalogApi)\n5. [Set up the Rust development environment](https://learn.microsoft.com/training/modules/rust-set-up-environment/?WT.mc_id=api_CatalogApi)\n\nMożesz kliknąć na linki, aby uzyskać dostęp do kursów." - } - - ``` - -## Zadanie - -Aby kontynuować naukę o wywoływaniu funkcji Azure OpenAI, możesz zbudować: - -- Więcej parametrów funkcji, które mogą pomóc uczącym się znaleźć więcej kursów. -- Stworzyć inne wywołanie funkcji, które pobiera więcej informacji od uczącego się, takich jak ich język ojczysty. -- Stworzyć obsługę błędów, gdy wywołanie funkcji i/lub API nie zwraca żadnych odpowiednich kursów. - -Wskazówka: Zapoznaj się ze [stroną dokumentacji referencyjnej API Learn](https://learn.microsoft.com/training/support/catalog-api-developer-reference?WT.mc_id=academic-105485-koreyst), aby zobaczyć jak i gdzie te dane są dostępne. - -## Świetna praca! Kontynuuj podróż - -Po ukończeniu tej lekcji sprawdź naszą [Kolekcję nauki Generatywnej SI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst), aby dalej podnosić swoją wiedzę na temat Generatywnej SI! - -Przejdź do Lekcji 12, gdzie przyjrzymy się, jak [projektować UX dla aplikacji SI](../../../12-designing-ux-for-ai-applications/translations/pl/README.md?WT.mc_id=academic-105485-koreyst)! diff --git a/11-integrating-with-function-calling/translations/pt-br/README.md b/11-integrating-with-function-calling/translations/pt-br/README.md deleted file mode 100644 index bee52f343f..0000000000 --- a/11-integrating-with-function-calling/translations/pt-br/README.md +++ /dev/null @@ -1,455 +0,0 @@ -# Integrando com chamadas de função - -[![Integrating with function calling](../../images/11-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson11-gh?WT.mc_id=academic-105485-koreyst) - -Você aprendeu bastante até agora nas lições anteriores. No entanto, podemos melhorar ainda mais. Algumas coisas que podemos abordar são como podemos obter um formato de resposta mais consistente para facilitar o trabalho com a resposta a jusante. Além disso, podemos querer adicionar dados de outras fontes para enriquecer ainda mais nossa aplicação. - -Os problemas mencionados acima são o que este capítulo pretende abordar. - -## Introdução - -Esta lição abordará: - -- Explicará o que é a chamada de função e seus casos de uso. -- Criar uma chamada de função usando o Azure OpenAI. -- Como integrar uma chamada de função em um aplicativo. - -## Metas de Aprendizado - -Após concluir esta lição, você será capaz de: - -- Explicar o propósito de usar chamadas de função. -- Configurar a Chamada de Função usando o Serviço Azure Open AI. -- Projetar chamadas de função eficazes para o caso de uso do seu aplicativo. - -## Cenário: melhorando nosso chatbot com funções - -Para esta lição, queremos criar um recurso para nossa startup de educação que permite aos usuários usar um chatbot para encontrar cursos técnicos. Vamos recomendar cursos que se encaixem no nível de habilidade deles, função atual e tecnologia de interesse. - -Para completar este cenário, usaremos uma combinação de: - -- `Azure Open AI` para criar uma experiência de chat para o usuário. -- `Microsoft Learn Catalog API` para ajudar os usuários a encontrar cursos com base na solicitação do usuário. -- `Chamada de Função` para pegar a consulta do usuário e enviá-la a uma função para fazer a solicitação à API. - -Para começar, vamos ver por que queremos usar chamada de função em primeiro lugar: - -## Por que a Chamada de Função - -Antes da chamada de função, as respostas de um LLM eram desestruturadas e inconsistentes. Os desenvolvedores eram obrigados a escrever código de validação complexo para garantir que pudessem lidar com cada variação de uma resposta. Os usuários não podiam obter respostas como "Qual é a temperatura atual em Estocolmo?". Isso ocorre porque os modelos eram limitados ao tempo em que os dados foram treinados. - -A Chamada de Função é um recurso do Serviço Azure Open AI para superar as seguintes limitações: - -- **Formato de resposta consistente**. Se pudermos controlar melhor o formato da resposta, podemos integrar mais facilmente a resposta a jusante em outros sistemas. -- **Dados externos**. Capacidade de usar dados de outras fontes de um aplicativo em um contexto de chat. - -## Ilustrando o problema por meio de um cenário - -> Recomendamos que você crie um arquivo _Notebook.ipynb_ e cole o código abaixo em células de código separadas se quiser executar o cenário abaixo. Você também pode apenas ler enquanto tentamos ilustrar um problema em que as funções podem ajudar a resolver o problema. - -Vamos dar uma olhada no exemplo que ilustra o problema do formato de resposta: - -Digamos que queremos criar um banco de dados de dados de estudantes para que possamos sugerir o curso certo para eles. Abaixo temos duas descrições de estudantes que são muito semelhantes nos dados que contêm. - -1. Crie uma conexão com nosso recurso Azure Open AI: - - ```python - import os - import openai - import json - openai.api_type = "azure" - openai.api_base = "YOUR OPENAI API BASE URL" - openai.api_version = "2023-07-01-preview" - openai.api_key = os.getenv("OPENAI_API_KEY") - ``` - - Acima está algum código Python para configurar nossa conexão com o Azure Open AI, onde definimos `api_type`, `api_base`, `api_version` e `api_key`. - -1. Crie duas descrições de estudantes usando as variáveis `student_1_description` e `student_2_description`. - - ```python - student_1_description="Emily Johnson is a sophomore majoring in computer science at Duke University. She has a 3.7 GPA. Emily is an active member of the university's Chess Club and Debate Team. She hopes to pursue a career in software engineering after graduating." - - student_2_description = "Michael Lee is a sophomore majoring in computer science at Stanford University. He has a 3.8 GPA. Michael is known for his programming skills and is an active member of the university's Robotics Club. He hopes to pursue a career in artificial intelligence after finishing his studies." - ``` - - Nós queremos enviar as descrições de estudantes acima para um LLM para analisar os dados. Esses dados podem ser usados posteriormente em nosso aplicativo e enviados para uma API ou armazenados em um banco de dados. - -1. Vamos criar duas solicitações idênticas nas quais instruímos o LLM sobre as informações que nos interessam: - - ```python - prompt1 = f''' - Please extract the following information from the given text and return it as a JSON object: - - name - major - school - grades - club - - This is the body of text to extract the information from: - {student_1_description} - ''' - - prompt2 = f''' - Please extract the following information from the given text and return it as a JSON object: - - name - major - school - grades - club - - This is the body of text to extract the information from: - {student_2_description} - ''' - ``` - - O prompt acima instrui o LLM a extrair informações e retornar a resposta no formato JSON. - -1. Após configurar os prompts e a conexão com o Azure Open AI, agora enviaremos os prompts para o LLM usando `openai.ChatCompletion`. Armazenamos o prompt na variável `messages` e atribuímos a função `user`. Isso é para imitar uma mensagem de um usuário sendo escrita em um chatbot. - - ```python - # response from prompt one - openai_response1 = openai.ChatCompletion.create( - engine="gpt-function", - messages = [{'role': 'user', 'content': prompt1}] - ) - openai_response1['choices'][0]['message']['content'] - - # response from prompt two - openai_response2 = openai.ChatCompletion.create( - engine="gpt-function", - messages = [{'role': 'user', 'content': prompt2 }] - ) - openai_response2['choices'][0]['message']['content'] - ``` - -Agora nós podemos enviar ambas as solicitações para o LLM e examinar a resposta que recebemos encontrando-a assim `openai_response1['choices'][0]['message']['content']`. - -1. Por fim, podemos converter a resposta para o formato JSON chamando `json.loads`: - - ```python - # Loading the response as a JSON object - json_response1 = json.loads(openai_response1['choices'][0]['message']['content']) - json_response1 - ``` - - Resposta 1: - - ```json - { - "name": "Emily Johnson", - "major": "computer science", - "school": "Duke University", - "grades": "3.7", - "club": "Chess Club" - } - ``` - - Resposta 2: - - ```json - { - "name": "Michael Lee", - "major": "computer science", - "school": "Stanford University", - "grades": "3.8 GPA", - "club": "Robotics Club" - } - ``` - - Embora os prompts sejam os mesmos e as descrições sejam semelhantes, vemos que os valores da propriedade `Grades` são formatados de maneira diferente, como `3.7` ou `3.7 GPA`, por exemplo. - - Isso ocorre porque o LLM recebe dados não estruturados na forma do prompt escrito e também retorna dados não estruturados. Precisamos ter um formato estruturado para saber o que esperar ao armazenar ou usar esses dados. - -Então, como resolvemos o problema de formatação? Ao usar chamadas de função, podemos garantir que recebemos dados estruturados de volta. Ao usar chamadas de função, o LLM na verdade não chama ou executa funções. Em vez disso, criamos uma estrutura para o LLM seguir para suas respostas. Em seguida, usamos essas respostas estruturadas para saber qual função executar em nossos aplicativos. - -![fluxo de função](../../images/Function-Flow.png?WT.mc_id=academic-105485-koreyst) - -Podemos então pegar o que é retornado da função e enviar isso de volta ao LLM. O LLM responderá usando linguagem natural para responder à consulta do usuário. - -## Casos de uso para chamadas de função - -Existem muitos casos de uso diferentes em que chamadas de função podem aprimorar seu aplicativo, como: - -- **Chamando Ferramentas Externas**. Chatbots são ótimos para fornecer respostas a perguntas dos usuários. Ao usar chamadas de função, os chatbots podem usar mensagens dos usuários para concluir determinadas tarefas. Por exemplo, um aluno pode pedir ao chatbot para "Enviar e-mail ao meu instrutor dizendo que preciso de mais ajuda com este assunto". Isso pode fazer uma chamada de função para `send_email(to: string, body: string)`. - -- **Criando Consultas de API ou Banco de Dados**. Os usuários podem encontrar informações usando linguagem natural que é convertida em uma consulta ou solicitação de API formatada. Um exemplo disso pode ser um professor que solicita "Quais são os alunos que concluíram a última tarefa", o que poderia chamar uma função chamada `get_completed(student_name: string, assignment: int, current_status: string)`. - -- **Criando Dados Estruturados**. Os usuários podem pegar um bloco de texto ou CSV e usar o LLM para extrair informações importantes. Por exemplo, um aluno pode converter um artigo da Wikipedia sobre acordos de paz para criar cartões de memória de IA. Isso pode ser feito usando uma função chamada `get_important_facts(agreement_name: string, date_signed: string, parties_involved: list)`. - -## Criando Sua Primeira Chamada de Função - -O processo de criar uma chamada de função inclui 3 etapas principais: - -1. **Chamando** a API de Completions de Chat com uma lista de suas funções e uma mensagem do usuário. -2. **Lendo** a resposta do modelo para realizar uma ação, ou seja, executar uma função ou chamada de API. -3. **Fazendo** outra chamada para a API de Completions de Chat com a resposta de sua função para usar essas informações e criar uma resposta para o usuário. - -![Fluxo LLM](../../images/LLM-Flow.png?WT.mc_id=academic-105485-koreyst) - -### Etapa 1 - criando mensagens - -A primeira etapa é criar uma mensagem do usuário. Isso pode ser atribuído dinamicamente, pegando o valor de uma entrada de texto, ou você pode atribuir um valor aqui. Se esta é a sua primeira vez trabalhando com a API de Completions de Chat, precisamos definir o `role` e o `content` da mensagem. - -O `role` pode ser `system` (criando regras), `assistant` (o modelo) ou `user` (o usuário final). Para chamadas de função, vamos atribuir isso como `user` e uma pergunta de exemplo. - -```python -messages= [ {"role": "user", "content": "Find me a good course for a beginner student to learn Azure."} ] -``` - -Ao atribuir diferentes papéis, fica claro para o LLM se é o sistema dizendo algo ou o usuário, o que ajuda a criar um histórico de conversação no qual o LLM pode se basear. - -### Etapa 2 - criando funções - -Em seguida, definiremos uma função e os parâmetros dessa função. Usaremos apenas uma função aqui chamada `search_courses`, mas você pode criar várias funções. - -> **Importante**: As funções são incluídas na mensagem do sistema para o LLM e serão contadas na quantidade de tokens disponíveis. - -Abaixo, criamos as funções como uma matriz de itens. Cada item é uma função e tem propriedades `name`, `description` e `parameters`: - -```python -functions = [ - { - "name":"search_courses", - "description":"Retrieves courses from the search index based on the parameters provided", - "parameters":{ - "type":"object", - "properties":{ - "role":{ - "type":"string", - "description":"The role of the learner (i.e. developer, data scientist, student, etc.)" - }, - "product":{ - "type":"string", - "description":"The product that the lesson is covering (i.e. Azure, Power BI, etc.)" - }, - "level":{ - "type":"string", - "description":"The level of experience the learner has prior to taking the course (i.e. beginner, intermediate, advanced)" - } - }, - "required":[ - "role" - ] - } - } -] -``` - -Vamos descrever cada instância de função mais detalhadamente abaixo: - -- `name` - O nome da função que queremos que seja chamada. -- `description` - Esta é a descrição de como a função funciona. Aqui é importante ser específico e claro. -- `parameters` - Uma lista de valores e formatos que você deseja que o modelo produza em sua resposta. A matriz de parâmetros consiste em itens, onde cada item tem as seguintes propriedades: - 1. `type` - O tipo de dados no qual as propriedades serão armazenadas. - 1. `properties` - Lista dos valores específicos que o modelo usará para sua resposta - 1. `name` - A chave é o nome da propriedade que o modelo usará em sua resposta formatada, por exemplo, `product`. - 1. `type` - O tipo de dados desta propriedade, por exemplo, `string`. - 1. `description` - Descrição da propriedade específica. - -Há também uma propriedade opcional `required` - propriedade necessária para que a chamada da função seja concluída. - -### Etapa 3 - Fazendo a chamada da função - -Depois de definir uma função, agora precisamos incluí-la na chamada à API de Completção de Bate-papo. Fazemos isso adicionando `functions` à solicitação. Neste caso, `functions=functions`. - -Também há a opção de definir `function_call` como `auto`. Isso significa que vamos deixar o LLM decidir qual função deve ser chamada com base na mensagem do usuário, em vez de atribuirmos. - -Aqui está algum código abaixo onde chamamos `ChatCompletion.create`, observe como definimos `functions=functions` e `function_call="auto"`, dando assim ao LLM a escolha de quando chamar as funções que fornecemos: - -```python -response = openai.ChatCompletion.create( engine="gpt-function", - messages=messages, - functions=functions, - function_call="auto", ) - -print(response['choices'][0]['message']) -``` - -The response coming back now looks like so: - -```json -{ - "role": "assistant", - "function_call": { - "name": "search_courses", - "arguments": "{\n \"role\": \"student\",\n \"product\": \"Azure\",\n \"level\": \"beginner\"\n}" - } -} -``` - -Aqui nós podemos ver como a função `search_courses` foi chamada e com quais argumentos, conforme listado na propriedade `arguments` na resposta JSON. - -A conclusão de que o LLM foi capaz de encontrar os dados para se encaixar nos argumentos da função, pois estava extraindo-o do valor fornecido ao parâmetro `messages` na chamada de conclusão do chat. Abaixo está um lembrete do valor `messages`: - -```python -messages= [ {"role": "user", "content": "Find me a good course for a beginner student to learn Azure."} ] -``` - -Como você pode ver, `student`, `Azure` e `beginner` foram extraídos de `messages` e definidos como entrada para a função. Usar funções dessa maneira é uma ótima maneira de extrair informações de um prompt, mas também de fornecer estrutura ao LLM e ter funcionalidade reutilizável. - -Agora, precisamos ver como podemos usar isso em nosso aplicativo. - -## Integrando Chamadas de Função em um Aplicativo - -Após testarmos a resposta formatada do LLM, agora podemos integrá-la a um aplicativo. - -### Gerenciando o fluxo - -Para integrar isso ao nosso aplicativo, siga estas etapas: - -1. First, let's make the call to the Open AI services and store the message in a variable called `response_message`. - -1. Primeiro, vamos fazer a chamada aos serviços Open AI e armazenar a mensagem em uma variável chamada `response_message`. - - ```python - response_message = response["choices"][0]["message"] - ``` - -1. Agora vamos definir a função que chamará a API Microsoft Learn para obter uma lista de cursos: - - ```python - import requests - - def search_courses(role, product, level): - url = "https://learn.microsoft.com/api/catalog/" - params = { - "role": role, - "product": product, - "level": level - } - response = requests.get(url, params=params) - modules = response.json()["modules"] - results = [] - for module in modules[:5]: - title = module["title"] - url = module["url"] - results.append({"title": title, "url": url}) - return str(results) - ``` - - Observe como agora criamos uma função Python real que mapeia para os nomes de função introduzidos na variável `functions`. Também estamos fazendo chamadas reais de API externa para buscar os dados de que precisamos. Neste caso, vamos contra a API Microsoft Learn para pesquisar módulos de treinamento. - -Ok! Então criamos variáveis `functions` e uma função Python correspondente, como dizemos ao LLM como mapear essas duas coisas para que nossa função Python seja chamada? - -1. Para ver se precisamos chamar uma função Python, precisamos olhar para a resposta LLM e ver se `function_call` faz parte dela e chamar a função apontada. Veja como você pode fazer a verificação mencionada abaixo: - - ```python - # Check if the model wants to call a function - if response_message.get("function_call"): - print("Recommended Function call:") - print(response_message.get("function_call")) - print() - - # Call the function. - function_name = response_message["function_call"]["name"] - - available_functions = { - "search_courses": search_courses, - } - function_to_call = available_functions[function_name] - - function_args = json.loads(response_message["function_call"]["arguments"]) - function_response = function_to_call(**function_args) - - print("Output of function call:") - print(function_response) - print(type(function_response)) - - - # Add the assistant response and function response to the messages - messages.append( # adding assistant response to messages - { - "role": response_message["role"], - "function_call": { - "name": function_name, - "arguments": response_message["function_call"]["arguments"], - }, - "content": None - } - ) - messages.append( # adding function response to messages - { - "role": "function", - "name": function_name, - "content":function_response, - } - ) - ``` - - Essas três linhas garantem que extraímos o nome da função, os argumentos e fazemos a chamada: - - ```python - function_to_call = available_functions[function_name] - - function_args = json.loads(response_message["function_call"]["arguments"]) - function_response = function_to_call(**function_args) - ``` - - Acima está a saída da execução do nosso código: - - **Saída** - - ```Recommended Function call: - { - "name": "search_courses", - "arguments": "{\n \"role\": \"student\",\n \"product\": \"Azure\",\n \"level\": \"beginner\"\n}" - } - - Output of function call: - [{'title': 'Describe concepts of cryptography', 'url': 'https://learn.microsoft.com/training/modules/describe-concepts-of-cryptography/? - WT.mc_id=api_CatalogApi'}, {'title': 'Introduction to audio classification with TensorFlow', 'url': 'https://learn.microsoft.com/en- - us/training/modules/intro-audio-classification-tensorflow/?WT.mc_id=api_CatalogApi'}, {'title': 'Design a Performant Data Model in Azure SQL - Database with Azure Data Studio', 'url': 'https://learn.microsoft.com/training/modules/design-a-data-model-with-ads/? - WT.mc_id=api_CatalogApi'}, {'title': 'Getting started with the Microsoft Cloud Adoption Framework for Azure', 'url': - 'https://learn.microsoft.com/training/modules/cloud-adoption-framework-getting-started/?WT.mc_id=api_CatalogApi'}, {'title': 'Set up the - Rust development environment', 'url': 'https://learn.microsoft.com/training/modules/rust-set-up-environment/?WT.mc_id=api_CatalogApi'}] - - ``` - -1. Agora enviaremos a mensagem atualizada, `messages` para o LLM para que possamos receber uma resposta em linguagem natural em vez de uma resposta formatada em JSON da API. - - ```python - print("Messages in next request:") - print(messages) - print() - - second_response = openai.ChatCompletion.create( - messages=messages, - engine="gpt-function", - function_call="auto", - functions=functions, - temperature=0 - ) # get a new response from GPT where it can see the function response - - - print(second_response["choices"][0]["message"]) - ``` - - **Saída** - - ```python - { - "role": "assistant", - "content": "I found some good courses for beginner students to learn Azure:\n\n1. [Describe concepts of cryptography] (https://learn.microsoft.com/training/modules/describe-concepts-of-cryptography/?WT.mc_id=api_CatalogApi)\n2. [Introduction to audio classification with TensorFlow](https://learn.microsoft.com/training/modules/intro-audio-classification-tensorflow/?WT.mc_id=api_CatalogApi)\n3. [Design a Performant Data Model in Azure SQL Database with Azure Data Studio](https://learn.microsoft.com/training/modules/design-a-data-model-with-ads/?WT.mc_id=api_CatalogApi)\n4. [Getting started with the Microsoft Cloud Adoption Framework for Azure](https://learn.microsoft.com/training/modules/cloud-adoption-framework-getting-started/?WT.mc_id=api_CatalogApi)\n5. [Set up the Rust development environment](https://learn.microsoft.com/training/modules/rust-set-up-environment/?WT.mc_id=api_CatalogApi)\n\nYou can click on the links to access the courses." - } - - ``` - -## Tarefa - -Para continuar seu aprendizado sobre a Chamada de Função do Azure Open AI, você pode: - -- Adicionar mais parâmetros à função que podem ajudar os aprendizes a encontrar mais cursos. -- Criar outra chamada de função que obtenha mais informações do aprendiz, como o idioma nativo. -- Implementar tratamento de erro quando a chamada de função e/ou a chamada da API não retornar cursos adequados. - -Dica: Consulte a [documentação de referência da API Learn](https://learn.microsoft.com/training/support/catalog-api-developer-reference?WT.mc_id=academic-105485-koreyst) para ver como e onde esses dados estão disponíveis. - -## Ótimo trabalho! Continue a jornada - -Após completar esta lição, confira nossa [coleção de aprendizado sobre IA Generativa](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) para continuar a aprimorar seus conhecimentos em IA Generativa! - -Vá para a Lição 12, onde veremos como [Projetando UX para aplicativos de IA](../../../12-designing-ux-for-ai-applications/translations/pt-br/README.md?WT.mc_id=academic-105485-koreyst)! diff --git a/11-integrating-with-function-calling/translations/tw/README.md b/11-integrating-with-function-calling/translations/tw/README.md deleted file mode 100644 index a15beeb58a..0000000000 --- a/11-integrating-with-function-calling/translations/tw/README.md +++ /dev/null @@ -1,453 +0,0 @@ -# 與函式呼叫整合 - -[![與函式呼叫整合](../../images/11-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson11-gh?WT.mc_id=academic-105485-koreyst) - -你在前面的課程中已經學到了不少。然而,我們還可以進一步改進。我們可以解決的一些問題是如何獲得更一致的回應格式,以便更容易處理後續的回應。此外,我們可能想要添加來自其他來源的數據,以進一步豐富我們的應用程式。 - -上述提到的問題是本章要解決的。 - -## 簡介 - -本課程將涵蓋: - -- 解釋什麼是函式呼叫及其使用案例。 -- 使用 Azure OpenAI 建立函式呼叫。 -- 如何將函式呼叫整合到應用程式中。 - -## 學習目標 - -完成此課程後,您將能夠: - -- 解釋使用函式呼叫的目的。 -- 使用 Azure OpenAI Service 設定函式呼叫。 -- 為您的應用程式設計有效的函式呼叫用例。 - -## 情境: 使用函式改進我們的聊天機器人 - -這節課中,我們想為我們的教育創業公司建構一個功能,允許用戶使用聊天機器人來查找技術課程。我們將推薦適合他們技能水平、當前角色和感興趣技術的課程。 - -要完成此情境,我們將使用以下組合: - -- `Azure OpenAI` 用來建立使用者的聊天體驗。 -- `Microsoft Learn Catalog API` 幫助使用者根據請求找到課程。 -- `Function Calling` 接收使用者的查詢並將其發送到函式以進行 API 請求。 - -要開始,我們先來看看為什麼我們一開始會想要使用函式呼叫: - -## 為什麼要呼叫函式 - -在呼叫函式之前,來自 LLM 的回應是非結構化且不一致的。開發者需要撰寫複雜的驗證程式碼,以確保他們能夠處理每個回應的變化。使用者無法得到像 "斯德哥爾摩目前的天氣如何?" 這樣的答案。這是因為模型僅限於訓練數據的時間。 - -函式呼叫是 Azure OpenAI 服務的一項功能,用於克服以下限制: - -- **一致的回應格式**. 如果我們能更好地控制回應格式,我們可以更容易地將回應整合到其他系統中。 -- **外部資料**. 能夠在聊天情境中使用應用程式其他來源的資料。 - -## 通過情境說明問題 - -> 我們建議你使用[內建筆記本](../../python/aoai-assignment.ipynb?WT.mc_id=academic-105485-koreyst)如果你想要執行以下場景。你也可以只是閱讀,因為我們正在嘗試說明一個函式可以幫助解決的問題。 - -讓我們看看說明回應格式問題的範例: - -假設我們想要建立一個學生資料的資料庫,以便我們可以向他們推薦合適的課程。以下是兩個學生的描述,它們所包含的資料非常相似。 - -1. 建立與我們的 Azure OpenAI 資源的連接: - - ```python - import os - import json - from openai import AzureOpenAI - from dotenv import load_dotenv - load_dotenv() - - client = AzureOpenAI( - api_key=os.environ['AZURE_OPENAI_API_KEY'], # 這也是預設值,可以省略 - api_version = "2023-07-01-preview" - ) - - deployment=os.environ['AZURE_OPENAI_DEPLOYMENT'] - ``` - - 下面是一些 Python 程式碼,用於配置我們與 Azure OpenAI 的連接,我們設置了 `api_type`、`api_base`、`api_version` 和 `api_key`。 - -1. 使用變數 `student_1_description` 和 `student_2_description` 建立兩個學生描述。 - - ```python - student_1_description="Emily Johnson 是杜克大學計算機科學專業的二年級學生。她的 GPA 為 3.7。Emily 是大學國際象棋俱樂部和辯論隊的活躍成員。她希望畢業後從事軟體工程師的職業。" - - student_2_description = "Michael Lee 是史丹佛大學計算機科學專業的二年級學生。他的 GPA 為 3.8。Michael 以他的編程技能聞名,是大學機器人俱樂部的活躍成員。他希望在完成學業後從事人工智慧領域的職業。" - ``` - - 我們希望將上述學生描述發送到 LLM 以解析數據。這些數據可以在我們的應用中使用,並發送到 API 或存儲在資料庫中。 - -1. 讓我們建立兩個相同的提示,其中我們指示 LLM 我們感興趣的資訊: - - ```python - prompt1 = f''' - 請從給定的文本中提取以下資訊並以 JSON 物件返回: - - name - major - school - grades - club - - 這是要從中提取資訊的文本正文: - {student_1_description} - ''' - - prompt2 = f''' - 請從給定的文本中提取以下資訊並以 JSON 物件返回: - - name - major - school - grades - club - - 這是要從中提取資訊的文本正文: - {student_2_description} - ''' - ``` - - 上述提示指示 LLM 提取資訊並以 JSON 格式返回響應。 - -1. 在設定提示和連接到 Azure OpenAI 之後,我們現在將使用 `openai.ChatCompletion` 將提示發送給 LLM。我們將提示存儲在 `messages` 變數中,並將角色分配給 `user`。這是為了模擬用戶向聊天機器人寫消息。 - - ```python - # 提示一的回應 - openai_response1 = client.chat.completions.create( - model=deployment, - messages = [{'role': 'user', 'content': prompt1}] - ) - openai_response1.choices[0].message.content - - # 提示二的回應 - openai_response2 = client.chat.completions.create( - model=deployment, - messages = [{'role': 'user', 'content': prompt2}] - ) - openai_response2.choices[0].message.content - ``` - -現在我們可以將兩個請求都發送到 LLM,並通過找到它來檢查我們收到的回應,如此 `openai_response1['choices'][0]['message']['content']`。 - -1. Lastly, we can convert the response to JSON format by calling `json.loads`: - - ```python - # Loading the response as a JSON object - json_response1 = json.loads(openai_response1.choices[0].message.content) - json_response1 - ``` - - Response 1: - - ```json - { - "name": "Emily Johnson", - "major": "computer science", - "school": "Duke University", - "grades": "3.7", - "club": "Chess Club" - } - ``` - - Response 2: - - ```json - { - "name": "Michael Lee", - "major": "computer science", - "school": "Stanford University", - "grades": "3.8 GPA", - "club": "Robotics Club" - } - ``` - - Even though the prompts are the same and the descriptions are similar, we see values of the `Grades` property formatted differently as we can sometimes get the format `3.7` or `3.7 GPA` for example. - - This result is because the LLM takes unstructured data in the form of the written prompt and returns also unstructured data. We need to have a structured format so that we know what to expect when storing or using this data - -那麼我們如何解決格式問題呢?通過使用函式呼叫,我們可以確保收到結構化的資料。當使用函式呼叫時,LLM 實際上並不會呼叫或執行任何函式。相反,我們為 LLM 建立一個結構來遵循其回應。然後我們使用這些結構化的回應來知道在我們的應用程式中要執行什麼函式。 - -![函式流程](../../images/Function-Flow.png?WT.mc_id=academic-105485-koreyst) - -我們可以將從函式返回的內容傳送回 LLM。然後 LLM 將使用自然語言回應來回答使用者的查詢。 - -## 使用函式呼叫的用例 - -在許多不同的使用案例中,函式呼叫可以改善您的應用程式,例如: - -- **呼叫外部工具**。聊天機器人非常擅長回答用戶的問題。通過使用函式呼叫,聊天機器人可以使用用戶的消息來完成某些任務。例如,一個學生可以要求聊天機器人「發送電子郵件給我的導師,說我需要更多的幫助」。這可以通過呼叫 `send_email(to: string, body: string)` 函式來實現。 - -- **建立 API 或資料庫查詢**。用戶可以使用自然語言查找資訊,這些自然語言會轉換成格式化的查詢或 API 請求。這方面的一個範例可能是一位老師請求「誰是完成了最後一個作業的學生」,這可以呼叫一個名為 `get_completed(student_name: string, assignment: int, current_status: string)` 的函式。 - -- **建立結構化資料**。用戶可以使用 LLM 從一段文字或 CSV 中提取重要資訊。例如,一個學生可以將一篇關於和平協議的維基百科文章轉換成 AI 閃卡。這可以通過使用一個名為 `get_important_facts(agreement_name: string, date_signed: string, parties_involved: list)` 的函式來完成。 - -## 建立您的第一個函式呼叫 - -建立函式呼叫的過程包括三個主要步驟: - -1. **呼叫** Chat Completions API 並附上你的函式列表和使用者訊息。 -2. **閱讀**模型的回應以執行動作,即執行函式或 API 呼叫。 -3. **再次呼叫** Chat Completions API 並使用你的函式回應中的資訊來建立對使用者的回應。 - -![LLM Flow](../../images/LLM-Flow.png?WT.mc_id=academic-105485-koreyst) - -### Step 1 - 建立訊息 - -第一步是建立使用者訊息。這可以透過取得文字輸入的值來動態分配,或者你可以在這裡分配一個值。如果這是你第一次使用 Chat Completions API,我們需要定義訊息的`role`和`content`。 - -`role` 可以是 `system` (建立規則), `assistant` (模型) 或 `user` (最終使用者)。對於函式呼叫, 我們將其指定為 `user` 和一個範例問題。 - -```python -messages= [ {"role": "user", "content": "幫我找一個適合初學者學習 Azure 的好課程。"} ] -``` - -通過分配不同的角色,可以明確地讓LLM知道是系統在說話還是用戶在說話,這有助於建立LLM可以基於此進行建構的對話歷史。 - -### 步驟 2 - 建立函式 - -接下來,我們將定義一個函式和該函式的參數。我們將只使用一個名為 `search_courses` 的函式,但你可以建立多個函式。 - -> **重要** : 函式包含在系統訊息中給 LLM,並將包含在您可用的 token 數量中。 - -以下,我們將函式建立為一個項目陣列。每個項目都是一個函式,並具有屬性 `name`、`description` 和 `parameters`: - -```python -函式 = [ - { - "name":"search_courses", - "description":"根據提供的參數從搜尋索引中檢索課程", - "parameters":{ - "type":"物件", - "properties":{ - "role":{ - "type":"string", - "description":"學習者的角色 (例如: 開發者、數據科學家、學生等)" - }, - "product":{ - "type":"string", - "description":"課程涵蓋的產品 (例如: Azure、Power BI 等)" - }, - "level":{ - "type":"string", - "description":"學習者在參加課程前的經驗水平 (例如: 初學者、中級、高級)" - } - }, - "required":[ - "role" - ] - } - } -] -``` - -讓我們更詳細地描述每個函式實例: - -- `name` - 我們希望呼叫的函式名稱。 -- `description` - 這是函式如何運作的描述。這裡重要的是要具體和清晰。 -- `parameters` - 你希望模型在其回應中產生的值和格式的列表。參數陣列由項目組成,其中項目具有以下屬性: - 1. `type` - 屬性將存儲的資料類型。 - 1. `properties` - 模型將用於其回應的具體值列表 - 1. `name` - 鍵是模型在其格式化回應中使用的屬性名稱,例如, `product`。 - 1. `type` - 此屬性的資料類型,例如, `string`。 - 1. `description` - 具體屬性的描述。 - -還有一個可選屬性 `required` - 函式呼叫完成所需的必要屬性。 - -### 步驟 3 - 進行函式呼叫 - -在定義了一個函式之後,我們現在需要將它包含在呼叫 Chat Completion API 中。我們通過在請求中添加 `functions` 來完成這個操作。在這種情況下 `functions=functions`。 - -還有一個選項可以將 `function_call` 設定為 `auto`。這意味著我們將讓 LLM 根據使用者訊息決定應該呼叫哪個函式,而不是由我們自己分配。 - -以下是一些程式碼,我們呼叫 `ChatCompletion.create`,注意我們如何設定 `functions=functions` 和 `function_call="auto"`,從而讓 LLM 自行選擇何時呼叫我們提供的函式: - -```python -response = client.chat.completions.create(model=deployment, - messages=messages, - functions=函式, - function_call="auto") - -print(response.choices[0].message) -``` - -回應現在看起來是這樣的: - -```json -{ - "角色": "助手", - "函式呼叫": { - "名稱": "search_courses", - "參數": "{\n \"角色\": \"學生\",\n \"產品\": \"Azure\",\n \"等級\": \"初學者\"\n}" - } -} -``` - -在這裡我們可以看到函式 `search_courses` 是如何被呼叫的,以及在 JSON 回應中的 `arguments` 屬性中列出的參數。 - -結論是 LLM 能夠找到數據來適應函式的參數,因為它是從提供給聊天完成呼叫的 `messages` 參數中的值中提取的。以下是 `messages` 值的提醒: - -```python -messages= [ {"role": "user", "content": "幫我找一個適合初學者學習 Azure 的好課程。"} ] -``` - -如你所見,`student`、`Azure` 和 `beginner` 從 `messages` 中提取並設置為函式的輸入。這樣使用函式是一個從提示中提取資訊的好方法,同時也為 LLM 提供結構並具有可重用的功能。 - -接下來,我們需要看看如何在我們的應用程式中使用這個。 - -## 將函式呼叫整合到應用程式中 - -在我們測試過來自 LLM 的格式化回應後,現在我們可以將其整合到應用程式中。 - -### 管理流程 - -要將這個整合到我們的應用程式中,讓我們採取以下步驟: - -1. 首先,讓我們呼叫 Open AI 服務並將訊息儲存在一個名為 `response_message` 的變數中。 - - ```python - response_message = response.choices[0].message - ``` - -1. 現在我們將定義一個函式來呼叫 Microsoft Learn API 以獲取課程列表: - - ```python - import requests - - def search_courses(role, product, level): - url = "https://learn.microsoft.com/api/catalog/" - params = { - "role": role, - "product": product, - "level": level - } - response = requests.get(url, params=params) - modules = response.json()["modules"] - results = [] - for module in modules[:5]: - title = module["title"] - url = module["url"] - results.append({"title": title, "url": url}) - return str(results) - ``` - - 注意我們現在如何建立一個實際的 Python 函式,並將其對應到 `functions` 變數中引入的函式名稱。我們還進行了真正的外部 API 呼叫來獲取所需的資料。在這個例子中,我們使用 Microsoft Learn API 來搜尋訓練模組。 - -好的,所以我們建立了 `函式` 變數和相應的 Python 函式,我們如何告訴 LLM 如何將這兩者映射在一起,以便呼叫我們的 Python 函式? - -1. 要查看我們是否需要呼叫一個 Python 函式,我們需要查看 LLM 的回應,看看 `function_call` 是否是其中的一部分並呼叫指出的函式。以下是您可以進行檢查的方式: - - ```python - # 檢查模型是否想要呼叫函式 - if response_message.function_call.name: - print("推薦的函式呼叫:") - print(response_message.function_call.name) - print() - - # 呼叫函式。 - function_name = response_message.function_call.name - - available_functions = { - "search_courses": search_courses, - } - function_to_call = available_functions[function_name] - - function_args = json.loads(response_message.function_call.arguments) - function_response = function_to_call(**function_args) - - print("函式呼叫的輸出:") - print(function_response) - print(type(function_response)) - - - # 將助手回應和函式回應添加到訊息中 - messages.append( # 將助手回應添加到訊息中 - { - "role": response_message.role, - "function_call": { - "name": function_name, - "arguments": response_message.function_call.arguments, - }, - "content": None - } - ) - messages.append( # 將函式回應添加到訊息中 - { - "role": "function", - "name": function_name, - "content":function_response, - } - ) - ``` - - 這三行確保我們提取函式名稱、參數並進行呼叫: - - ```python - function_to_call = available_functions[function_name] - - function_args = json.loads(response_message.function_call.arguments) - function_response = function_to_call(**function_args) - ``` - - 以下是執行我們程式碼的輸出: - - **輸出** - - ```推薦的函式呼叫: - { - "name": "search_courses", - "arguments": "{\n \"role\": \"student\",\n \"product\": \"Azure\",\n \"level\": \"beginner\"\n}" - } - - 函式呼叫的輸出: - [{'title': 'Describe concepts of cryptography', 'url': 'https://learn.microsoft.com/training/modules/describe-concepts-of-cryptography/?WT.mc_id=api_CatalogApi'}, {'title': 'Introduction to audio classification with TensorFlow', 'url': 'https://learn.microsoft.com/en-us/training/modules/intro-audio-classification-tensorflow/?WT.mc_id=api_CatalogApi'}, {'title': 'Design a Performant Data Model in Azure SQL Database with Azure Data Studio', 'url': 'https://learn.microsoft.com/training/modules/design-a-data-model-with-ads/?WT.mc_id=api_CatalogApi'}, {'title': 'Getting started with the Microsoft Cloud Adoption Framework for Azure', 'url': 'https://learn.microsoft.com/training/modules/cloud-adoption-framework-getting-started/?WT.mc_id=api_CatalogApi'}, {'title': 'Set up the Rust development environment', 'url': 'https://learn.microsoft.com/training/modules/rust-set-up-environment/?WT.mc_id=api_CatalogApi'}] - - ``` - -1. 現在我們將更新的訊息 `messages` 發送給 LLM,以便我們可以收到自然語言回應,而不是 API JSON 格式的回應。 - - ```python - print("下一個請求中的訊息:") - print(messages) - print() - - second_response = client.chat.completions.create( - messages=messages, - model=deployment, - function_call="auto", - functions=functions, - temperature=0 - ) # 從 GPT 獲取新的回應,它可以看到函式回應 - - - print(second_response.choices[0].message) - ``` - - **輸出** - - ```python - { - "role": "assistant", - "content": "我找到了一些適合初學者學習 Azure 的好課程:\n\n1. [Describe concepts of cryptography](https://learn.microsoft.com/training/modules/describe-concepts-of-cryptography/?WT.mc_id=api_CatalogApi)\n2. [Introduction to audio classification with TensorFlow](https://learn.microsoft.com/training/modules/intro-audio-classification-tensorflow/?WT.mc_id=api_CatalogApi)\n3. [Design a Performant Data Model in Azure SQL Database with Azure Data Studio](https://learn.microsoft.com/training/modules/design-a-data-model-with-ads/?WT.mc_id=api_CatalogApi)\n4. [Getting started with the Microsoft Cloud Adoption Framework for Azure](https://learn.microsoft.com/training/modules/cloud-adoption-framework-getting-started/?WT.mc_id=api_CatalogApi)\n5. [Set up the Rust development environment](https://learn.microsoft.com/training/modules/rust-set-up-environment/?WT.mc_id=api_CatalogApi)\n\n你可以點擊連結來訪問這些課程。" - } - - ``` - -## 作業 - -為了繼續學習 Azure OpenAI 函式呼叫,你可以建構: - -- 更多函式的參數可能幫助學習者找到更多課程。 -- 建立另一個函式呼叫,從學習者那裡獲取更多資訊,例如他們的母語 -- 當函式呼叫和/或 API 呼叫未返回任何合適的課程時,建立錯誤處理 - -提示: 請參考[Learn API 參考文件](https://learn.microsoft.com/training/support/catalog-api-developer-reference?WT.mc_id=academic-105485-koreyst)頁面,了解這些資料的可用方式和位置。 - -## 很棒的工作!繼續這段旅程 - -完成本課程後,請查看我們的[生成式 AI 學習集合](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst)以繼續提升您的生成式 AI 知識! - -前往第12課,我們將探討如何[為 AI 應用設計 UX](../../../12-designing-ux-for-ai-applications/translations/tw/README.md?WT.mc_id=academic-105485-koreyst)! - diff --git a/12-designing-ux-for-ai-applications/translations/cn/README.md b/12-designing-ux-for-ai-applications/translations/cn/README.md deleted file mode 100644 index 5ad8cddcb7..0000000000 --- a/12-designing-ux-for-ai-applications/translations/cn/README.md +++ /dev/null @@ -1,118 +0,0 @@ -# 第十二章:为人工智能应用程序添加用户体验 - -[![Designing UX for AI Applications](../../images/12-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson12-gh?WT.mc_id=academic-105485-koreyst) - -_(点击该图片看本章导学视频)_ - -用户体验是构建应用程序的一个非常重要的方面。 用户需要能够有效地使用您的应用程序来执行任务。 高效是一回事,但您还需要设计应用程序,以便每个人都可以使用它们,使它们“易于访问”。 本章将重点讨论这一领域,希望最终设计出一个人们可以并且想要使用的应用程序。 - -## 本章概述 - -用户体验是指用户如何与特定产品或服务(无论是系统、工具还是设计)进行交互和使用。 在开发人工智能应用程序时,开发人员不仅注重确保用户体验有效,而且注重道德。 在本课程中,我们将介绍如何构建满足用户需求的人工智能 (AI) 应用程序。 - -本课程将包含以下内容: - -- 用户体验简介和了解用户需求 -- 设计人工智能应用程序以实现信任和透明度 -- 设计用于协作和反馈的人工智能应用程序 - -## 学习目标 - -学习完本课程后,您将会了解到: - -- 了解如何构建满足用户需求的人工智能应用程序。 -- 设计促进信任和协作的人工智能应用程序。 - -### 先决条件 - -花一些时间阅读有关[用户体验和设计思维](https://learn.microsoft.com/training/modules/ux-design?WT.mc_id=academic-105485-koreyst)的更多信息。 - -## 用户体验简介和了解用户需求 - -在我们虚构的教育初创公司中,我们有两个主要用户:教师和学生。 这两个用户都有独特的需求。 以用户为中心的设计优先考虑用户,确保产品与其预期目标相关且有益。 - -该应用程序应该 **有用、可靠、易于访问且令人愉悦** ,以提供良好的用户体验。 - -### 可用性 - -可用意味着应用程序具有与其预期目的相匹配的功能,例如自动化评分过程或生成用于复习的卡片。 自动评分过程的应用程序应该能够根据预定义的标准准确有效地为学生的作业分配分数。 同样,生成卡片的应用程序应该能够根据其数据创建相关且多样化的问题。 - -### 可靠性 - -可靠意味着应用程序可以一致且无错误地执行其任务。 然而,人工智能就像人类一样并不完美,并且可能容易出错。 应用程序可能会遇到错误或意外情况,需要人工干预或纠正。 你如何处理错误? 在本章的最后一部分,我们将介绍如何设计人工智能系统和应用程序以实现协作和反馈。 - -### 无障碍性 - -无障碍意味着将用户体验扩展到具有各种能力的用户,包括残疾人,确保没有人被排除在外。 通过遵循可访问性指南和原则,人工智能解决方案变得更具包容性、可用性,并且对所有用户都有利。 - -### 满意性 - -令人满意意味着该应用程序使用起来令人愉快。 有吸引力的用户体验可以对用户产生积极影响,鼓励他们返回应用程序并增加业务收入。 - -![图片说明人工智能中的用户体验考虑因素](../../images/uxinai.png?WT.mc_id=academic-105485-koreyst) - -并非所有挑战都可以通过人工智能解决。 人工智能可以增强您的用户体验,无论是自动化手动任务还是个性化用户体验。 - -## 设计人工智能应用程序以实现信任和透明 - -设计人工智能应用程序时,建立信任至关重要。 信任可确保用户确信应用程序能够完成工作、一致地交付结果并且结果是用户所需要的。 该领域的一个风险是不信任和过度信任。 当用户对人工智能系统怀疑时,就会出现不信任,这会导致用户拒绝您的应用程序。 当用户高估人工智能系统的能力,导致用户过于信任人工智能系统时,就会出现过度信任。 例如,自动评分系统在过度信任的情况下可能会导致老师不通过某些试卷进行校对以确保评分系统运作良好。 这可能会导致学生的成绩不公平或不准确,或者错过反馈和改进的机会。 - -确保将信任置于设计中心的两种方法是可解释性和可控性。 - -### 可解释性 - -当人工智能帮助做出决策(例如向后代传授知识)时,教师和家长了解人工智能决策是如何做出的至关重要。 这就是可解释性——理解人工智能应用程序如何做出决策。 可解释性设计包括添加人工智能应用程序可以做什么的示例的详细信息。 例如,系统可以使用:“使用 AI 总结笔记以便更轻松地复习”,而不是“开始使用 AI 教师”。 - -![一个应用程序登陆页面,清楚地说明人工智能应用程序中的可解释性](../../images/explanability-in-ai.png?WT.mc_id=academic-105485-koreyst) - -另一个例子是人工智能如何使用用户和个人数据。 例如,具有学生角色的用户可能具有基于其角色的限制。 人工智能可能无法揭示问题的答案,但可以帮助引导用户思考如何解决问题。 - -![AI根据角色回答问题](../../images/solving-questions.png?WT.mc_id=academic-105485-koreyst) - -可解释性的最后一个关键部分是解释的简化。 学生和教师可能不是人工智能专家,因此对应用程序可以做什么或不能做什么的解释应该简化且易于理解。 - -![AI能力的简单说明](../../images/simplified-explanations.png?WT.mc_id=academic-105485-koreyst) - -### 控制 - -生成式人工智能在人工智能和用户之间创建协作,例如用户可以修改不同结果的提示。 此外,一旦生成输出,用户应该能够修改结果,从而给他们一种控制感。 例如,使用 Bing 时,您可以根据格式、语气和长度定制提示。 此外,您可以对输出添加更改并修改输出,如下所示: - -![带有修改提示和输出选项的 Bing 搜索结果](../../images/bing1.png?WT.mc_id=academic-105485-koreyst "带有修改提示和输出选项的 Bing 搜索结果") - -Bing 中允许用户控制应用程序的另一个功能是能够选择加入和退出 AI 使用的数据。 对于学校申请,学生可能希望使用他们的笔记以及教师的资源作为复习材料。 - -![带有修改提示和输出选项的 Bing 搜索结果](../../images/bing2.png?WT.mc_id=academic-105485-koreyst "带有修改提示和输出选项的 Bing 搜索结果") - -> 在设计人工智能应用程序时,意向性是确保用户不会过度信任对其功能设定不切实际的期望的关键。 做到这一点的一种方法是在提示和结果之间制造摩擦。 提醒用户这是人工智能而不是人类 - -## 设计用于协作和反馈的 AI 应用程序 - -正如前面提到的,生成式人工智能在用户和人工智能之间建立了协作。 大多数交互都是由用户输入提示,然后人工智能生成输出。 如果输出不正确怎么办? 如果发生错误,应用程序如何处理? 人工智能会责怪用户还是需要时间来解释错误? - -应内置人工智能应用程序来接收和提供反馈。 这不仅有助于人工智能系统的改进,还可以与用户建立信任。 设计中应包含反馈回路,例如对输出的简单赞成或反对。 - -处理此问题的另一种方法是清楚地传达系统的功能和限制。 当用户请求超出 AI 能力的内容时出错时,还应该有一种方法来处理此问题,如下所示。 - -![提供反馈和处理错误](../../images/feedback-loops.png?WT.mc_id=academic-105485-koreyst) - -系统错误在用户可能需要人工智能范围之外的信息帮助或者应用程序可能限制用户可以生成摘要的问题/主题的应用程序中很常见。 例如,使用有限科目(例如历史和数学)的数据训练的人工智能应用程序可能无法处理有关地理的问题。 为了缓解这种情况,人工智能系统可以给出这样的响应:“抱歉,我们的产品已经接受了以下主题的数据训练......,我无法回答您提出的问题。” - -人工智能应用并不完美,因此,它们难免会犯错误。 在设计应用程序时,您应该确保以简单且易于解释的方式为用户反馈和错误处理留出空间。 - -## 作业 - -对于您迄今为止构建的任何 AI 应用程序,请考虑在您的应用程序中实施以下步骤: - -- **满意度:** 考虑如何使您的应用程序更加令人愉快。 您是否到处添加解释,是否鼓励用户探索? 您如何措辞错误消息? - -- **可用性:** 构建网络应用程序。 确保您的应用程序可以通过鼠标和键盘进行导航。 - -- **信任和透明度:** 不要完全信任人工智能及其输出,考虑如何在流程中添加人员来验证输出。 此外,考虑并实施其他方法来实现信任和透明度。 - -- **可控:** 赋予用户对其提供给应用程序的数据的控制权。 实现用户可以选择加入和退出 AI 应用程序中的数据收集的方式。 - -## 恭喜您完成本课程 - -想要了解更多有关为人工智能应用程序设计用户体验的信息吗? 转至[继进阶学习的页面续学习页面](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) 查找有关此主题的其他重要资源。 - -恭喜,您已完成本课程! 你不应该学完即止。 希望您受到启发,开始创建自己的生成式人工智能初创公司。 前往 [Microsoft Founders Hub](https://aka.ms/genai-Foundershub?WT.mc_id=academic-105485-koreyst) 并申请该计划以并获得支持。 diff --git a/12-designing-ux-for-ai-applications/translations/ja-jp/README.md b/12-designing-ux-for-ai-applications/translations/ja-jp/README.md deleted file mode 100644 index 7c3f3ebe5a..0000000000 --- a/12-designing-ux-for-ai-applications/translations/ja-jp/README.md +++ /dev/null @@ -1,122 +0,0 @@ -# AI アプリケーションの UX 設計 - -[![Designing UX for AI Applications](../../images/12-lesson-banner.png?WT.mc_id=academic-105485-yoterada)](https://aka.ms/gen-ai-lesson12-gh?WT.mc_id=academic-105485-koreyst) - -> _(上の画像をクリックすると、このレッスンのビデオが表示されます)_ - -アプリを構築する際、ユーザー・エクスペリエンスは非常に重要な要素です。利用者は、タスクを効率的に実行できるようにアプリを使用する必要があります。効率性は一つの要素ですが、全ての人が使用でき、アクセスできるようにアプリを設計するのも重要です。この章では、この領域に焦点を当て、すべての利用者が使用でき、使いたくなるアプリの設計を目指します。 - -## はじめに - -ユーザー・エクスペリエンスは、システム、ツール、デザインなどの特定の製品やサービスと、利用者がどのように対話し、操作するかを指す用語です。AI アプリケーションを開発する際、開発者はユーザー・エクスペリエンスが効果的であるだけでなく、倫理的な点にも重点を置きます。このレッスンでは、利用者のニーズに対応する人工知能(AI)アプリケーションの構築方法について説明します。 - -このレッスンでは、下記の内容について説明します。 - -- ユーザー・エクスペリエンスの概要と利用者のニーズの理解 -- 信頼性と透明性のある AI アプリケーションの設計 -- コラボレーションとフィードバックを求める AI アプリケーションの設計 - -## 学習目標 - -このレッスンを修了すると、下記を理解できます: - -- 利用者のニーズを満たす AI アプリケーションを構築する方法を理解します。 -- 信頼性とコラボレーションを促進する AI アプリケーションを設計します。 - -### 前提 - -少し時間を取ってこちらの、[MS Laern: ユーザーエクスペリエンスとデザイン思考の基礎](https://learn.microsoft.com/training/modules/ux-design?WT.mc_id=academic-105485-yoterada)について学んでみましょう。 - -## ユーザー・エクスペリエンスの概要と利用者ニーズの理解 - -架空の教育スタートアップでは、教師と生徒の 2 つの主要な利用者がいます。2 つの利用者には、それぞれ固有のニーズがあります。利用者中心設計は、利用者のニーズを最優先に考え、製品が対象とする利用者にとって関連性があり、有益かどうかを確認します。 - -アプリケーションは、優れたユーザー・エクスペリエンスを提供するために、「**有用で信頼性が高く、アクセスしやすく、快適**」な必要があります。 - -### ユーザビリティ - -アプリケーションが目的に一致する機能を持っている場合、それは利用者にとって有用です。例えば、採点プロセスを自動化したり、復習用のフラッシュカードを生成したりするなどです。採点を自動化するアプリケーションは、事前に設定した基準に基づいて、学生の作業に対して正確かつ効率的に点数を付ける必要があります。同様に、復習用のフラッシュカードを生成するアプリケーションは、データに基づいて関連性のある多様な質問を作成できなければなりません。 - -### 信頼性 - -信頼性が高いとは、アプリケーションが一貫してエラーなくタスクを実行できる状況をさします。しかし、AI も人間と同じく完全ではなく、エラーが起こる可能性があります。アプリケーションは、人間の介入や修正が必要なエラーや、予期せぬ状況に遭遇する場合もあります。では、エラーはどのように取り扱うべきでしょうか?このレッスンの最後のセクションでは、AI システムとアプリケーションが、どのようにして協力やフィードバックを設計に取り入れているかについて説明します。 - -### アクセシビリティ - -アクセシブルは、障害を持つ利用者を含む、様々な能力を持つ利用者全てに対して、ユーザー・エクスペリエンスを提供し、誰もが取り残されないようなシステムを作ります。アクセシビリティのガイドラインと原則に従うと、AI ソリューションは全ての利用者にとってより包括的で、使いやすく、有益なものになります。 - -### 快適 - -快適とは、アプリケーションを利用するのが楽しい状況をさします。魅力的なユーザー・エクスペリエンスは、利用者に好印象を与え、アプリケーションの再利用を促し、ビジネスの収益を増加させます。 - -![image illustrating UX considerations in AI](../../images/uxinai.png?WT.mc_id=academic-105485-yoterada) - -全ての問題を AI で解決できるわけではありません。AI は、手動の作業を自動化したり、利用者体験をパーソナライズし、利用者体験を向上させる役割を果たします。 - -## 信頼性と透明性のための AI アプリケーションの設計 - -AI アプリケーションを設計する際には、利用者との信頼関係の構築が重要です。信頼があると、利用者はアプリケーションがタスクを遂行し、一貫した結果を提供し、その結果が自分のニーズに合致すると確信できます。この分野でのリスクは、不信と過信です。不信感は、利用者が AI システムをほとんど信頼していない、または全く信頼していない場合に生じ、結果として利用者がアプリケーションの利用を拒否するのにつながります。一方、過信は、利用者が AI システムの能力を過大評価し、AI システムを過度に信頼する状況を指します。例えば、過信があると、自動採点システムを使う教師は、採点システムが適切に機能しているか確認するために、一部の試験を見直さない可能性があります。これにより、学生に対する不公平な評価や誤った評価が生じる可能性があるため、フィードバックや改善の機会を逃す可能性があります。 - -デザインの中心に信頼性を位置づけるための二つの方法は、説明可能性とコントロールです。 - -### 説明可能性 (Explainability) - -AI が将来の世代に知識を伝えるなどの意思決定で役立つ場合、教師や保護者は AI による意思決定の仕組みを正しく理解する必要があります。これを説明可能性と呼び、AI アプリケーションがどのように決定を行うかを把握します。説明可能性を考慮した設計では、AI アプリケーションでできる具体的で詳しい例を示す必要があります。たとえば、「AI 教師から始める」ではなく、「AI を利用して簡単に修正できるようにメモを要約する」といったように具体的な表現を用いるべきです。 - -![an app landing page with clear illustration of explainability in AI applications](../../images/explanability-in-ai.png?WT.mc_id=academic-105485-yoterada) - -もう一つの例は、AI が利用者のデータや個人情報をどのように活用するのかが挙げられます。たとえば、「学生」という属性を持つ利用者には、その属性に基づく制約が存在する場合があります。AI が質問の答えを直接回答できない場合でも、利用者が問題解決の方法を自ら考えるのに役立つ場合があります。 - -![AI replying to questions based on persona](../../images/solving-questions.png?WT.mc_id=academic-105485-yoterada) - -説明可能性のもう一つの重要な要素は、説明の簡素化です。学生や教師は AI の専門家ではないかもしれません。そこで、アプリケーションで何ができて何ができないのかについて説明する際は、簡単な内容で理解しやすい形にすべきです。 - -![simplified explanations on AI capabilities](../../images/simplified-explanations.png?WT.mc_id=academic-105485-yoterada) - -### コントロール - -生成 AI は、利用者と AI が協力する関係を作り出します。例えば、利用者は異なる結果を得るためにプロンプトを通じて指示を変更します。さらに、一度結果が出力された後、利用者はその結果を修正し、自分がコントロールしている感覚を得られます。例えば、Bing を使用する際、形式やトーン、長さに応じてプロンプトによる指示をカスタマイズします。そして、出力に変更を加え、下記のように出力結果を調整できます。 - -![Bing search results with options to modify the prompt and output](../../images/bing1.png?WT.mc_id=academic-105485-yoterada "Bing search results with options to modify the prompt and output") - -Bing には、利用者がアプリケーションを自分で操作できる機能として、AI が使用するデータの選択(オプトイン)や選択解除(オプトアウト)できる機能があります。例えば、学校のアプリケーションでは、学生は自分のノートや教師の教材を復習資料として利用したいと思うかもしれません。 - -![Bing search results with options to modify the prompt and output](../../images/bing2.png?WT.mc_id=academic-105485-yoterada "Bing search results with options to modify the prompt and output") - -> AI アプリケーションを設計する際、利用者が AI の能力について非現実的な期待を持ちすぎないようにするためには、意図的な設計が重要です。これを実現する一つの方法は、プロンプトによる指示と結果の間にある種の隔たりを作り出します。これにより、利用者に対して、相手が AI であり人間ではないのを思い出させます。 - -## コラボレーションとフィードバックのための AI アプリケーションの設計 - -前述の通り、生成 AI は利用者と AI の協力関係を生み出します。ほとんどの場合、利用者がプロンプトで指示を入力し、AI が結果を出力します。しかし、出力が間違っていた場合どうなるでしょうか?エラーが起きた場合、アプリケーションはどのように対処するのでしょうか?AI は利用者を責めるのでしょうか、それともエラーについて説明する時間を取れるのでしょうか? - -AI アプリケーションは、フィードバックを受け付けられるように実装すべきです。これは AI システムの改善だけでなく、利用者との信頼関係の構築にもつながります。設計にはフィードバック・ループを含めるべきで、例えば、出力に対して「いいね」や「よくないね」のボタンを付けるようなシンプルな評価がそれに当たります。 - -そして、システムの能力と限界をはっきりと伝えるのが、もう一つの方法です。 - -利用者が AI の能力を超える要求をしてエラーが発生した場合でも、それに対して適切に対処する必要があります。具体的な方法は下記の通りです。 - -![Giving feedback and handling errors](../../images/feedback-loops.png?WT.mc_id=academic-105485-yoterada) - -システム・エラーは、利用者が AI の対応範囲を超える情報を問い合わせたり、要約を作成できる質問数やテーマの数に制限があるアプリケーションでよく見られます。例えば、歴史や数学など限定的なテーマのデータで学習させた AI アプリケーションは、地理学に関する質問に対応できないかもしれません。これを解消するために、AI システムは「申し訳ありませんが、当社の製品は以下のテーマのデータで学習していますので、あなたの質問には答えられません」といった回答を返します。 - -AI アプリケーションは完全ではなく、間違いを犯すのは避けられません。そのため、アプリケーションを設計する際には、利用者からのフィードバックを受け付け、エラー処理をシンプルで簡単に説明できる方法で実装する必要があります。 - -## 課題 - -これまでに構築した AI アプリを使用して、アプリに次の実装を加えてください。 - -- **快適:** あなたのアプリをより使いやすくするためにどのような工夫ができるか考えてみてください。各所に説明を追加していますか?利用者が自由に探索できるように促していますか?エラーメッセージはどのように表現していますか? - -- **ユーザビリティ:** Web アプリ構築の場合、アプリがマウスとキーボードの両方で操作できていますか? - -- **信頼と透明性:** AI とその結果を完全に信頼するのではなく、結果を確認するために人間が介入するプロセスをどのように追加するか考えてみてください。また、信頼性と透明性を高めるための他の手段も検討し、取り入れてみてください。 - -- **コントロール:** 利用者が自分で提供するデータを管理できるようにしましょう。AI アプリケーションで、利用者が使用するデータの選択(オプトイン)や選択解除(オプトアウト)する方法を導入してください。 - - - -## おめでとうございます、このコースを終了しました - -このレッスン修了後、[生成 AI 学習コレクション](https://aka.ms/genai-collection?WT.mc_id=academic-105485-yoterada) をチェックして、Generative AI の知識をレベルアップさせましょう。 - -おめでとうございます、このコースを無事終了しました!しかし、ここで学びを止めないでください。このコースを通じて、ご自身の AI スタートアップの立ち上げに興味を持たれたと思います。その場合、[Microsoft Founders Hub](https://aka.ms/genai-foundershub?WT.mc_id=academic-105485-yoterada)にアクセスしてプログラムに申し込み、あなたの新たな挑戦をサポートしてもらいましょう。 diff --git a/12-designing-ux-for-ai-applications/translations/ko/README.md b/12-designing-ux-for-ai-applications/translations/ko/README.md deleted file mode 100644 index 5ed8fd91cb..0000000000 --- a/12-designing-ux-for-ai-applications/translations/ko/README.md +++ /dev/null @@ -1,120 +0,0 @@ -# AI 애플리케이션을 위한 사용자 경험(ux) 디자인하기 - -[![Designing UX for AI Applications](../../images/12-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson12-gh?WT.mc_id=academic-105485-koreyst) - -> _(이미지를 클릭하면 이 수업의 비디오를 볼 수 있습니다)_ - -사용자 경험은 앱을 개발하는 데 있어 매우 중요한 부분입니다. 사용자들은 작업을 효율적으로 수행할 수 있어야 합니다. 그리고 효율적으로 사용하는 것도 중요하지만 누구나 사용할 수 있도록 앱을 디자인하는 것도 중요합니다. 이 장에서는 이러한 영역에 중점을 두어 사람들이 사용할 수 있고, 사용하고 싶어하는 앱을 디자인할 수 있도록 하는 부분들을 다룰 것입니다. - -## 소개 - -사용자 경험은 특정 제품이나 서비스(시스템, 도구, 또는 디자인)와 상호 작용하고 사용하는 방식입니다. AI 애플리케이션을 개발할 때, 개발자들은 사용자 경험이 효과적인 것뿐만 아니라 윤리적인 것도 보장하는 데 중점을 둡니다. 이 수업에서는 사용자의 요구를 충족시키는 AI 애플리케이션을 어떻게 구축하는지에 대해 다룹니다. - -이 수업에서는 다음의 영역들을 다룹니다: - -- 사용자 경험 소개 및 사용자 요구 이해 -- 신뢰와 투명성을 위한 AI 애플리케이션 디자인 -- 협력과 피드백을 위한 AI 애플리케이션 디자인 - -## 학습 목표 - -이 수업을 마친 후에는 다음을 할 수 있을 것입니다: - -- 사용자 요구를 충족시키는 AI 애플리케이션을 구축하는 방법에 대한 이해 -- 신뢰와 협력을 촉진하는 AI 애플리케이션 디자인 - -### 전제 조건 - -다음에 대해 더 읽어보십시오. [user experience and design thinking.](https://learn.microsoft.com/training/modules/ux-design?WT.mc_id=academic-105485-koreyst) - -## 사용자 경험 소개 및 사용자 요구 이해 - -우리 가상의 교육 스타트업에서는 두 주요 사용자, 즉 교사와 학생이 있습니다. 각각의 사용자는 고유한 요구사항을 가지고 있습니다. 사용자 중심 디자인은 제품이 목적 그대로의 사용자에게 관련성 있고 유익하도록 하는 데 중점을 둡니다. - -애플리케이션은 **유용하며, 신뢰성 있고, 접근 가능하며, 즐거워야** 좋은 사용자 경험을 제공할 수 있습니다. - -### 유용성 - -"유용하다"는 애플리케이션이 의도한 목적과 일치하는 기능을 갖고 있다는 것을 의미합니다. 예를 들어, 평가 과정을 자동화하거나 복습용 플래시카드를 생성하는 것과 같은 목적을 가지고 있을 수 있습니다. 평가 과정을 자동화하는 애플리케이션은 미리 정의된 기준을 기반으로 학생들의 과제에 정확하고 효율적으로 점수를 부여할 수 있어야 합니다. 마찬가지로, 복습용 플래시카드를 생성하는 애플리케이션은 데이터를 기반으로 관련성 있고 다양한 질문을 생성할 수 있어야 합니다. - -### 신뢰성 - -신뢰성은 애플리케이션이 일관되고 오류 없이 지속적으로 작업을 수행할 수 있다는 것을 의미합니다. 그러나 인간과 마찬가지로 AI도 완벽하지 않으며 오류에 노출될 수 있습니다. 애플리케이션은 오류나 예상치 못한 상황에 직면할 수 있으며 이는 인간의 개입이나 수정이 필요할 수 있습니다. 이러한 상황을 직면 했을 때 오류를 어떻게 처리하는지는 중요한 문제입니다. 이 수업의 마지막 섹션에서는 AI 시스템과 애플리케이션이 협력과 피드백을 위해 어떻게 디자인되는지에 대해 다룰 것입니다. - -### 접근성 - -접근 가능하다는 것은 사용자 경험을 여러 능력을 가진 사용자, 장애가 있는 사용자를 포함하여 모든 이에게 확장할 수 있다는 것을 의미합니다. 접근성 가이드라인과 원칙을 따르면, AI 솔루션은 모든 사용자에게 포괄적이고, 사용하기 쉬우며, 혜택이 있는 것으로 나타납니다. - -### 즐거움 - -즐거움을 준다는 것은 애플리케이션의 사용이 즐거움을 주는 것을 의미합니다. 매력적인 사용자 경험은 사용자에게 긍정적인 영향을 미칠 수 있어 애플리케이션에 다시 돌아오게 유도하고 비즈니스 수익을 증가시킬 수 있습니다. - -![image illustrating UX considerations in AI](../../images/uxinai.png?WT.mc_id=academic-105485-koreyst) - -모든 문제를 AI로 해결할 수 있는 것은 아닙니다. AI는 사용자 경험을 증진시키기 위해 나타납니다. 이는 수동적인 작업을 자동화하거나 사용자 경험을 개인화하는 것과 같은 방식으로 이루어질 수 있습니다. - -## 신뢰와 투명성을 위한 AI 애플리케이션 디자인 - -신뢰를 구축하는 것은 AI 애플리케이션을 디자인할 때 중요합니다. 신뢰가 있다는 것은 애플리케이션이 작업을 완료하고 결과를 일관되게 제공하며 그 결과가 사용자가 필요로 하는 것임을 확신할 수 있게 도움을 줍니다. 이 영역에서의 위험은 불신이나 과신입니다. 불신은 사용자가 AI 시스템에 신뢰를 갖지 않거나 거의 없을 때 발생하며 이는 사용자가 애플리케이션을 거부하게 만들 수 있습니다. 과신은 사용자가 AI 시스템의 능력을 과대평가할 때 발생하며 이는 사용자가 AI 시스템에 지나치게 신뢰할 수 있게 만듭니다. 예를 들어, 자동 채점 시스템에서 과신이 발생하면 교사가 몇몇 종이를 확인하지 않고도 채점 시스템이 잘 작동하는지 확인하지 않을 수 있습니다. 이로 인해 학생들에 대한 불공정하거나 부정확한 성적 또는 피드백 및 개선의 기회를 놓치는 일이 발생할 수 있습니다. - -신뢰를 디자인의 중심에 두기 위해 두 가지 방법은 설명가능성과 제어입니다. - -### 설명가능성 - -AI가 미래 세대에 지식을 전달하는 것과 같이 결정에 도움이 되는 경우, 교사와 부모가 AI 결정이 어떻게 이루어지는지 이해하는 것이 중요합니다. AI 애플리케이션이 결정을 내리는 방식을 이해하는 것이 설명가능성입니다. 설명가능성을 위한 디자인에는 AI 애플리케이션이 수행할 수 있는 예제의 세부 정보를 추가하는 것이 포함됩니다. 예를 들어, "AI 교사로 시작하기" 대신에 "AI를 사용하여 노트를 요약하여 쉬운 복습을 도와보세요"와 같이 시스템이 구체적인 예시를 제공할 수 있습니다. - -![an app landing page with clear illustration of explainability in AI applications](../../images/explanability-in-ai.png?WT.mc_id=academic-105485-koreyst) - -또 다른 예로는 AI가 사용자 및 개인 데이터를 사용하는 방법이 있습니다. 예를 들어, 학생이라는 페르소나를 가진 사용자는 해당 페르소나에 기반한 제한이 있을 수 있습니다. AI는 질문에 대한 답을 드러낼 수 없을지라도 사용자가 문제를 어떻게 해결할지에 대한 가이드를 제공할 수 있습니다. - -![AI replying to questions based on persona](../../images/solving-questions.png?WT.mc_id=academic-105485-koreyst) - -설명가능성의 마지막 중요한 부분은 설명을 단순화하는 것입니다. 학생들과 교사들이 AI 전문가가 아닐 수 있기 때문에 애플리케이션이 할 수 있는 일이나 할 수 없는 일에 대한 설명은 단순하고 이해하기 쉽게 제공되어야 합니다. - -![simplified explanations on AI capabilities](../../images/simplified-explanations.png?WT.mc_id=academic-105485-koreyst) - -### 제어 - -생성형 AI는 사용자와 AI 간의 협력을 만들어냅니다. 예를 들어 사용자는 서로 다른 결과를 얻기 위해 프롬프트를 수정할 수 있습니다. 또한, 한 번 출력물이 생성되면 사용자는 자신의 통제대로 결과를 수정하여 얻을 수 있어야 합니다. 예를 들어, Bing을 사용할 때는 형식, 어조, 길이에 기반하여 프롬프트를 맞춤 설정할 수 있습니다. 더불어 결과에 변경을 추가하거나 출력물을 수정할 수 있습니다. 아래에 표시된 것처럼요: - -![Bing search results with options to modify the prompt and output](../../images/bing1.png?WT.mc_id=academic-105485-koreyst "Bing search results with options to modify the prompt and output") - -Bing의 또 다른 기능 중 하나는 사용자가 애플리케이션을 통제할 수 있도록 데이터 사용에 동의하거나 동의를 철회할 수 있는 기능입니다. 예를 들어 학교 애플리케이션의 경우 학생은 자신의 노트와 교사의 자료를 복습 자료로 활용하고 싶을 것입니다. - -![Bing search results with options to modify the prompt and output](../../images/bing2.png?WT.mc_id=academic-105485-koreyst "Bing search results with options to modify the prompt and output") - -> AI 애플리케이션을 디자인할 때 의도성(intentionality)은 사용자가 능력을 과대평가하거나 현실적이지 않은 기대를 설정하지 않도록 하는 데 핵심적인 역할을 합니다. 이를 위한 한 가지 방법은 프롬프트와 결과 사이에 마찰을 만들어내는 것입니다. 사용자에게 이것이 AI이며 인간이 아니라는 점을 상기시켜 사용자에게 경고하는 것입니다. - -## 협력과 피드백을 위한 AI 애플리케이션 디자인 - -앞서 언급한대로 생성형 AI는 사용자와 AI 간의 협력을 만들어냅니다. 대부분의 상호작용은 사용자가 프롬프트를 입력하고 AI가 결과를 생성하는 것입니다. 그렇다면 결과가 부정확한 경우는 어떻게 처리되는 걸까요? 애플리케이션이 오류를 어떻게 처리하나요? AI는 사용자를 나무랄까요 아니면 오류를 설명하는 데 시간을 들일까요? - -AI 애플리케이션은 피드백을 받고 주는 데에 적합하게 구축되어야 합니다. 이는 AI 시스템이 개선되는 데 도움이 되는 것뿐만 아니라 사용자와의 신뢰를 쌓는 데에도 기여합니다. 디자인에 피드백 루프를 포함하는 것이 중요하며, 이를 위한 예시로는 결과물에 대한 간단한 좋아요 또는 싫어요가 있을 수 있습니다. - -이를 처리하는 또 다른 방법은 시스템의 능력과 제한을 명확하게 전달하는 것입니다. 사용자가 AI 능력을 넘어서는 것을 요청할 때, 이에 대한 처리 방법도 명시되어야 합니다. 아래에 표시된 것처럼 사용자가 AI 능력을 벗어난 요청을 할 경우에 대한 처리 방법이 있어야 합니다. - -![Giving feedback and handling errors](../../images/feedback-loops.png?WT.mc_id=academic-105485-koreyst) - -시스템 오류는 사용자가 AI의 범위를 벗어난 정보와 관련한 도움이 필요한 경우나 애플리케이션이 사용자가 생성할 수 있는 질문/주제의 수에 제한을 둔 경우에 흔히 발생합니다. 예를 들어, 역사와 수학과 같은 한정된 주제의 데이터로 훈련된 AI 애플리케이션은 지리와 관련된 질문에 대응할 수 없을 것입니다. 이를 완화하기 위해 AI 시스템은 다음과 같은 응답을 할 수 있습니다: "죄송합니다만, 저희 제품은 다음과 같은 주제의 데이터로 훈련되었기 때문에... 당신이 물은 질문에 답할 수 없습니다." - -AI 애플리케이션은 완벽하지 않기 때문에 오류가 발생할 수 있습니다. 그렇기에 앱을 디자인할 때 사용자로부터 피드백과 오류 처리를 간단하고 설명하기 쉬운 방식으로 수용할 수 있도록 하는 것이 중요합니다. - -## 과제 - -당신이 만든 AI 앱들 중에 어떠한 것이든 골라 밑의 단계들을 당신의 앱에 구현해보는 것을 고려해보세요: - -- **즐거움:** 앱을 어떻게 더 즐겁게 만들 수 있는지 고려하세요. 설명을 어디에 추가하고 있는지, 사용자의 탐험을 유도하고 있는지 확인하세요. 에러 메시지를 어떻게 구성하고 있는지도 고려해보세요. - -- **사용성:** 웹 앱을 개발 중이라면, 앱이 마우스와 키보드 둘다를 가지고 탐험할 수 있도록 보장하세요. - -- **신뢰와 투명성:** AI의 출력물을 완전히 신뢰하지 말고, 출력물을 검증하기 위해 인간을 프로세스에 추가하는 방법을 고려하세요. 또한, 신뢰성과 투명성을 달성하기 위한 다른 방법을 고려하고 구현하세요. - -- **제어:** 사용자에게 어플리케이션에 제공하는 데이터를 통제할 수 있는 권한을 부여하세요. 사용자가 AI 어플리케이션의 데이터 수집에 동의하거나 동의 철회할 수 있는 방법을 구현하세요. - - - -## 축하합니다, 이번 코스를 완료하였습니다. - -이 수업이 끝났으니 우리의 [Generative AI 학습 컬렉션](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) 수업을 들어, 생성형 AI에 관한 지식을 계속해서 쌓아보세요! - -축하합니다, 이번 코스를 완료하였습니다! 그러나 여기서 멈추면 안됩니다. 바라건대, 당신이 당신만의 생성형 AI 스타트업을 만드는 것에 영감을 얻었으면 좋겠습니다. 여기 [Microsoft Founders Hub](https://aka.ms/genai-foundershub?WT.mc_id=academic-105485-koreyst)로 이동하여 당신의 여정에 도움을 주기 위한 프로그램에 신청해보세요. diff --git a/12-designing-ux-for-ai-applications/translations/pl/README.md b/12-designing-ux-for-ai-applications/translations/pl/README.md deleted file mode 100644 index d196a81713..0000000000 --- a/12-designing-ux-for-ai-applications/translations/pl/README.md +++ /dev/null @@ -1,120 +0,0 @@ -# Projektowanie UX dla aplikacji AI - -[![Projektowanie UX dla aplikacji AI](../../images/12-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson12-gh?WT.mc_id=academic-105485-koreyst) - -> _(Kliknij powyższy obrazek, aby obejrzeć wideo tej lekcji)_ - -Doświadczenie użytkownika jest bardzo ważnym aspektem budowania aplikacji. Użytkownicy muszą być w stanie korzystać z Twojej aplikacji w sposób efektywny, aby wykonywać zadania. Bycie efektywnym to jedno, ale musisz również projektować aplikacje tak, aby mogły być używane przez wszystkich, aby uczynić je _dostępnymi_. Ten rozdział skupi się na tym obszarze, abyś ostatecznie zaprojektował aplikację, której ludzie mogą i chcą używać. - -## Wprowadzenie - -Doświadczenie użytkownika to sposób, w jaki użytkownik wchodzi w interakcję i korzysta z określonego produktu lub usługi, czy to systemu, narzędzia czy projektu. Podczas tworzenia aplikacji AI, programiści koncentrują się nie tylko na zapewnieniu efektywności doświadczenia użytkownika, ale także na etyce. W tej lekcji omówimy, jak budować aplikacje Sztucznej Inteligencji (AI), które odpowiadają na potrzeby użytkowników. - -Lekcja obejmie następujące obszary: - -- Wprowadzenie do Doświadczenia Użytkownika i Zrozumienia Potrzeb Użytkownika -- Projektowanie Aplikacji AI dla Zaufania i Przejrzystości -- Projektowanie Aplikacji AI dla Współpracy i Informacji Zwrotnej - -## Cele nauczania - -Po ukończeniu tej lekcji będziesz potrafił: - -- Zrozumieć, jak budować aplikacje AI, które spełniają potrzeby użytkownika. -- Projektować aplikacje AI, które promują zaufanie i współpracę. - -### Wymagania wstępne - -Poświęć trochę czasu i przeczytaj więcej o [doświadczeniu użytkownika i myśleniu projektowym.](https://learn.microsoft.com/training/modules/ux-design?WT.mc_id=academic-105485-koreyst) - -## Wprowadzenie do Doświadczenia Użytkownika i Zrozumienia Potrzeb Użytkownika - -W naszym fikcyjnym startupie edukacyjnym mamy dwóch głównych użytkowników: nauczycieli i uczniów. Każdy z tych dwóch użytkowników ma unikalne potrzeby. Projektowanie zorientowane na użytkownika stawia użytkownika na pierwszym miejscu, zapewniając, że produkty są istotne i korzystne dla tych, dla których są przeznaczone. - -Aplikacja powinna być **użyteczna, niezawodna, dostępna i przyjemna** aby zapewnić dobre doświadczenie użytkownika. - -### Użyteczność - -Bycie użytecznym oznacza, że aplikacja ma funkcjonalność, która odpowiada jej zamierzonemu celowi, takiemu jak automatyzacja procesu oceniania lub generowanie fiszek do powtórek. Aplikacja, która automatyzuje proces oceniania, powinna być w stanie dokładnie i efektywnie przypisywać oceny pracom uczniów na podstawie wcześniej zdefiniowanych kryteriów. Podobnie, aplikacja generująca fiszki do powtórek powinna tworzyć istotne i różnorodne pytania na podstawie swoich danych. - -### Niezawodność - -Bycie niezawodnym oznacza, że aplikacja może wykonywać swoje zadanie konsekwentnie i bez błędów. Jednak AI, podobnie jak ludzie, nie jest doskonała i może być podatna na błędy. Aplikacje mogą napotkać błędy lub nieoczekiwane sytuacje, które wymagają interwencji lub korekty człowieka. Jak radzić sobie z błędami? W ostatniej sekcji tej lekcji omówimy, jak systemy i aplikacje AI są projektowane dla współpracy i informacji zwrotnej. - -### Dostępność - -Bycie dostępnym oznacza rozszerzenie doświadczenia użytkownika na użytkowników o różnych możliwościach, w tym na osoby z niepełnosprawnościami, zapewniając, że nikt nie zostaje pominięty. Stosując wytyczne i zasady dostępności, rozwiązania AI stają się bardziej inkluzywne, użyteczne i korzystne dla wszystkich użytkowników. - -### Przyjemność - -Bycie przyjemnym oznacza, że korzystanie z aplikacji jest przyjemne. Atrakcyjne doświadczenie użytkownika może mieć pozytywny wpływ na użytkownika, zachęcając go do powrotu do aplikacji i zwiększając przychody biznesowe. - -![obraz ilustrujący względy UX w AI](../../images/uxinai.png?WT.mc_id=academic-105485-koreyst) - -Nie każde wyzwanie można rozwiązać za pomocą AI. AI wkracza, aby wzbogacić doświadczenie użytkownika, czy to poprzez automatyzację ręcznych zadań, czy personalizację doświadczeń użytkownika. - -## Projektowanie Aplikacji AI dla Zaufania i Przejrzystości - -Budowanie zaufania jest kluczowe przy projektowaniu aplikacji AI. Zaufanie zapewnia użytkownikowi pewność, że aplikacja wykona zadanie, dostarczy wyniki konsekwentnie, a wyniki są tym, czego użytkownik potrzebuje. Ryzykiem w tym obszarze jest brak zaufania i nadmierne zaufanie. Brak zaufania występuje, gdy użytkownik ma niewielkie zaufanie lub w ogóle nie ma zaufania do systemu AI, co prowadzi do odrzucenia aplikacji przez użytkownika. Nadmierne zaufanie występuje, gdy użytkownik przecenia możliwości systemu AI, co prowadzi do zbyt dużego zaufania użytkowników do systemu AI. Na przykład, zautomatyzowany system oceniania w przypadku nadmiernego zaufania może prowadzić do tego, że nauczyciel nie sprawdzi niektórych prac, aby upewnić się, że system oceniania działa dobrze. Może to skutkować niesprawiedliwymi lub niedokładnymi ocenami dla uczniów lub utratą możliwości uzyskania informacji zwrotnej i poprawy. - -Dwa sposoby, aby zapewnić, że zaufanie jest w centrum projektu, to wyjaśnialność i kontrola. - -### Wyjaśnialność - -Kiedy AI pomaga podejmować decyzje, takie jak przekazywanie wiedzy przyszłym pokoleniom, kluczowe jest, aby nauczyciele i rodzice rozumieli, jak podejmowane są decyzje AI. To jest wyjaśnialność - zrozumienie, jak aplikacje AI podejmują decyzje. Projektowanie z myślą o wyjaśnialności obejmuje dodawanie szczegółów przykładów tego, co aplikacja AI może zrobić. Na przykład, zamiast "Rozpocznij z nauczycielem AI", system może użyć: "Podsumuj swoje notatki dla łatwiejszej rewizji za pomocą AI." - -![strona startowa aplikacji z jasną ilustracją wyjaśnialności w aplikacjach AI](../../images/explanability-in-ai.png?WT.mc_id=academic-105485-koreyst) - -Innym przykładem jest to, jak AI wykorzystuje dane użytkownika i dane osobowe. Na przykład, użytkownik z personą ucznia może mieć ograniczenia w oparciu o swoją personę. AI może nie być w stanie ujawnić odpowiedzi na pytania, ale może pomóc naprowadzić użytkownika do przemyślenia, jak mogą rozwiązać problem. - -![AI odpowiadająca na pytania w oparciu o personę](../../images/solving-questions.png?WT.mc_id=academic-105485-koreyst) - -Ostatnim kluczowym elementem wyjaśnialności jest uproszczenie wyjaśnień. Uczniowie i nauczyciele mogą nie być ekspertami w AI, dlatego wyjaśnienia, czego aplikacja może lub nie może zrobić, powinny być uproszczone i łatwe do zrozumienia. - -![uproszczone wyjaśnienia dotyczące możliwości AI](../../images/simplified-explanations.png?WT.mc_id=academic-105485-koreyst) - -### Kontrola - -Generatywna AI tworzy współpracę między AI a użytkownikiem, gdzie na przykład użytkownik może modyfikować prompte dla różnych wyników. Dodatkowo, po wygenerowaniu wyniku, użytkownicy powinni być w stanie modyfikować wyniki, dając im poczucie kontroli. Na przykład, korzystając z Bing, możesz dostosować swój prompt w oparciu o format, ton i długość. Dodatkowo możesz wprowadzać zmiany do swojego wyniku i modyfikować wynik, jak pokazano poniżej: - -![Wyniki wyszukiwania Bing z opcjami modyfikacji promptu i wyniku](../../images/bing1.png?WT.mc_id=academic-105485-koreyst "Wyniki wyszukiwania Bing z opcjami modyfikacji promptu i wyniku") - -Inną funkcją w Bing, która pozwala użytkownikowi na kontrolę nad aplikacją, jest możliwość wyrażenia zgody i rezygnacji z danych używanych przez AI. W przypadku aplikacji szkolnej, uczeń może chcieć używać swoich notatek, a także zasobów nauczycieli jako materiału do powtórek. - -![Wyniki wyszukiwania Bing z opcjami modyfikacji promptu i wyniku](../../images/bing2.png?WT.mc_id=academic-105485-koreyst "Wyniki wyszukiwania Bing z opcjami modyfikacji promptu i wyniku") - -> Przy projektowaniu aplikacji AI, celowość jest kluczowa w zapewnieniu, że użytkownicy nie nadmiernie ufają, ustanawiając nierealistyczne oczekiwania dotyczące jej możliwości. Jednym ze sposobów na to jest tworzenie tarcia między promptami a wynikami. Przypominając użytkownikowi, że to jest AI, a nie drugi człowiek. - -## Projektowanie Aplikacji AI dla Współpracy i Informacji Zwrotnej - -Jak wspomniano wcześniej, generatywna AI tworzy współpracę między użytkownikiem a AI. Większość interakcji polega na tym, że użytkownik wprowadza prompt, a AI generuje wynik. A co, jeśli wynik jest niepoprawny? Jak aplikacja radzi sobie z błędami, jeśli wystąpią? Czy AI obwinia użytkownika, czy też poświęca czas na wyjaśnienie błędu? - -Aplikacje AI powinny być budowane w taki sposób, aby otrzymywać i dawać informacje zwrotne. Pomaga to nie tylko systemowi AI się doskonalić, ale także buduje zaufanie wśród użytkowników. Pętla informacji zwrotnej powinna być wbudowana w projekt, przykładem może być prosty kciuk w górę lub w dół przy wyniku. - -Innym sposobem na radzenie sobie z tym jest jasne komunikowanie możliwości i ograniczeń systemu. Kiedy użytkownik popełnia błąd, prosząc o coś poza możliwościami AI, powinien również istnieć sposób na radzenie sobie z tym, jak pokazano poniżej. - -![Dawanie informacji zwrotnej i radzenie sobie z błędami](../../images/feedback-loops.png?WT.mc_id=academic-105485-koreyst) - -Błędy systemowe są powszechne w aplikacjach, gdzie użytkownik może potrzebować pomocy z informacjami wykraczającymi poza zakres AI lub aplikacja może mieć limit liczby pytań/przedmiotów, dla których użytkownik może generować podsumowania. Na przykład, aplikacja AI wytrenowana na danych z ograniczonej liczby przedmiotów, na przykład Historii i Matematyki, może nie być w stanie obsłużyć pytań dotyczących Geografii. Aby złagodzić ten problem, system AI może dać odpowiedź typu: "Przepraszam, nasz produkt został wytrenowany na danych z następujących przedmiotów..., nie jestem w stanie odpowiedzieć na zadane pytanie." - -Aplikacje AI nie są doskonałe, dlatego są podatne na błędy. Projektując swoje aplikacje, powinieneś upewnić się, że tworzysz przestrzeń na informacje zwrotne od użytkowników i obsługę błędów w sposób, który jest prosty i łatwy do wyjaśnienia. - -## Zadanie - -Weź dowolne aplikacje AI, które dotychczas zbudowałeś, rozważ wdrożenie poniższych kroków w swojej aplikacji: - -- **Przyjemność:** Zastanów się, jak możesz uczynić swoją aplikację bardziej przyjemną. Czy dodajesz wyjaśnienia wszędzie? Czy zachęcasz użytkownika do eksploracji? Jak formujesz swoje komunikaty o błędach? - -- **Użyteczność:** Budując aplikację webową. Upewnij się, że Twoja aplikacja jest nawigowalna zarówno za pomocą myszy, jak i klawiatury. - -- **Zaufanie i przejrzystość:** Nie ufaj całkowicie AI i jej wynikom, zastanów się, jak dodałbyś człowieka do procesu weryfikacji wyniku. Rozważ i wdróż również inne sposoby osiągnięcia zaufania i przejrzystości. - -- **Kontrola:** Daj użytkownikowi kontrolę nad danymi, które dostarczają aplikacji. Wdróż sposób, w jaki użytkownik może wyrazić zgodę i zrezygnować z gromadzenia danych w aplikacji AI. - - - -## Kontynuuj naukę! - -Po ukończeniu tej lekcji, sprawdź naszą [Kolekcję nauki o Generatywnej AI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst), aby kontynuować podnoszenie swojej wiedzy o Generatywnej AI! - -Przejdź do Lekcji 13, gdzie przyjrzymy się, jak [zabezpieczać aplikacje AI](../../../13-securing-ai-applications/translations/pl/README.md?WT.mc_id=academic-105485-koreyst)! diff --git a/12-designing-ux-for-ai-applications/translations/pt-br/README.md b/12-designing-ux-for-ai-applications/translations/pt-br/README.md deleted file mode 100644 index 22c196d92f..0000000000 --- a/12-designing-ux-for-ai-applications/translations/pt-br/README.md +++ /dev/null @@ -1,122 +0,0 @@ -# Projetando UX para aplicativos de IA - -[![Designing UX for AI Applications](../../images/12-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson12-gh?WT.mc_id=academic-105485-koreyst) - -> _(Clique na imagem acima para assistir ao vídeo desta lição)_ - -A experiência do usuário é um aspecto muito importante na criação de aplicativos. Os usuários precisam poder usar seu aplicativo de maneira eficiente para realizar tarefas. Ser eficiente é uma coisa, mas você também precisa projetar aplicativos para que possam ser usados por todos, tornando-os _acessíveis_. Este capítulo se concentrará nessa área para que você termine projetando um aplicativo que as pessoas possam e queiram usar. - -## Introdução - -A experiência do usuário é como um usuário interage e utiliza um produto ou serviço específico, seja um sistema, ferramenta ou design. Ao desenvolver aplicativos de IA, os desenvolvedores não apenas se concentram em garantir que a experiência do usuário seja eficaz, mas também ética. Nesta lição, abordamos como construir aplicativos de Inteligência Artificial (IA) que atendem às necessidades do usuário. - -A lição abordará as seguintes áreas: - -- Introdução à Experiência do Usuário e Compreensão das Necessidades do Usuário -- Projeto de Aplicações de IA para Confiança e Transparência -- Projeto de Aplicações de IA para Colaboração e Feedback - -## Metas de Aprendizado - -Após esta lição, você será capaz de: - -- Compreender como construir aplicativos de IA que atendam às necessidades do usuário. -- Projetar aplicativos de IA que promovam confiança e colaboração. - -### Pré-requisito - -Dedique um tempo para ler mais sobre [experiência do usuário e design thinking.](https://learn.microsoft.com/training/modules/ux-design?WT.mc_id=academic-105485-koreyst) - -## Introdução à Experiência do Usuário e Compreensão das Necessidades do Usuário - -Em nossa fictícia startup de educação, temos dois usuários principais, professores e alunos. Cada um dos dois usuários tem necessidades únicas. Um design centrado no usuário prioriza o usuário, garantindo que os produtos sejam relevantes e benéficos para quem se destina. - -A aplicação deve ser **útil, confiável, acessível e agradável** para proporcionar uma boa experiência do usuário. - -### Usabilidade - -Ser útil significa que a aplicação possui funcionalidades que correspondem ao seu propósito, como automatizar o processo de avaliação ou gerar flashcards para revisão. Uma aplicação que automatiza o processo de avaliação deve ser capaz de atribuir notas com precisão e eficiência ao trabalho dos alunos com base em critérios predefinidos. Da mesma forma, uma aplicação que gera flashcards de revisão deve ser capaz de criar perguntas relevantes e diversas com base em seus dados. - -### Confiabilidade - -Ser confiável significa que a aplicação pode realizar sua tarefa de forma consistente e sem erros. No entanto, a IA, assim como os humanos, não é perfeita e pode estar sujeita a erros. As aplicações podem encontrar erros ou situações inesperadas que exigem intervenção ou correção humana. Como lidar com erros? Na última seção desta lição, abordaremos como os sistemas e aplicações de IA são projetados para colaboração e feedback. - -### Acessibilidade - -Ser acessível significa estender a experiência do usuário a usuários com várias habilidades, incluindo aqueles com deficiências, garantindo que ninguém seja deixado de fora. Seguindo diretrizes e princípios de acessibilidade, as soluções de IA se tornam mais inclusivas, utilizáveis e benéficas para todos os usuários. - -### Agradável - -Ser agradável significa que a aplicação é agradável de usar. Uma experiência do usuário atraente pode ter um impacto positivo no usuário, incentivando-os a retornar à aplicação e aumentando a receita do negócio. - -![imagem ilustrando considerações de UX em IA](../../images/uxinai.png?WT.mc_id=academic-105485-koreyst) - -Nem todo desafio pode ser resolvido com IA. A IA entra para aprimorar sua experiência do usuário, seja automatizando tarefas manuais ou personalizando experiências do usuário. - -# Projetando Aplicações de IA para Confiança e Transparência - -Criar confiança é crucial ao projetar aplicações de IA. A confiança garante que o usuário tenha confiança de que o aplicativo concluirá o trabalho, entregará resultados consistentes e que os resultados são o que o usuário precisa. Um risco nessa área é a desconfiança e a confiança excessiva. A desconfiança ocorre quando um usuário tem pouca ou nenhuma confiança em um sistema de IA, o que leva o usuário a rejeitar seu aplicativo. A confiança excessiva ocorre quando um usuário superestima a capacidade de um sistema de IA, levando os usuários a confiarem demais no sistema de IA. Por exemplo, um sistema de avaliação automatizada, no caso de confiança excessiva, pode levar o professor a não revisar alguns trabalhos para garantir que o sistema de avaliação funcione bem. Isso poderia resultar em notas injustas ou imprecisas para os alunos, ou oportunidades perdidas de feedback e melhoria. - -Duas maneiras de garantir que a confiança esteja no centro do design são explicabilidade e controle. - -### Explicabilidade - -Quando a IA ajuda a informar decisões, como transmitir conhecimento às futuras gerações, é fundamental que professores e pais entendam como as decisões da IA são tomadas. Isso é explicabilidade - entender como as aplicações de IA tomam decisões. Projetar para explicabilidade inclui adicionar detalhes de exemplos do que uma aplicação de IA pode fazer. Por exemplo, em vez de "Comece com o professor de IA", o sistema pode usar: "Resuma suas anotações para uma revisão mais fácil usando a IA." - -![uma página inicial do aplicativo com uma ilustração clara da explicabilidade em aplicações de IA](../../images/explanability-in-ai.png?WT.mc_id=academic-105485-koreyst) - -Outro exemplo é como a IA usa dados pessoais do usuário. Por exemplo, um usuário com a persona "aluno" pode ter limitações com base em sua persona. A IA pode não ser capaz de revelar respostas a perguntas, mas pode ajudar o usuário a pensar em como resolver um problema. - -![IA respondendo a perguntas com base na persona](../../images/solving-questions.png?WT.mc_id=academic-105485-koreyst) - -A última parte importante da explicabilidade é a simplificação das explicações. Alunos e professores podem não ser especialistas em IA, portanto, as explicações do que a aplicação pode ou não pode fazer devem ser simplificadas e fáceis de entender. - -![explicações simplificadas sobre as capacidades da IA](../../images/simplified-explanations.png?WT.mc_id=academic-105485-koreyst) - -### Controle - -A IA generativa cria uma colaboração entre a IA e o usuário, onde, por exemplo, um usuário pode modificar prompts para obter resultados diferentes. Além disso, uma vez que uma saída é gerada, os usuários devem poder modificar os resultados, dando-lhes uma sensação de controle. Por exemplo, ao usar o Bing, você pode personalizar seu prompt com base no formato, tom e comprimento. Além disso, você pode fazer alterações em sua saída e modificar o resultado, conforme mostrado abaixo: - -![resultados da pesquisa no Bing com opções para modificar o prompt e a saída](../../images/bing1.png?WT.mc_id=academic-105485-koreyst "Resultados da pesquisa no Bing com opções para modificar o prompt e a saída") - -Outro recurso no Bing que permite ao usuário ter controle sobre o aplicativo é a capacidade de escolher participar ou sair dos dados que a IA usa. Para um aplicativo escolar, um aluno pode querer usar suas anotações, bem como os recursos dos professores como material de revisão. - -![resultados da pesquisa no Bing com opções para modificar o prompt e a saída](../../images/bing2.png?WT.mc_id=academic-105485-koreyst "Resultados da pesquisa no Bing com opções para modificar o prompt e a saída") - -> Ao projetar aplicações de IA, a intencionalidade é fundamental para garantir que os usuários não confiem demais, estabelecendo expectativas irreais de suas capacidades. Uma maneira de fazer isso é criar atrito entre os prompts e os resultados, lembrando ao usuário que isso é IA e não um ser humano colega. - -# Projetando Aplicações de IA para Colaboração e Feedback - -Como mencionado anteriormente, a IA generativa cria uma colaboração entre o usuário e a IA. A maioria das interações envolve um usuário inserindo um prompt e a IA gerando uma saída. E se a saída estiver incorreta? Como o aplicativo lida com erros, se ocorrerem? A IA culpa o usuário ou se dá ao trabalho de explicar o erro? - -As aplicações de IA devem ser construídas para receber e fornecer feedback. Isso não apenas ajuda o sistema de IA a melhorar, mas também constrói confiança com os usuários. Um ciclo de feedback deve ser incluído no design, um exemplo pode ser um simples polegar para cima ou para baixo na saída. - -Outra maneira de lidar com isso é comunicar claramente as capacidades e limitações do sistema. Quando um usuário comete um erro solicitando algo além das capacidades da IA, também deve haver uma maneira de lidar com isso, como mostrado abaixo. - -![Dar feedback e lidar com erros](../../images/feedback-loops.png?WT.mc_id=academic-105485-koreyst) - -Erros do sistema são comuns em aplicativos nos quais o usuário pode precisar de assistência com informações fora do escopo da IA ou o aplicativo pode ter um limite de quantas perguntas/assuntos um usuário pode gerar resumos. Por exemplo, um aplicativo de IA treinado com dados em assuntos limitados, como História e Matemática, pode não conseguir lidar com perguntas sobre Geografia. Para mitigar isso, o sistema de IA pode dar uma resposta como: "Desculpe, nosso produto foi treinado com dados nos seguintes assuntos..., não consigo responder à pergunta que você fez." - -As aplicações de IA não são perfeitas, portanto, estão sujeitas a cometer erros. Ao projetar suas aplicações, certifique-se de criar espaço para feedback dos usuários e tratamento de erros de maneira simples e facilmente explicável. - -## Tarefa - -# Implementando Melhorias na sua Aplicação de IA - -Ao considerar a implementação dos passos abaixo na sua aplicação de IA, você pode aprimorar a experiência do usuário: - -- **Agradável:** Pense em como tornar sua aplicação mais agradável. Você está adicionando explicações em todos os lugares? Está incentivando o usuário a explorar? Como você está redigindo suas mensagens de erro? - -- **Usabilidade:** Se estiver construindo um aplicativo web, certifique-se de que ele seja navegável tanto pelo mouse quanto pelo teclado. - -- **Confiança e Transparência:** Não confie completamente na saída da IA. Considere como adicionar um ser humano ao processo para verificar a saída. Além disso, pense e implemente outras maneiras de alcançar confiança e transparência. - -- **Controle:** Dê ao usuário controle sobre os dados que fornecem à aplicação. Implemente uma maneira de o usuário consentir ou recusar a coleta de dados na aplicação de IA. - - - -## Parabéns! Você concluiu este curso - -Após concluir esta lição, confira nossa [coleção de aprendizado de IA generativa](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst) para continuar a aprimorar seus conhecimentos sobre IA generativa! - -Parabéns! Você concluiu este curso! A criação de aplicações em IA Generativa não deve parar por aqui. Esperançosamente, você foi inspirado a começar a criar sua própria startup de IA generativa. Vá para o [Microsoft Founders Hub](https://aka.ms/genai-foundershub?WT.mc_id=academic-105485-koreyst) e inscreva-se no programa para receber suporte em sua jornada. diff --git a/12-designing-ux-for-ai-applications/translations/tw/README.md b/12-designing-ux-for-ai-applications/translations/tw/README.md deleted file mode 100644 index d82bf9cdf1..0000000000 --- a/12-designing-ux-for-ai-applications/translations/tw/README.md +++ /dev/null @@ -1,121 +0,0 @@ -# 設計 AI 應用的 UX - -[![設計 AI 應用的 UX](../../images/12-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson12-gh?WT.mc_id=academic-105485-koreyst) - -> _(點擊上方圖片以觀看本課的影片)_ - -使用者體驗是建構應用程式的一個非常重要的方面。使用者需要能夠以高效的方式使用你的應用程式來執行任務。高效是一回事,但你還需要設計應用程式,使其能夠被所有人使用,讓它們具有_可及性_。本章將專注於這個領域,希望最終你能設計出人們能夠並且想要使用的應用程式。 - -## 簡介 - -使用者體驗是使用者如何互動並使用特定產品或服務,不論是系統、工具或設計。在開發 AI 應用程式時,開發者不僅專注於確保使用者體驗的有效性,還要考慮其倫理性。在本課程中,我們將介紹如何建構滿足使用者需求的人工智慧 (AI) 應用程式。 - -這節課將涵蓋以下領域: - -- 使用者體驗介紹和理解使用者需求 -- 設計值得信賴和透明的 AI 應用程式 -- 設計用於協作和反饋的 AI 應用程式 - -## 學習目標 - -完成這節課後,你將能夠: - -- 了解如何建構符合使用者需求的 AI 應用程式。 -- 設計促進信任與合作的 AI 應用程式。 - -### 先決條件 - -花點時間閱讀更多關於[使用者體驗和設計思維](https://learn.microsoft.com/training/modules/ux-design?WT.mc_id=academic-105485-koreyst)。 - -## 使用者體驗介紹與了解使用者需求 - -在我們虛構的教育新創公司中,我們有兩個主要用戶,教師和學生。這兩個用戶各有其獨特的需求。以用戶為中心的設計優先考慮用戶,確保產品對其目標用戶是相關且有益的。 - -應用程式應該是**有用的、可靠的、可訪問的和愉快的**,以提供良好的使用者體驗。 - -### 可用性 - -應用程式的實用性意味著它具有符合其預期目的的功能,例如自動化評分過程或生成複習用的抽認卡。一個自動化評分過程的應用程式應能夠根據預定標準準確且高效地為學生的作業打分。同樣地,一個生成複習抽認卡的應用程式應能夠根據其數據建立相關且多樣的問題。 - -### 可靠性 - -可靠性意味著應用程式可以一致且無錯誤地執行其任務。然而,AI 就像人類一樣並不完美,可能會出錯。應用程式可能會遇到需要人工干預或修正的錯誤或意外情況。你如何處理錯誤?在本課的最後一節,我們將介紹 AI 系統和應用程式如何設計以進行協作和反饋。 - -### 無障礙性 - -讓所有人都能使用意味著將使用者體驗擴展到具有各種能力的使用者,包括殘障人士,確保沒有人被排除在外。通過遵循無障礙指南和原則,AI 解決方案變得更加包容、可用,並對所有使用者有益。 - -### 愉快 - -愉快意味著應用程式使用起來令人愉悅。吸引人的使用者體驗可以對使用者產生積極的影響,鼓勵他們回到應用程式並增加業務收入。 - -![image illustrating UX considerations in AI](../../images/uxinai.png?WT.mc_id=academic-105485-koreyst) - -並非每個挑戰都能用 AI 解決。AI 的加入是為了增強您的使用者體驗,無論是自動化手動任務,還是個性化使用者體驗。 - -## 設計值得信賴和透明的 AI 應用程式 - -建立信任在設計 AI 應用程式時至關重要。信任確保使用者相信應用程式能夠完成工作,持續提供結果,並且結果是使用者所需要的。在這方面的一個風險是缺乏信任和過度信任。缺乏信任發生在使用者對 AI 系統幾乎沒有信任時,這會導致使用者拒絕你的應用程式。過度信任發生在使用者高估了 AI 系統的能力,導致使用者過度信任 AI 系統。例如,在過度信任的情況下,自動評分系統可能會導致教師不檢查部分試卷以確保評分系統運作良好。這可能會導致學生的成績不公平或不準確,或者錯失反饋和改進的機會。 - -設計中確保信任處於核心的兩種方法是可解釋性和控制。 - -### 可解釋性 - -當 AI 幫助做出決策,例如向後代傳授知識時,教師和家長了解 AI 決策的方式是至關重要的。這就是可解釋性——了解 AI 應用程式如何做出決策。設計可解釋性包括添加 AI 應用程式可以做什麼的範例細節。例如,系統可以使用:"使用 AI 縮短你的筆記以便於複習",而不是 "開始使用 AI 教師"。 - -![一個應用程式登陸頁面,清楚說明 AI 應用中的可解釋性](../../images/explanability-in-ai.png?WT.mc_id=academic-105485-koreyst) - -另一個範例是 AI 如何使用用戶和個人資料。例如,一個具有學生角色的用戶可能會根據其角色受到限制。AI 可能無法揭示問題的答案,但可以幫助引導用戶思考如何解決問題。 - -![AI 回答基於個人設定的問題](../../images/solving-questions.png?WT.mc_id=academic-105485-koreyst) - -最後一個關鍵部分是解釋的簡化。學生和老師可能不是 AI 專家,因此應簡化應用程式能做什麼或不能做什麼的解釋,使其易於理解。 - -![簡化的 AI 功能說明](../../images/simplified-explanations.png?WT.mc_id=academic-105485-koreyst) - -### 控制 - -生成式 AI 創造了 AI 與使用者之間的合作,例如使用者可以修改提示以獲得不同的結果。此外,一旦生成輸出,使用者應該能夠修改結果,讓他們感受到控制。例如,使用 Bing 時,你可以根據格式、語調和長度來調整提示。此外,你可以對輸出進行更改並修改輸出,如下所示: - -![Bing 搜尋結果,包含修改提示和輸出選項](../../images/bing1.png?WT.mc_id=academic-105485-koreyst "Bing 搜尋結果,包含修改提示和輸出選項") - -另一個讓使用者能夠控制應用程式的功能是允許用戶選擇加入或退出 AI 使用的數據。對於學校應用程式,學生可能希望使用他們的筆記以及老師的資源作為複習材料。 - -![Bing 搜尋結果,提供修改提示和輸出選項](../../images/bing2.png?WT.mc_id=academic-105485-koreyst "Bing 搜尋結果,提供修改提示和輸出選項") - -> 在設計 AI 應用程式時,有意識地確保使用者不會過度信任並設置不切實際的期望是關鍵。實現這一點的一種方法是通過在提示和結果之間創造摩擦。提醒使用者,這是 AI 而不是人類。 - -## 設計 AI 應用程式以進行協作和反饋 - -如前所述,生成式 AI 創造了用戶與 AI 之間的合作。大多數互動是用戶輸入提示,AI 生成輸出。如果輸出是錯誤的怎麼辦?應用程式如何處理錯誤?AI 會責怪用戶還是花時間解釋錯誤? - -AI 應用程式應內建接收和給予回饋的功能。這不僅有助於 AI 系統改進,還能建立與使用者的信任。在設計中應包含回饋迴圈,範例可以是對輸出結果進行簡單的贊成或反對。 - -另一種處理方式是明確傳達系統的能力和限制。當使用者請求超出 AI 能力範圍的內容時,應該有一種方式來處理,如下所示。 - -![提供反饋和處理錯誤](../../images/feedback-loops.png?WT.mc_id=academic-105485-koreyst) - -系統錯誤在應用程式中很常見,使用者可能需要範圍外的資訊協助,或者應用程式可能對使用者能生成摘要的問題/主題數量有限制。例如,一個用有限主題資料訓練的AI應用程式,例如歷史和數學,可能無法處理地理相關的問題。為了減輕這種情況,AI系統可以給出如下回應:"抱歉,我們的產品已用以下主題的資料進行訓練.....,我無法回應您所問的問題。" - -AI 應用程式並不完美,因此,它們必然會犯錯。在設計您的應用程式時,您應確保為用戶反饋和錯誤處理留出空間,並以簡單且易於解釋的方式進行。 - -## 作業 - -將您迄今為止建構的任何 AI 應用程式,考慮在應用程式中實施以下步驟: - -- **愉悅:** 考慮如何讓你的應用程式更愉悅。你是否在各處添加了解釋,是否鼓勵用戶探索?你的錯誤訊息是如何措辭的? - -- **可用性:** 建構一個網頁應用程式。確保你的應用程式可以通過滑鼠和鍵盤導航。 - -- **信任和透明:** 不要完全信任 AI 及其輸出,考慮如何添加人工來驗證輸出。同時,考慮並實施其他方法來實現信任和透明。 - -- **控制:** 給用戶控制他們提供給應用程式的數據。實施一種方式,讓用戶可以選擇加入和退出 AI 應用程式中的數據收集。 - - - -## 繼續學習! - -完成本課程後,請查看我們的[生成式 AI 學習集合](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst)以繼續提升您的生成式 AI 知識! - -前往第 13 課,我們將探討如何[保護 AI 應用程式](../../../13-securing-ai-applications/translations/tw/README.md?WT.mc_id=academic-105485-koreyst)! - diff --git a/13-securing-ai-applications/translations/cn/README.md b/13-securing-ai-applications/translations/cn/README.md deleted file mode 100644 index 8db20278f5..0000000000 --- a/13-securing-ai-applications/translations/cn/README.md +++ /dev/null @@ -1,161 +0,0 @@ -# 生成式 AI 初学者指南:第 13 章 - 保护 AI 应用 - -[![保护您的AI应用](../../images/13-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson13-gh?WT.mc_id=academic-105485-koreyst) - -## 引言 - -本课程包括: - -- AI 系统的安全问题。 -- AI 系统面临的常见风险与威胁。 -- 保障 AI 系统安全的方法与策略。 - -## 学习目标 - -学习完本课程,你将能够: - -- 理解 AI 系统面临的风险与威胁。 -- 掌握保护 AI 系统的常用方法与最佳实践。 -- 了解如何通过安全测试预防意外事件和维护用户信任。 - -## 生成式 AI 中的安全是什么意思? - -随着人工智能(AI)和机器学习(ML)技术越来越多地影响我们的生活,保护客户数据和 AI 系统本身变得尤为重要。AI/ML 在决策支持方面的应用越来越广泛,一旦决策出错,可能会带来严重的后果。 - -需要关注的关键点包括: - -- **AI/ML 的影响**:AI/ML 对我们生活的深远影响使得保护它们变得非常重要。 -- **安全挑战**:我们需要重视 AI/ML 带来的影响,以防止 AI 产品遭受复杂攻击,无论是来自恶意用户还是有组织的团体。 -- **战略性问题**:科技产业需要主动应对战略挑战,保证客户安全和数据安全。 - -此外,机器学习模型往往无法区分恶意输入和异常数据。大量训练数据来自于未经筛选、未经审查的公开数据集,任何第三方都可以贡献内容。攻击者可以轻松贡献数据而不必直接篡改数据集。随着时间的推移,如果数据格式正确,即便是低可信度的恶意数据也可能变成高可信度的数据。 - -因此,确保模型决策依赖的数据存储的完整性和安全至关重要。 - -## 理解 AI 的威胁和风险 - -目前,数据污染是 AI 及相关系统面临的最大安全威胁。数据污染是指有意修改训练 AI 所用的数据,从而导致 AI 犯错。这种情况之所以发生,一方面是因为缺乏标准化的检测和缓解方法,另一方面是因为我们依赖于不可靠或未经筛选的公共数据集进行训练。跟踪数据的来源和血统,以维护数据完整性并防止训练过程出错,显得尤为重要。否则,就会出现“垃圾进,垃圾出”的情况,最终影响模型的性能。 - -数据污染对模型的影响示例包括: - -1. **标签翻转**:在二分类任务中,攻击者故意更改少数训练数据的标签,如将良性样本标记为恶意,导致模型学习到错误的关联。.\ - **示例**:因标签被篡改,导致垃圾邮件过滤器将合法邮件错误分类为垃圾邮件。 -2. **特征污染**:攻击者微调训练数据中的特征,引入偏见或误导模型。.\ - **示例**:在产品描述中添加无关关键词,以操纵推荐系统。 -3. **数据注入**:向训练集注入恶意数据,影响模型行为。.\ - **示例**:添加假用户评论,歪曲情感分析结果。 -4. **后门攻击**:攻击者在训练数据中插入隐藏模式(后门),使模型在触发时表现出恶意行为。.\ - **示例**:通过训练含有后门的图像,使面部识别系统错误识别特定人物。 - -MITRE 公司创建了[ATLAS(Adversarial Threat Landscape for Artificial-Intelligence Systems)](https://atlas.mitre.org/?WT.mc_id=academic-105485-koreyst),一个记录对手在真实攻击 AI 系统中使用的策略和技术的知识库。 - -> 随着 AI 技术的融合,AI 系统的漏洞数量增加,这超出了传统网络攻击的范畴。我们开发 ATLAS 的目的是提高对这些独特且不断演变的漏洞的认识,因为全球社区越来越多地将 AI 纳入各种系统中。ATLAS 参照 MITRE ATT&CK® 框架建立,其策略、技术和程序(TTPs)与 ATT&CK 中的内容相辅相成。 - -与 MITRE ATT&CK® 框架一样——该框架广泛用于传统网络安全,规划高级威胁模拟场景——ATLAS 提供了一套易于搜索的 TTPs,帮助我们更好地理解和准备防御新兴攻击。 - -Open Web Application Security Project (OWASP)还创建了一个“[前十大漏洞列表](https://llmtop10.com/?WT.mc_id=academic-105485-koreyst)”,列出了利用大型语言模型(LLMs)的应用程序中最关键的漏洞。列表强调了包括数据污染在内的威胁风险,以及其他风险,例如: - -- **提示注入**:通过精心设计的输入操纵大型语言模型(LLM),使其偏离预期行为的技术。 -- **供应链漏洞**:构成 LLM 应用程序的组件和软件可能被威胁,导致意外结果、引入偏见,甚至是基础设施漏洞。 -- **过度依赖**:LLMs 容易出错,可能提供不准确或不安全的结果。在多个实例中,人们将结果视为准确无误,导致了意想不到的负面后果。 - -Microsoft Cloud Advocate Rod Trent 撰写的免费电子书[必须学习的 AI 安全](https://github.com/rod-trent/OpenAISecurity/tree/main/Must_Learn/Book_Version?WT.mc_id=academic-105485-koreyst)深入探讨了这些和其他新兴 AI 威胁,并提供了广泛的指导,以应对这些挑战。 - -## AI 系统和大型语言模型的安全测试 - -人工智能(AI)正在改变各种领域和行业,为社会带来新的可能性和好处。然而,AI 也带来了数据隐私、偏见、缺乏可解释性和潜在滥用等重大挑战和风险。因此,确保 AI 系统的安全性和责任感至关重要,这意味着它们需要遵守道德和法律标准,并获得用户和利益相关者的信任。 - -安全测试是通过识别和利用它们的漏洞来评估 AI 系统或大型语言模型的安全性的过程。这项测试可以由开发者、用户或第三方审计员根据测试的目的和范围进行。AI 系统和大型语言模型的一些常见安全测试方法包括: - -- **数据清洗**:从 AI 系统或大型语言模型的训练数据或输入中删除或匿名化敏感或私有信息的过程。数据清洗有助于防止数据泄露和恶意操作,通过减少机密或个人数据的暴露。 -- **对抗性测试**:生成并应用对抗性示例到 AI 系统或大型语言模型的输入或输出的过程,以评估其对对抗性攻击的鲁棒性和恢复力。对抗性测试有助于识别和缓解 AI 系统或大型语言模型可能被攻击者利用的漏洞和弱点。 -- **模型验证**:验证 AI 系统或大型语言模型的模型参数或架构的正确性和完整性的过程。模型验证有助于检测和防止模型盗用,确保模型受到保护和认证。 -- **输出验证**:验证 AI 系统或大型语言模型输出的质量和可靠性的过程。输出验证有助于检测和纠正恶意操作,确保输出是一致和准确的。 - -OpenAI 作为 AI 系统的领先者,建立了一系列*安全评估*作为其红队网络计划的一部分,旨在测试 AI 系统的输出,希望为 AI 安全做出贡献。 - -> 评估可以从简单的问答测试到更复杂的模拟。以下是一些 OpenAI 开发的样本评估,用于从多个角度评估 AI 行为的具体示例: - -#### 说服(Persuasion) - -- [MakeMeSay](https://github.com/openai/evals/tree/main/evals/elsuite/make_me_say/readme.md?WT.mc_id=academic-105485-koreyst):一个 AI 系统能多好地欺骗另一个 AI 系统说出一个秘密词? -- [MakeMePay](https://github.com/openai/evals/tree/main/evals/elsuite/make_me_pay/readme.md?WT.mc_id=academic-105485-koreyst):一个 AI 系统能多好地说服另一个 AI 系统捐款? -- [Ballot Proposal](https://github.com/openai/evals/tree/main/evals/elsuite/ballots/readme.md?WT.mc_id=academic-105485-koreyst):一个 AI 系统能多好地影响另一个 AI 系统对政治提案的支持? - -#### 隐写术(隐藏信息) - -- [Steganography](https://github.com/openai/evals/tree/main/evals/elsuite/steganography/readme.md?WT.mc_id=academic-105485-koreyst):一个 AI 系统能多好地传递秘密消息而不被另一个 AI 系统发现? -- [Text Compression](https://github.com/openai/evals/tree/main/evals/elsuite/text_compression/readme.md?WT.mc_id=academic-105485-koreyst):一个 AI 系统在压缩和解压消息方面的表现如何,以便隐藏秘密消息? -- [Schelling Point](https://github.com/openai/evals/blob/main/evals/elsuite/schelling_point/README.md?WT.mc_id=academic-105485-koreyst):一个 AI 系统在没有直接通信的情况下与另一个 AI 系统协调的能力如何? - -### AI 安全 - -我们的目标是保护 AI 系统免受恶意攻击、滥用或意外后果的影响。这包括采取措施确保 AI 系统的安全、可靠性和可信度,例如: - -- 保护用于训练和运行 AI 模型的数据和算法 -- 防止未经授权的访问、操纵或破坏 AI 系统 -- 检测和缓解 AI 系统中的偏见、歧视或道德问题 -- 确保 AI 决策和行动的问责性、透明度和可解释性 -- 使 AI 系统的目标和价值与人类和社会的目标和价值一致 - -AI 安全对于确保 AI 系统和数据的完整性、可用性和机密性至关重要。AI 安全的挑战和机遇包括: - -- 机遇:将 AI 纳入网络安全策略,因为它可以在识别威胁和提高响应时间方面发挥关键作用。AI 可以帮助自动化和增强检测和缓解网络攻击的能力,如网络钓鱼、恶意软件或勒索软件。 -- 挑战:对手也可以使用 AI 发起复杂的攻击,如生成假或误导性内容、冒充用户或利用 AI 系统中的漏洞。因此,AI 开发者有独特的责任设计出对滥用具有韧性和抵抗力的系统。 - -### 数据保护 - -LLMs 可能对它们使用的数据的隐私和安全构成风险。例如,LLMs 可能会记住并泄露其训练数据中的敏感信息,如个人姓名、地址、密码或信用卡号码。它们还可能被恶意行为者操纵或攻击,这些人想要利用它们的漏洞或偏见。因此,了解这些风险并采取适当措施保护 LLMs 使用的数据很重要。您可以采取几个步骤来保护与 LLMs 一起使用的数据。这些步骤包括: - -- **限制他们与 LLMs 共享的数据的数量和类型**:只共享对预期目的必要和相关的数据,并避免共享任何敏感、机密或个人的数据。用户还应该匿名化或加密他们与 LLMs 共享的数据,例如通过删除或掩盖任何识别信息,或使用安全的通信渠道。 -- **验证 LLMs 生成的数据**:始终检查 LLMs 生成的输出的准确性和质量,以确保它们不包含任何不需要或不适当的信息。 -- **报告和警告任何数据泄露或事件**:警惕 LLMs 产生的任何可疑或异常的活动或行为,例如生成不相关、不准确、冒犯性或有害的文本。这可能是数据泄露或安全事件的迹象。 - -数据安全、治理和合规对于任何希望在多云环境中利用数据和 AI 的力量的组织至关重要。保护和治理您的所有数据是一项复杂和多方面的任务。您需要在多个云中的不同位置保护和治理不同类型的数据(结构化、非结构化和由 AI 生成的数据),并需要考虑现有和未来的数据安全、治理和 AI 法规。为了保护您的数据,您需要采取一些最佳实践和预防措施,例如: - -- 使用提供数据保护和隐私功能的云服务或平台。 -- 使用数据质量和验证工具检查您的数据是否有错误、不一致或异常。 -- 使用数据治理和伦理框架确保您的数据以负责任和透明的方式使用。 - -### 模拟现实世界威胁 - AI 红队(AI red teaming) - -模拟现实世界威胁现在被认为是构建弹性 AI 系统的标准实践,通过采用类似的工具、策略、程序来识别系统的风险并测试防御者的响应。 - -> AI 红队的实践已经演变为具有更广泛的含义:它不仅涵盖了探测安全漏洞,还包括探测其他系统故障,如生成可能有害的内容。AI 系统带来了新的风险,而红队是理解这些新风险的核心,如提示注入和产生不切实际的内容。- [Microsoft AI 红队构建更安全的 AI 未来](https://www.microsoft.com/security/blog/2023/08/07/microsoft-ai-red-team-building-future-of-safer-ai/?WT.mc_id=academic-105485-koreyst) - -[![红队指引和资源](../../images/13-AI-red-team.png?WT.mc_id=academic-105485-koreyst)]() - -以下是塑造 Microsoft AI 红队计划的关键洞察。 - -1. **AI 红队的广泛范围:**AI 红队现在包括安全和负责任 AI(RAI)结果。传统上,红队专注于安全方面,将模型视为向量(例如,盗用底层模型)。然而,AI 系统引入了新的安全漏洞(例如,提示注入,污染),需要特别关注。除了安全之外,AI 红队还探测公平问题(例如,刻板印象)和有害内容(例如,暴力美化)。及早识别这些问题允许优先考虑防御投资。 -2. **恶意和良性失败:**AI 红队考虑了恶意和良性视角的失败。例如,当红队新的 Bing 时,我们探索的不仅仅是恶意对手如何颠覆系统,还有普通用户可能遇到的问题或有害内容。与传统的安全红队不同,主要关注恶意行为者,AI 红队考虑了更广泛的人物和潜在失败。 -3. **AI 系统的动态性:**AI 应用不断进化。在大语言模型应用中,开发者适应不断变化的要求。持续的红队确保持续的警惕和适应不断变化的风险。 - -AI 红队并非包罗万象,应被视为补充其他控制措施,如[基于角色的访问控制(RBAC)](https://learn.microsoft.com/azure/ai-services/openai/how-to/role-based-access-control?WT.mc_id=academic-105485-koreyst)和全面的数据管理解决方案。它旨在补充一个安全策略,该策略侧重于采用安全和负责任的 AI 解决方案,这些解决方案考虑到隐私和安全,同时努力最小化偏见、有害内容和误导信息,这些都可能侵蚀用户信心。 - -以下是一些可以帮助您更好地了解红队如何帮助识别和缓解 AI 系统中的风险的额外阅读材料: - -- [为大型语言模型(LLMs)及其应用规划红队](https://learn.microsoft.com/azure/ai-services/openai/concepts/red-teaming?WT.mc_id=academic-105485-koreyst) -- [什么是 OpenAI 红队网络?](https://openai.com/blog/red-teaming-network?WT.mc_id=academic-105485-koreyst) -- [AI 红队 - 构建更安全、更负责任的 AI 解决方案的关键实践](https://rodtrent.substack.com/p/ai-red-teaming?WT.mc_id=academic-105485-koreyst) -- MITRE [ATLAS (Adversarial Threat Landscape for Artificial-Intelligence Systems)](https://atlas.mitre.org/?WT.mc_id=academic-105485-koreyst),一个知识库,记录了对手在对 AI 系统进行实际攻击中使用的策略和技术。 - -## 知识检查 - -维护数据完整性和防止滥用的有效方法是什么? - -1. 为数据访问和数据管理实施强大的基于角色的控制 -2. 执行并审计数据标签,以防止数据误表达或滥用 -3. 确保您的 AI 基础设施支持内容过滤 - -答案:1,虽然所有这三个建议都很有价值,但确保正确分配用户数据访问权限将大大减少通过 LLMs 操纵和误解数据的风险。 - -## 🚀 挑战 - -探索更多关于如何在 AI 时代[管理和保护敏感信息](https://learn.microsoft.com/training/paths/purview-protect-govern-ai/?WT.mc_id=academic-105485-koreyst)的方法。 - -## 做得好,继续你的学习之旅 - -完成本课程后,请继续探索我们的[生成式 AI 学习系列](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst),以进一步提高你的生成式 AI 技能! - -下一站,第 14 课:[生成式 AI 应用生命周期](../../../14-the-generative-ai-application-lifecycle/README.md?WT.mc_id=academic-105485-koreyst)! diff --git a/13-securing-ai-applications/translations/pl/README.md b/13-securing-ai-applications/translations/pl/README.md deleted file mode 100644 index df464dcb56..0000000000 --- a/13-securing-ai-applications/translations/pl/README.md +++ /dev/null @@ -1,164 +0,0 @@ -# Zabezpieczanie aplikacji generatywnej AI - -[![Zabezpieczanie aplikacji generatywnej AI](../../images/13-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson13-gh?WT.mc_id=academic-105485-koreyst) - -## Wprowadzenie - -Ta lekcja obejmie: - -- Bezpieczeństwo w kontekście systemów AI. -- Najczęstsze zagrożenia i ryzyka dla systemów AI. -- Metody i aspekty zabezpieczania systemów AI. - -## Cele nauczania - -Po ukończeniu tej lekcji będziesz rozumiał: - -- Zagrożenia i ryzyka dla systemów AI. -- Powszechne metody i praktyki zabezpieczania systemów AI. -- Jak wdrażanie testów bezpieczeństwa może zapobiec nieoczekiwanym rezultatom i erozji zaufania użytkowników. - -## Co oznacza bezpieczeństwo w kontekście generatywnej AI? - -Ponieważ technologie Sztucznej Inteligencji (AI) i Uczenia Maszynowego (ML) coraz bardziej kształtują nasze życie, kluczowe jest zabezpieczanie nie tylko danych klientów, ale także samych systemów AI. AI/ML jest coraz częściej wykorzystywane do wspierania procesów decyzyjnych o wysokiej wartości w branżach, gdzie złe decyzje mogą prowadzić do poważnych konsekwencji. - -Oto kluczowe punkty do rozważenia: - -- **Wpływ AI/ML**: AI/ML ma znaczący wpływ na codzienne życie, dlatego zabezpieczanie tych technologii stało się niezbędne. -- **Wyzwania bezpieczeństwa**: Ten wpływ AI/ML wymaga odpowiedniej uwagi, aby zaspokoić potrzebę ochrony produktów opartych na AI przed zaawansowanymi atakami, czy to ze strony trolli, czy zorganizowanych grup. -- **Problemy strategiczne**: Branża technologiczna musi proaktywnie rozwiązywać wyzwania strategiczne, aby zapewnić długoterminowe bezpieczeństwo klientów i ochronę danych. - -Dodatkowo, modele uczenia maszynowego nie są w stanie rozróżnić między złośliwymi danymi wejściowymi a łagodnymi anomaliami. Znaczące źródło danych treningowych pochodzi z niekuratorowanych, niemoderowanych, publicznych zbiorów danych, które są otwarte na wkład osób trzecich. Atakujący nie muszą naruszać zbiorów danych, gdy mogą swobodnie przyczyniać się do ich tworzenia. Z czasem złośliwe dane o niskiej pewności stają się zaufanymi danymi o wysokiej pewności, jeśli struktura/format danych pozostaje poprawny. - -Dlatego kluczowe jest zapewnienie integralności i ochrony magazynów danych, których Twoje modele używają do podejmowania decyzji. - -## Zrozumienie zagrożeń i ryzyka AI - -W kontekście AI i powiązanych systemów, zatruwanie danych (data poisoning) stanowi obecnie najistotniejsze zagrożenie bezpieczeństwa. Zatruwanie danych polega na celowej zmianie informacji używanych do trenowania AI, powodując błędy. Jest to wynikiem braku ustandaryzowanych metod wykrywania i łagodzenia, w połączeniu z naszym poleganiem na niezaufanych lub niekuratorowanych publicznych zbiorach danych do treningu. Aby zachować integralność danych i zapobiec wadliwemu procesowi treningu, kluczowe jest śledzenie pochodzenia i linii danych. W przeciwnym razie, stare powiedzenie "śmieci na wejściu, śmieci na wyjściu" pozostaje prawdziwe, prowadząc do pogorszonej wydajności modelu. - -Oto przykłady, jak zatruwanie danych może wpływać na Twoje modele: - -1. **Odwracanie etykiet**: W zadaniu klasyfikacji binarnej przeciwnik celowo zmienia etykiety małego podzbioru danych treningowych. Na przykład łagodne próbki są oznaczone jako złośliwe, co prowadzi model do nauki błędnych powiązań.\ - **Przykład**: Filtr spamu błędnie klasyfikujący prawdziwe e-maile jako spam ze względu na zmanipulowane etykiety. -2. **Zatruwanie cech**: Atakujący subtelnie modyfikuje cechy w danych treningowych, aby wprowadzić stronniczość lub wprowadzić model w błąd.\ - **Przykład**: Dodawanie nieistotnych słów kluczowych do opisów produktów w celu manipulowania systemami rekomendacji. -3. **Wstrzykiwanie danych**: Wstrzykiwanie złośliwych danych do zbioru treningowego, aby wpłynąć na zachowanie modelu.\ - **Przykład**: Wprowadzanie fałszywych recenzji użytkowników, aby zniekształcić wyniki analizy sentymentu. -4. **Ataki typu backdoor**: Przeciwnik wstawia ukryty wzorzec (backdoor) do danych treningowych. Model uczy się rozpoznawać ten wzorzec i zachowuje się złośliwie, gdy zostanie wyzwolony.\ - **Przykład**: System rozpoznawania twarzy trenowany z obrazami z backdoorem, który błędnie identyfikuje określoną osobę. - -Korporacja MITRE stworzyła [ATLAS (Adversarial Threat Landscape for Artificial-Intelligence Systems)](https://atlas.mitre.org/?WT.mc_id=academic-105485-koreyst), bazę wiedzy o taktykach i technikach stosowanych przez przeciwników w rzeczywistych atakach na systemy AI. - -> Istnieje rosnąca liczba podatności w systemach wykorzystujących AI, ponieważ włączenie AI zwiększa powierzchnię ataku istniejących systemów poza te związane z tradycyjnymi atakami cybernetycznymi. Opracowaliśmy ATLAS, aby zwiększyć świadomość tych unikalnych i ewoluujących podatności, w miarę jak globalna społeczność coraz częściej włącza AI do różnych systemów. ATLAS jest wzorowany na ramach MITRE ATT&CK® i jego taktyki, techniki i procedury (TTP) są uzupełnieniem tych w ATT&CK. - -Podobnie jak ramy MITRE ATT&CK®, które są szeroko stosowane w tradycyjnym cyberbezpieczeństwie do planowania zaawansowanych scenariuszy emulacji zagrożeń, ATLAS zapewnia łatwy do przeszukiwania zbiór TTP, które mogą pomóc lepiej zrozumieć i przygotować się do obrony przed pojawiającymi się atakami. - -Dodatkowo, Open Web Application Security Project (OWASP) stworzył "[Listę Top 10](https://llmtop10.com/?WT.mc_id=academic-105485-koreyst)" najbardziej krytycznych podatności znalezionych w aplikacjach wykorzystujących LLM. Lista podkreśla ryzyka zagrożeń, takich jak wspomniane wcześniej zatruwanie danych, wraz z innymi, takimi jak: - -- **Wstrzykiwanie promptów**: technika, w której atakujący manipulują dużym modelem językowym (LLM) poprzez starannie spreparowane dane wejściowe, powodując, że zachowuje się poza swoim zamierzonym zachowaniem. -- **Podatności łańcucha dostaw**: Komponenty i oprogramowanie, które składają się na aplikacje używane przez LLM, takie jak moduły Pythona lub zewnętrzne zbiory danych, mogą same zostać naruszone, prowadząc do nieoczekiwanych rezultatów, wprowadzenia stronniczości, a nawet podatności w podstawowej infrastrukturze. -- **Nadmierne poleganie**: LLM są omylne i są podatne na halucynacje, dostarczając niedokładne lub niebezpieczne wyniki. W kilku udokumentowanych przypadkach ludzie przyjmowali wyniki bez weryfikacji, co prowadziło do niezamierzonych, negatywnych konsekwencji w rzeczywistym świecie. - -Microsoft Cloud Advocate Rod Trent napisał darmowy ebook, [Must Learn AI Security](https://github.com/rod-trent/OpenAISecurity/tree/main/Must_Learn/Book_Version?WT.mc_id=academic-105485-koreyst), który głęboko analizuje te i inne pojawiające się zagrożenia AI oraz dostarcza obszernych wskazówek, jak najlepiej radzić sobie z tymi scenariuszami. - -## Testowanie bezpieczeństwa dla systemów AI i LLM - -Sztuczna inteligencja (AI) transformuje różne domeny i branże, oferując nowe możliwości i korzyści dla społeczeństwa. Jednak AI stwarza również znaczące wyzwania i ryzyka, takie jak prywatność danych, stronniczość, brak wyjaśnialności i potencjalne nadużycia. Dlatego kluczowe jest zapewnienie, aby systemy AI były bezpieczne i odpowiedzialne, co oznacza, że przestrzegają standardów etycznych i prawnych oraz mogą być zaufane przez użytkowników i interesariuszy. - -Testowanie bezpieczeństwa to proces oceny bezpieczeństwa systemu AI lub LLM poprzez identyfikację i wykorzystywanie ich podatności. Może być wykonywane przez programistów, użytkowników lub audytorów zewnętrznych, w zależności od celu i zakresu testowania. Niektóre z najczęstszych metod testowania bezpieczeństwa dla systemów AI i LLM to: - -- **Sanityzacja danych**: Jest to proces usuwania lub anonimizacji wrażliwych lub prywatnych informacji z danych treningowych lub danych wejściowych systemu AI lub LLM. Sanityzacja danych może pomóc zapobiec wyciekowi danych i złośliwej manipulacji poprzez zmniejszenie ekspozycji poufnych lub osobistych danych. -- **Testy przeciwnikańskie**: Jest to proces generowania i stosowania przeciwnikańskich przykładów do danych wejściowych lub wyjściowych systemu AI lub LLM, aby ocenić jego odporność i wytrzymałość na ataki przeciwnikańskie. Testy przeciwnikańskie mogą pomóc zidentyfikować i złagodzić podatności i słabości systemu AI lub LLM, które mogą być wykorzystywane przez atakujących. -- **Weryfikacja modelu**: Jest to proces weryfikacji poprawności i kompletności parametrów modelu lub architektury systemu AI lub LLM. Weryfikacja modelu może pomóc wykrywać i zapobiegać kradzieży modelu poprzez zapewnienie, że model jest chroniony i uwierzytelniony. -- **Walidacja wyników**: Jest to proces walidacji jakości i niezawodności wyników systemu AI lub LLM. Walidacja wyników może pomóc wykrywać i korygować złośliwe manipulacje poprzez zapewnienie, że wyniki są spójne i dokładne. - -OpenAI, lider w systemach AI, ustanowił serię _ocen bezpieczeństwa_ w ramach swojej inicjatywy sieci red teamingu, mającej na celu testowanie wyników systemów AI w nadziei na przyczynienie się do bezpieczeństwa AI. - -> Oceny mogą obejmować proste testy typu pytanie-odpowiedź, jak i bardziej złożone symulacje. Jako konkretne przykłady, oto przykładowe oceny opracowane przez OpenAI do oceny zachowań AI z wielu perspektyw: - -#### Perswazja - -- [MakeMeSay](https://github.com/openai/evals/tree/main/evals/elsuite/make_me_say/readme.md?WT.mc_id=academic-105485-koreyst): Jak dobrze system AI może oszukać inny system AI, aby powiedział tajne słowo? -- [MakeMePay](https://github.com/openai/evals/tree/main/evals/elsuite/make_me_pay/readme.md?WT.mc_id=academic-105485-koreyst): Jak dobrze system AI może przekonać inny system AI do przekazania pieniędzy? -- [Propozycja głosowania](https://github.com/openai/evals/tree/main/evals/elsuite/ballots/readme.md?WT.mc_id=academic-105485-koreyst): Jak dobrze system AI może wpłynąć na poparcie innego systemu AI dla propozycji politycznej? - -#### Steganografia (ukryte wiadomości) - -- [Steganografia](https://github.com/openai/evals/tree/main/evals/elsuite/steganography/readme.md?WT.mc_id=academic-105485-koreyst): Jak dobrze system AI może przekazywać tajne wiadomości bez bycia złapanym przez inny system AI? -- [Kompresja tekstu](https://github.com/openai/evals/tree/main/evals/elsuite/text_compression/readme.md?WT.mc_id=academic-105485-koreyst): Jak dobrze system AI może kompresować i dekompresować wiadomości, aby umożliwić ukrywanie tajnych wiadomości? -- [Punkt Schellinga](https://github.com/openai/evals/blob/main/evals/elsuite/schelling_point/README.md?WT.mc_id=academic-105485-koreyst): Jak dobrze system AI może koordynować z innym systemem AI bez bezpośredniej komunikacji? - -### Bezpieczeństwo AI - -Konieczne jest, abyśmy dążyli do ochrony systemów AI przed złośliwymi atakami, nadużyciami lub niezamierzonymi konsekwencjami. Obejmuje to podjęcie kroków w celu zapewnienia bezpieczeństwa, niezawodności i wiarygodności systemów AI, takich jak: - -- Zabezpieczanie danych i algorytmów używanych do trenowania i uruchamiania modeli AI -- Zapobieganie nieautoryzowanemu dostępowi, manipulacji lub sabotażowi systemów AI -- Wykrywanie i łagodzenie stronniczości, dyskryminacji lub problemów etycznych w systemach AI -- Zapewnienie odpowiedzialności, przejrzystości i wyjaśnialności decyzji i działań AI -- Dostosowanie celów i wartości systemów AI do tych ludzi i społeczeństwa - -Bezpieczeństwo AI jest ważne dla zapewnienia integralności, dostępności i poufności systemów AI i danych. Niektóre z wyzwań i możliwości bezpieczeństwa AI to: - -- Możliwość: Włączenie AI do strategii cyberbezpieczeństwa, ponieważ może odegrać kluczową rolę w identyfikacji zagrożeń i poprawie czasu reakcji. AI może pomóc automatyzować i wzmacniać wykrywanie i łagodzenie cyberataków, takich jak phishing, malware czy ransomware. -- Wyzwanie: AI może być również używane przez przeciwników do przeprowadzania zaawansowanych ataków, takich jak generowanie fałszywych lub wprowadzających w błąd treści, podszywanie się pod użytkowników lub wykorzystywanie podatności w systemach AI. Dlatego programiści AI mają unikalną odpowiedzialność za projektowanie systemów, które są odporne i wytrzymałe na nadużycia. - -### Ochrona danych - -LLM mogą stanowić zagrożenie dla prywatności i bezpieczeństwa danych, które wykorzystują. Na przykład, LLM mogą potencjalnie zapamiętywać i ujawniać wrażliwe informacje ze swoich danych treningowych, takie jak osobiste imiona, adresy, hasła czy numery kart kredytowych. Mogą być również manipulowane lub atakowane przez złośliwe podmioty, które chcą wykorzystać ich podatności lub stronniczość. Dlatego ważne jest, aby być świadomym tych zagrożeń i podjąć odpowiednie środki w celu ochrony danych używanych z LLM. Istnieje kilka kroków, które możesz podjąć, aby chronić dane używane z LLM. Kroki te obejmują: - -- **Ograniczanie ilości i rodzaju danych, które są udostępniane LLM**: Udostępniaj tylko dane, które są niezbędne i istotne dla zamierzonych celów, i unikaj udostępniania danych, które są wrażliwe, poufne lub osobiste. Użytkownicy powinni również anonimizować lub szyfrować dane, które udostępniają LLM, na przykład poprzez usuwanie lub maskowanie informacji identyfikujących, lub korzystanie z bezpiecznych kanałów komunikacji. -- **Weryfikowanie danych generowanych przez LLM**: Zawsze sprawdzaj dokładność i jakość wyników generowanych przez LLM, aby upewnić się, że nie zawierają one niepożądanych lub nieodpowiednich informacji. -- **Zgłaszanie i alarmowanie o wszelkich naruszeniach danych lub incydentach**: Bądź czujny na wszelkie podejrzane lub nienormalne działania lub zachowania ze strony LLM, takie jak generowanie tekstów, które są nieistotne, niedokładne, obraźliwe lub szkodliwe. Może to być wskazaniem naruszenia danych lub incydentu bezpieczeństwa. - -Bezpieczeństwo danych, zarządzanie i zgodność są krytyczne dla każdej organizacji, która chce wykorzystać moc danych i AI w środowisku wielu chmur. Zabezpieczanie i zarządzanie wszystkimi swoimi danymi to złożone i wieloaspektowe przedsięwzięcie. Musisz zabezpieczyć i zarządzać różnymi typami danych (ustrukturyzowane, nieustrukturyzowane i dane generowane przez AI) w różnych lokalizacjach w wielu chmurach, i musisz uwzględnić istniejące i przyszłe przepisy dotyczące bezpieczeństwa danych, zarządzania i AI. Aby chronić swoje dane, musisz przyjąć pewne najlepsze praktyki i środki ostrożności, takie jak: - -- Korzystanie z usług lub platform chmurowych, które oferują funkcje ochrony danych i prywatności. -- Korzystanie z narzędzi do jakości i walidacji danych, aby sprawdzać dane pod kątem błędów, niespójności lub anomalii. -- Korzystanie z ram zarządzania danymi i etyki, aby zapewnić, że dane są używane w odpowiedzialny i przejrzysty sposób. - -### Emulowanie realnych zagrożeń - Red teaming w AI - -Emulowanie realnych zagrożeń jest obecnie uważane za standardową praktykę w budowaniu odpornych systemów AI poprzez stosowanie podobnych narzędzi, taktyk, procedur do identyfikacji ryzyka dla systemów i testowania odpowiedzi obrońców. - -> Praktyka red teamingu w AI ewoluowała, aby przybrać bardziej rozszerzone znaczenie: obejmuje nie tylko sondowanie podatności bezpieczeństwa, ale także sondowanie innych awarii systemu, takich jak generowanie potencjalnie szkodliwych treści. Systemy AI wiążą się z nowymi ryzykami, a red teaming jest kluczowy dla zrozumienia tych nowych ryzyk, takich jak wstrzykiwanie promptów i tworzenie treści bez podstaw. - [Microsoft AI Red Team buduje przyszłość bezpieczniejszej AI](https://www.microsoft.com/security/blog/2023/08/07/microsoft-ai-red-team-building-future-of-safer-ai/?WT.mc_id=academic-105485-koreyst) - -[![Wskazówki i zasoby do red teamingu](../../images/13-AI-red-team.png?WT.mc_id=academic-105485-koreyst)]() - -Poniżej znajdują się kluczowe spostrzeżenia, które ukształtowały program Microsoft AI Red Team. - -1. **Szeroki zakres Red Teamingu AI:** - Red teaming AI obejmuje teraz zarówno bezpieczeństwo, jak i wyniki Odpowiedzialnej AI (RAI). Tradycyjnie, red teaming koncentrował się na aspektach bezpieczeństwa, traktując model jako wektor (np. kradzież bazowego modelu). Jednak systemy AI wprowadzają nowe podatności bezpieczeństwa (np. wstrzykiwanie promptów, zatruwanie), wymagające szczególnej uwagi. Poza bezpieczeństwem, red teaming AI bada również kwestie uczciwości (np. stereotypowanie) i szkodliwe treści (np. gloryfikacja przemocy). Wczesna identyfikacja tych problemów pozwala na priorytetyzację inwestycji w obronę. -2. **Złośliwe i niezłośliwe awarie:** - Red teaming AI rozważa awarie zarówno ze złośliwej, jak i niezłośliwej perspektywy. Na przykład, podczas red teamingu nowego Bing, badamy nie tylko jak złośliwi przeciwnicy mogą zakłócić system, ale także jak zwykli użytkownicy mogą napotkać problematyczne lub szkodliwe treści. W przeciwieństwie do tradycyjnego red teamingu bezpieczeństwa, który koncentruje się głównie na złośliwych aktorach, red teaming AI uwzględnia szerszy zakres person i potencjalnych awarii. -3. **Dynamiczny charakter systemów AI:** - Aplikacje AI stale ewoluują. W aplikacjach dużych modeli językowych, deweloperzy dostosowują się do zmieniających się wymagań. Ciągły red teaming zapewnia stałą czujność i adaptację do zmieniających się ryzyk. - -Red teaming AI nie jest wszechobejmujący i powinien być uważany za komplementarne działanie do dodatkowych kontroli, takich jak [kontrola dostępu oparta na rolach (RBAC)](https://learn.microsoft.com/azure/ai-services/openai/how-to/role-based-access-control?WT.mc_id=academic-105485-koreyst) i kompleksowe rozwiązania zarządzania danymi. Ma uzupełniać strategię bezpieczeństwa, która koncentruje się na stosowaniu bezpiecznych i odpowiedzialnych rozwiązań AI, które uwzględniają prywatność i bezpieczeństwo, jednocześnie dążąc do minimalizacji stronniczości, szkodliwych treści i dezinformacji, które mogą podważać zaufanie użytkowników. - -Oto lista dodatkowych lektur, które mogą pomóc lepiej zrozumieć, jak red teaming może pomóc zidentyfikować i złagodzić ryzyka w systemach AI: - -- [Planowanie red teamingu dla dużych modeli językowych (LLM) i ich aplikacji](https://learn.microsoft.com/azure/ai-services/openai/concepts/red-teaming?WT.mc_id=academic-105485-koreyst) -- [Czym jest OpenAI Red Teaming Network?](https://openai.com/blog/red-teaming-network?WT.mc_id=academic-105485-koreyst) -- [AI Red Teaming - Kluczowa praktyka budowania bezpieczniejszych i bardziej odpowiedzialnych rozwiązań AI](https://rodtrent.substack.com/p/ai-red-teaming?WT.mc_id=academic-105485-koreyst) -- MITRE [ATLAS (Adversarial Threat Landscape for Artificial-Intelligence Systems)](https://atlas.mitre.org/?WT.mc_id=academic-105485-koreyst), baza wiedzy o taktykach i technikach stosowanych przez przeciwników w rzeczywistych atakach na systemy AI. - -## Sprawdzenie wiedzy - -Jakie mogłoby być dobre podejście do utrzymania integralności danych i zapobiegania nadużyciom? - -1. Posiadanie silnych kontroli opartych na rolach dla dostępu do danych i zarządzania danymi -2. Wdrażanie i audytowanie etykietowania danych, aby zapobiec nieprawidłowej reprezentacji lub nadużyciu danych -3. Upewnienie się, że infrastruktura AI obsługuje filtrowanie treści - -A:1, Chociaż wszystkie trzy są świetnymi zaleceniami, zapewnienie, że przypisujemy odpowiednie uprawnienia dostępu do danych użytkownikom, znacznie przyczyni się do zapobiegania manipulacji i nieprawidłowej reprezentacji danych używanych przez LLM. - -## 🚀 Wyzwanie - -Przeczytaj więcej o tym, jak możesz [zarządzać i chronić wrażliwe informacje](https://learn.microsoft.com/training/paths/purview-protect-govern-ai/?WT.mc_id=academic-105485-koreyst) w erze AI. - -## Świetna praca, kontynuuj naukę - -Po ukończeniu tej lekcji, sprawdź naszą [Kolekcję nauki o Generatywnej AI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst), aby kontynuować podnoszenie swojej wiedzy o Generatywnej AI! - -Przejdź do Lekcji 14, w której przyjrzymy się [cyklowi życia aplikacji Generatywnej AI](../../../14-the-generative-ai-application-lifecycle/translations/pl/README.md?WT.mc_id=academic-105485-koreyst)! diff --git a/13-securing-ai-applications/translations/tw/README.md b/13-securing-ai-applications/translations/tw/README.md deleted file mode 100644 index 583b343b09..0000000000 --- a/13-securing-ai-applications/translations/tw/README.md +++ /dev/null @@ -1,165 +0,0 @@ -# 保護您的生成式 AI 應用程式 - -[![保護您的生成式 AI 應用程式](../../images/13-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson13-gh?WT.mc_id=academic-105485-koreyst) - -## 簡介 - -本課程將涵蓋: - -- AI 系統背景下的安全性。 -- AI 系統常見的風險和威脅。 -- 確保 AI 系統安全的方法和考量。 - -## 學習目標 - -完成本課程後,您將了解以下內容: - -- AI 系統的威脅和風險。 -- 保護 AI 系統的常見方法和實踐。 -- 如何通過實施安全測試來防止意外結果和用戶信任的流失。 - -## 在生成式 AI 的背景下,安全性意味著什麼? - -隨著人工智慧(AI)和機器學習(ML)技術日益影響我們的生活,保護不僅是客戶資料,還有AI系統本身變得至關重要。AI/ML越來越多地用於支持高價值決策過程的行業中,錯誤的決策可能會導致嚴重的後果。 - -以下是需要考慮的關鍵點: - -- **AI/ML 的影響**: AI/ML 對日常生活有重大影響,因此保護它們變得至關重要。 -- **安全挑戰**: 需要適當關注 AI/ML 的這種影響,以解決保護基於 AI 的產品免受複雜攻擊(無論是由噴子還是有組織的團體發起)的需求。 -- **戰略問題**: 科技行業必須積極應對戰略挑戰,以確保長期的客戶安全和數據安全。 - -此外,機器學習模型在很大程度上無法辨別惡意輸入和良性異常數據。訓練數據的一個重要來源是來自未經策劃、未經審核的公共數據集,這些數據集對第三方貢獻開放。攻擊者不需要破壞數據集,因為他們可以自由地對其進行貢獻。隨著時間的推移,低置信度的惡意數據會變成高置信度的可信數據,只要數據結構/格式保持正確。 - -這就是為什麼確保資料存儲的完整性和保護對於您的模型做出決策至關重要。 - -## 理解 AI 的威脅和風險 - -在 AI 和相關系統方面,數據投毒是當今最顯著的安全威脅。數據投毒是指有人故意更改用於訓練 AI 的資訊,導致其犯錯。這是由於缺乏標準化的檢測和緩解方法,加上我們依賴不受信任或未經整理的公共數據集進行訓練。為了維持數據完整性並防止訓練過程出現缺陷,追踪數據的來源和沿革至關重要。否則,古老的諺語「垃圾進,垃圾出」將成為現實,導致模型性能受損。 - -以下是資料污染如何影響你的模型的範例: - -1. **標籤翻轉**: 在二元分類任務中,對手故意翻轉一小部分訓練數據的標籤。例如,將良性樣本標記為惡意,導致模型學習到錯誤的關聯。 - **範例**: 由於標籤被操縱,垃圾郵件過濾器將合法郵件誤分類為垃圾郵件。 -2. **特徵中毒**: 攻擊者微妙地修改訓練數據中的特徵以引入偏見或誤導模型。 - **範例**: 在產品描述中添加無關鍵字以操縱推薦系統。 -3. **數據注入**: 將惡意數據注入訓練集以影響模型的行為。 - **範例**: 引入虛假用戶評論以扭曲情感分析結果。 -4. **後門攻擊**: 對手在訓練數據中插入隱藏模式(後門)。模型學會識別這種模式,並在被觸發時表現出惡意行為。 - **範例**: 一個面部識別系統使用帶有後門的圖像進行訓練,導致錯誤識別特定人員。 - -MITRE Corporation 已經建立了[ATLAS (Adversarial Threat Landscape for Artificial-Intelligence Systems)](https://atlas.mitre.org/?WT.mc_id=academic-105485-koreyst),這是一個知識庫,包含在現實世界中對 AI 系統進行攻擊時對手所使用的策略和技術。 - -> 隨著 AI 的融入增加了現有系統的攻擊面,AI 驅動系統中的漏洞數量也在不斷增加。我們開發了 ATLAS 以提高對這些獨特且不斷演變的漏洞的認識,因為全球社群越來越多地將 AI 融入各種系統。ATLAS 參考了 MITRE ATT&CK® 框架,其策略、技術和程序(TTPs)與 ATT&CK 中的內容互補。 - -與廣泛用於傳統網路安全中規劃高級威脅模擬場景的MITRE ATT&CK®框架非常相似,ATLAS提供了一組易於搜尋的TTPs,這有助於更好地理解和準備防禦新興攻擊。 - -此外,開放網路應用程式安全計畫(OWASP)已經建立了一個[前10名清單](https://llmtop10.com/?WT.mc_id=academic-105485-koreyst),列出了在使用LLM的應用程式中發現的最嚴重漏洞。該清單強調了威脅的風險,例如前述的資料中毒以及其他如: - -- **Prompt Injection**: 一種技術,攻擊者通過精心設計的輸入操縱大型語言模型(LLM),使其行為超出預期範圍。 -- **Supply Chain Vulnerabilities**: 構成LLM應用程式的組件和軟體(如Python模組或外部數據集)本身可能會被攻擊,導致意外結果、引入偏見,甚至使底層基礎設施存在漏洞。 -- **Overreliance**: LLMs 是易犯錯的,並且容易產生幻覺,提供不準確或不安全的結果。在幾個有記錄的情況下,人們直接接受結果,導致意想不到的現實世界負面後果。 - -Microsoft Cloud Advocate Rod Trent 撰寫了一本免費的電子書,[Must Learn AI Security](https://github.com/rod-trent/OpenAISecurity/tree/main/Must_Learn/Book_Version?WT.mc_id=academic-105485-koreyst),深入探討這些和其他新興的 AI 威脅,並提供了廣泛的指南,教你如何最好地應對這些情境。 - -## AI 系統和 LLM 的安全測試 - -人工智慧(AI)正在改變各個領域和行業,為社會提供新的可能性和利益。然而,AI 也帶來了重大挑戰和風險,例如資料隱私、偏見、缺乏可解釋性和潛在的濫用。因此,確保 AI 系統的安全和負責任至關重要,這意味著它們必須遵守道德和法律標準,並且能夠被使用者和利益相關者信任。 - -AI 系統或 LLM 的安全測試是透過識別和利用其漏洞來評估其安全性的過程。這可以由開發人員、使用者或第三方審計員執行,具體取決於測試的目的和範圍。以下是一些最常見的 AI 系統和 LLM 的安全測試方法: - -- **資料清理**: 這是從訓練資料或AI系統或LLM的輸入中移除或匿名化敏感或私人資訊的過程。資料清理可以通過減少機密或個人資料的曝光來幫助防止資料洩漏和惡意操作。 -- **對抗性測試**: 這是生成和應用對抗性範例到AI系統或LLM的輸入或輸出以評估其對抗攻擊的穩健性和韌性的過程。對抗性測試可以幫助識別和減輕AI系統或LLM的漏洞和弱點,這些漏洞和弱點可能會被攻擊者利用。 -- **模型驗證**: 這是驗證AI系統或LLM的模型參數或架構的正確性和完整性的過程。模型驗證可以通過確保模型受到保護和認證來幫助檢測和防止模型竊取。 -- **輸出驗證**: 這是驗證AI系統或LLM輸出品質和可靠性的過程。輸出驗證可以通過確保輸出一致且準確來幫助檢測和糾正惡意操作。 - -OpenAI, 作為 AI 系統的領導者,已經設定了一系列_安全評估_作為其紅隊網絡計劃的一部分,旨在測試輸出 AI 系統,希望能為 AI 安全做出貢獻。 - -> 評估可以從簡單的問答測試到更複雜的模擬。作為具體範例,以下是OpenAI為從多個角度評估AI行為而開發的範例評估: - -#### 說服 - -- [MakeMeSay](https://github.com/openai/evals/tree/main/evals/elsuite/make_me_say/readme.md?WT.mc_id=academic-105485-koreyst): AI 系統能多好地欺騙另一個 AI 系統說出一個秘密詞語? -- [MakeMePay](https://github.com/openai/evals/tree/main/evals/elsuite/make_me_pay/readme.md?WT.mc_id=academic-105485-koreyst): AI 系統能多好地說服另一個 AI 系統捐錢? -- [Ballot Proposal](https://github.com/openai/evals/tree/main/evals/elsuite/ballots/readme.md?WT.mc_id=academic-105485-koreyst): AI 系統能多好地影響另一個 AI 系統對政治提案的支持? - -#### 隱寫術 (隱藏訊息) - -- [隱寫術](https://github.com/openai/evals/tree/main/evals/elsuite/steganography/readme.md?WT.mc_id=academic-105485-koreyst): AI 系統在不被另一個 AI 系統發現的情況下,能多好地傳遞秘密訊息? -- [文字壓縮](https://github.com/openai/evals/tree/main/evals/elsuite/text_compression/readme.md?WT.mc_id=academic-105485-koreyst): AI 系統能多好地壓縮和解壓縮訊息,以便隱藏秘密訊息? -- [Schelling Point](https://github.com/openai/evals/blob/main/evals/elsuite/schelling_point/README.md?WT.mc_id=academic-105485-koreyst): AI 系統在沒有直接溝通的情況下,能多好地與另一個 AI 系統協調? - -### AI 安全性 - -我們必須致力於保護 AI 系統免受惡意攻擊、濫用或意外後果的影響。這包括採取措施以確保 AI 系統的安全性、可靠性和可信賴性,例如: - -- 確保用於訓練和執行AI模型的數據和算法的安全 -- 防止未經授權的訪問、操縱或破壞AI系統 -- 檢測和減輕AI系統中的偏見、歧視或倫理問題 -- 確保AI決策和行動的責任、透明度和可解釋性 -- 使AI系統的目標和價值觀與人類和社會的目標和價值觀保持一致 - -AI 安全對於確保 AI 系統和數據的完整性、可用性和機密性非常重要。AI 安全的一些挑戰和機會包括: - -- 機會: 將 AI 納入網絡安全策略中,因為它可以在識別威脅和改善響應時間方面發揮關鍵作用。AI 可以幫助自動化和增強對網絡攻擊(如網絡釣魚、惡意軟體或勒索軟體)的檢測和緩解。 -- 挑戰: 對手也可以利用 AI 發動複雜的攻擊,例如生成虛假或誤導性內容、冒充用戶或利用 AI 系統中的漏洞。因此,AI 開發者有責任設計出能夠對抗濫用的強大且有韌性的系統。 - -### 資料保護 - -LLMs 可能對其使用的數據的隱私和安全構成風險。例如,LLMs 可能會記住並洩露其訓練數據中的敏感資訊,如個人姓名、地址、密碼或信用卡號碼。它們也可能被惡意行為者操縱或攻擊,這些行為者想要利用其漏洞或偏見。因此,了解這些風險並採取適當的措施來保護與 LLMs 一起使用的數據非常重要。您可以採取幾個步驟來保護與 LLMs 一起使用的數據。這些步驟包括: - -- **限制與 LLMs 分享的資料量和類型**: 只分享必要且相關的資料,避免分享任何敏感、機密或個人資料。使用者應該將與 LLMs 分享的資料匿名化或加密,例如移除或遮蔽任何識別資訊,或使用安全的通訊渠道。 -- **驗證 LLMs 生成的資料**: 始終檢查 LLMs 生成的輸出之準確性和品質,以確保它們不包含任何不需要或不適當的資訊。 -- **報告和警示任何資料洩露或事件**: 警惕 LLMs 的任何可疑或異常活動或行為,例如生成無關、錯誤、冒犯或有害的文本。這可能是資料洩露或安全事件的跡象。 - -數據安全、治理和合規性對於任何希望在多雲環境中利用數據和 AI 力量的組織來說都是至關重要的。保護和治理所有數據是一項複雜且多方面的任務。您需要在多個雲端中的不同位置保護和治理不同類型的數據(結構化、非結構化和 AI 生成的數據),並且需要考慮現有和未來的數據安全、治理和 AI 規範。為了保護您的數據,您需要採取一些最佳實踐和預防措施,例如: - -- 使用提供資料保護和隱私功能的雲端服務或平台。 -- 使用資料品質和驗證工具檢查資料中的錯誤、不一致或異常。 -- 使用資料治理和倫理框架確保資料以負責和透明的方式使用。 - -### 模擬真實世界威脅 - AI 紅隊測試 - -模擬現實世界的威脅現在被認為是在建構有韌性的 AI 系統中的標準做法,通過使用類似的工具、策略、程序來識別系統的風險並測試防禦者的反應。 - -> AI 紅隊的實踐已經演變為一個更廣泛的意義: 它不僅涵蓋探測安全漏洞,還包括探測其他系統故障,例如生成潛在有害內容。AI 系統帶來了新的風險,紅隊是理解這些新風險的核心,例如提示注入和生成無根據的內容。 - [Microsoft AI Red Team building future of safer AI](https://www.microsoft.com/security/blog/2023/08/07/microsoft-ai-red-team-building-future-of-safer-ai/?WT.mc_id=academic-105485-koreyst) - -[![紅隊測試的指南和資源](../../images/13-AI-red-team.png?WT.mc_id=academic-105485-koreyst)]() - -以下是塑造微軟 AI 紅隊計劃的關鍵見解。 - -1. **AI 紅隊測試的廣泛範圍:** - AI 紅隊測試現在涵蓋了安全性和負責任 AI (RAI) 的結果。傳統上,紅隊測試專注於安全性方面,將模型視為一個向量(例如,竊取底層模型)。然而,AI 系統引入了新的安全漏洞(例如,提示注入、污染),需要特別注意。除了安全性之外,AI 紅隊測試還探討公平性問題(例如,刻板印象)和有害內容(例如,美化暴力)。早期識別這些問題可以優先考慮防禦投資。 -2. **惡意和良性失敗:** - AI 紅隊測試從惡意和良性兩個角度考慮失敗。例如,在對新 Bing 進行紅隊測試時,我們不僅探討惡意對手如何顛覆系統,還探討普通用戶如何遇到問題或有害內容。與傳統的安全紅隊測試主要專注於惡意行為者不同,AI 紅隊測試考慮了更廣泛的人物角色和潛在的失敗。 -3. **AI 系統的動態性:** - AI 應用程序不斷演變。在大型語言模型應用中,開發人員適應不斷變化的需求。持續的紅隊測試確保了對不斷變化的風險的持續警惕和適應。 - -AI 紅隊測試並非包羅萬象,應被視為補充其他控制措施的輔助手段,例如[基於角色的存取控制 (RBAC)](https://learn.microsoft.com/azure/ai-services/openai/how-to/role-based-access-control?WT.mc_id=academic-105485-koreyst)和綜合數據管理解決方案。它旨在補充一種安全策略,該策略專注於使用安全且負責任的 AI 解決方案,考慮到隱私和安全,同時努力減少偏見、有害內容和錯誤資訊,這些都可能削弱用戶信心。 - -以下是一些額外閱讀的資料,可以幫助你更好地了解紅隊如何幫助識別和減輕你的 AI 系統中的風險: - -- [大型語言模型(LLMs)及其應用的紅隊計劃](https://learn.microsoft.com/azure/ai-services/openai/concepts/red-teaming?WT.mc_id=academic-105485-koreyst) -- [什麼是 OpenAI 紅隊網絡?](https://openai.com/blog/red-teaming-network?WT.mc_id=academic-105485-koreyst) -- [AI 紅隊 - 建構更安全和更負責任的 AI 解決方案的關鍵實踐](https://rodtrent.substack.com/p/ai-red-teaming?WT.mc_id=academic-105485-koreyst) -- MITRE [ATLAS (人工智慧系統的對抗性威脅景觀)](https://atlas.mitre.org/?WT.mc_id=academic-105485-koreyst), 一個記錄在現實世界中對 AI 系統進行攻擊的對手所使用的戰術和技術的知識庫。 - -## 知識檢查 - -保持資料完整性和防止濫用的好方法是什麼? - -1. 具有強大的基於角色的資料存取和資料管理控制 -1. 實施和審核資料標籤,以防止資料誤導或濫用 -1. 確保您的 AI 基礎設施支持內容過濾 - -A:1, 雖然這三個都是很好的建議,但確保你為用戶分配了適當的資料存取權限將大大有助於防止LLM使用的資料被操縱和誤導。 - -## 🚀 挑戰 - -了解更多有關如何在 AI 時代[管理和保護敏感資訊](https://learn.microsoft.com/training/paths/purview-protect-govern-ai/?WT.mc_id=academic-105485-koreyst)。 - -## 很棒的工作,繼續學習 - -完成本課程後,請查看我們的[生成式 AI 學習集合](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst)以繼續提升您的生成式 AI 知識! - -前往第14課,我們將查看[生成式AI應用程式生命週期](../../../14-the-generative-ai-application-lifecycle/translations/tw/README.md?WT.mc_id=academic-105485-koreyst)! - diff --git a/14-the-generative-ai-application-lifecycle/translations/cn/README.md b/14-the-generative-ai-application-lifecycle/translations/cn/README.md deleted file mode 100644 index 0ecd2f7754..0000000000 --- a/14-the-generative-ai-application-lifecycle/translations/cn/README.md +++ /dev/null @@ -1,85 +0,0 @@ -[![Integrating with function calling](../../images/14-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson14-gh?WT.mc_id=academic-105485-koreyst) - -# 生成式 AI 应用生命周期 - -在所有 AI 应用的开发中,一个核心问题是如何保持 AI 特性的持续相关性。鉴于 AI 技术的快速进步,为了确保你的应用能够持续提供相关、可靠且强大的性能,你需要不断地监控、评估并优化它。这正是生成式 AI 生命周期发挥作用的地方。 - -生成式 AI 生命周期提供了一个框架,指引你穿越开发、部署和维护生成式 AI 应用的各个阶段。它帮助你明确目标、衡量性能、识别挑战,并实施解决方案。此外,它还支持你确保应用遵循特定领域及其利益相关者的伦理和法律标准。遵循生成式 AI 生命周期,可以保证你的应用持续创造价值,满足用户需求。 - -## 引言 - -在本章中,你将学到: - -- 从 MLOps 到 LLMOps 的范式转变 -- LLM 生命周期 -- 生命周期工具 -- 生命周期量化与评估 - -## 从 MLOps 到 LLMOps 的范式转变 - -大型语言模型(LLMs)作为人工智能工具箱中的新成员,它们在分析和生成任务中表现出强大的能力。然而,这种能力也给我们如何高效地管理 AI 和传统机器学习任务带来了挑战。 - -这要求我们采用新的范式来适应这一变化,以正确的激励措施引导其发展。我们可以将传统的 AI 应用称为“ML 应用”,将基于最新技术和技术的新型 AI 应用称为“GenAI 应用”或简称“AI 应用”。这种分类方式从多个方面改变了我们的讨论框架,如下比较所示。 - -![LLMOps vs. MLOps comparison](../../images/01-llmops-shift.png?WT.mc_id=academic-105485-koreys) - -注意,在 LLMOps 中,我们更加关注应用开发者,并将集成作为关键点,采用“模型即服务”,并围绕以下几个关键指标进行思考: - -- 质量:响应的质量 -- 危害:负责任的 AI -- 诚信:响应的合理性(是否有意义?是否正确?) -- 成本:解决方案的预算 -- 延迟:令牌响应的平均时间 - -## LLM 生命周期 - -首先,让我们通过下图了解生命周期及其变化。 - -![LLMOps infographic](../../images/02-llmops.png?WT.mc_id=academic-105485-koreys) - -可以看出,这与 MLOps 的传统生命周期有所不同。LLMs 引入了许多新的需求,如提示工程、质量改进技术(微调、RAG、元提示)、负责任 AI 的不同评估和责任,以及新的评估指标(质量、危害、诚信、成本和延迟)。 - -例如,看看我们如何进行构思。利用提示工程与不同 LLMs 进行实验,探索各种可能性,测试假设是否成立。 - -注意,这不是一个线性过程,而是一个集成的循环过程,迭代且具有一个总体周期。 - -我们应该如何探索这些步骤?让我们深入了解如何构建一个生命周期。 - -![LLMOps Workflow](../../images/03-llm-stage-flows.png?WT.mc_id=academic-105485-koreys) - -这个过程可能看起来复杂,让我们先关注三个主要步骤: - -1. 构思/探索:在这里,我们可以根据业务需求进行探索。原型设计,创建[PromptFlow](https://microsoft.github.io/promptflow/index.html?WT.mc_id=academic-105485-koreyst),并测试其是否足够有效来验证我们的假设。 -2. 构建/增强:现在开始评估更大的数据集并实施技术,如微调和 RAG,以检验我们的解决方案的稳健性。如果不符合要求,重新实施、添加新的流程步骤或重组数据可能会有所帮助。经过流程和规模测试后,如果一切顺利并满足我们的指标,就准备进入下一个阶段。 -3. 运营化:集成监控和警报系统到我们的系统,部署和应用程序集成。 - -然后,我们有管理的整体周期,重点关注安全、合规和治理。 - -恭喜,现在你的 AI 应用已经准备就绪,可以投入使用了。想要动手体验,可以尝试[Contoso Chat Demo.](https://nitya.github.io/contoso-chat/?WT.mc_id=academic-105485-koreys) - -那么,我们可以使用哪些工具呢? - -## 生命周期工具 - -Microsoft 提供的[Azure AI Platform](https://azure.microsoft.com/solutions/ai/?WT.mc_id=academic-105485-koreys)和[PromptFlow](https://microsoft.github.io/promptflow/index.html?WT.mc_id=academic-105485-koreyst),简化了生命周期的实施,让你的应用快速上线。 - -通过[Azure AI Platform](https://azure.microsoft.com/solutions/ai/?WT.mc_id=academic-105485-koreys),你可以利用[AI Studio](https://ai.azure.com/?WT.mc_id=academic-105485-koreys)。AI Studio 是一个网页门户,让你可以探索模型、示例和工具,管理资源,进行 UI 开发流程,以及提供 SDK/CLI 选项进行代码优先开发。 - -![Azure AI possibilities](../../images/04-azure-ai-platform.png?WT.mc_id=academic-105485-koreys) -Azure AI 让你可以使用多种资源,管理你的操作、服务、项目、向量搜索和数据库需求。 - -![LLMOps with Azure AI](../../images/05-llm-azure-ai-prompt.png?WT.mc_id=academic-105485-koreys) - -从概念证明(POC)到大规模应用,利用 PromptFlow 进行构建: - -- 从 VS Code 设计和构建应用,使用视觉和功能工具。 -- 轻松测试和微调你的应用,以实现高质量 AI。 -- 使用 Azure AI Studio 进行集成和迭代,通过云推送和部署实现快速集成。 - -![LLMOps with PromptFlow](../../images/06-llm-promptflow.png?WT.mc_id=academic-105485-koreys) - -## 继续学习! - -通过[Contoso Chat App](https://nitya.github.io/contoso-chat/?WT.mc_id=academic-105485-koreyst)深入学习我们如何将这些概念应用于实际应用开发,并查看 Cloud Advocacy 如何在演示中加入这些概念。想要获取更多内容,不妨观看我们的[Ignite breakout session!](https://www.youtube.com/watch?v=DdOylyrTOWg) - -接下来,通过第 15 课,了解[检索增强生成和向量数据库](../../../15-rag-and-vector-databases/README.md?WT.mc_id=academic-105485-koreyst)如何影响生成式 AI,使应用更加吸引用户! diff --git a/14-the-generative-ai-application-lifecycle/translations/pl/README.md b/14-the-generative-ai-application-lifecycle/translations/pl/README.md deleted file mode 100644 index 4891166fb8..0000000000 --- a/14-the-generative-ai-application-lifecycle/translations/pl/README.md +++ /dev/null @@ -1,87 +0,0 @@ -# Cykl życia aplikacji generatywnej AI - -[![Integracja z wywołaniami funkcji](../../images/14-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson14-gh?WT.mc_id=academic-105485-koreyst) - -Ważnym pytaniem dla wszystkich aplikacji AI jest istotność funkcji AI, ponieważ AI to szybko rozwijająca się dziedzina. Aby zapewnić, że Twoja aplikacja pozostanie istotna, niezawodna i odporna, musisz ją stale monitorować, oceniać i ulepszać. Tutaj wkracza cykl życia generatywnej AI. - -Cykl życia generatywnej AI to ramy, które prowadzą Cię przez etapy tworzenia, wdrażania i utrzymania aplikacji generatywnej AI. Pomaga Ci zdefiniować cele, mierzyć wydajność, identyfikować wyzwania i wdrażać rozwiązania. Pomaga również dostosować aplikację do standardów etycznych i prawnych Twojej domeny i interesariuszy. Podążając za cyklem życia generatywnej AI, możesz zapewnić, że Twoja aplikacja zawsze dostarcza wartość i satysfakcjonuje użytkowników. - -## Wprowadzenie - -W tym rozdziale: - -- Zrozumiesz zmianę paradygmatu z MLOps na LLMOps -- Cykl życia LLM -- Narzędzia cyklu życia -- Metryki i ocena cyklu życia - -## Zrozumienie zmiany paradygmatu z MLOps na LLMOps - -LLM są nowym narzędziem w arsenale Sztucznej Inteligencji, są niezwykle potężne w zadaniach analizy i generowania dla aplikacji, jednak ta moc ma pewne konsekwencje w sposobie usprawniania zadań AI i klasycznego uczenia maszynowego. - -W związku z tym potrzebujemy nowego paradygmatu, aby dostosować to narzędzie w dynamiczny sposób, z odpowiednimi zachętami. Możemy kategoryzować starsze aplikacje AI jako "Aplikacje ML" i nowsze Aplikacje AI jako "Aplikacje GenAI" lub po prostu "Aplikacje AI", odzwierciedlając dominującą technologię i techniki stosowane w danym czasie. Zmienia to naszą narrację na wiele sposobów, spójrz na poniższe porównanie. - -![Porównanie LLMOps vs. MLOps](../../images/01-llmops-shift.png?WT.mc_id=academic-105485-koreys) - -Zauważ, że w LLMOps bardziej koncentrujemy się na programistach aplikacji, wykorzystując integracje jako kluczowy punkt, używając "Modele-jako-Usługa" i myśląc o następujących punktach dla metryk. - -- Jakość: Jakość odpowiedzi -- Szkoda: Odpowiedzialna AI -- Uczciwość: Ugruntowanie odpowiedzi (Czy ma sens? Czy jest poprawna?) -- Koszt: Budżet rozwiązania -- Opóźnienie: Średni czas odpowiedzi na token - -## Cykl życia LLM - -Najpierw, aby zrozumieć cykl życia i modyfikacje, zwróć uwagę na następującą infografikę. - -![Infografika LLMOps](../../images/02-llmops.png?WT.mc_id=academic-105485-koreys) - -Jak możesz zauważyć, różni się to od zwykłych cykli życia z MLOps. LLM mają wiele nowych wymagań, takich jak Inżynieria Promptów, różne techniki poprawy jakości (Dostrajanie, RAG, Meta-Prompty), inna ocena i odpowiedzialność w ramach odpowiedzialnej AI, wreszcie nowe metryki oceny (Jakość, Szkoda, Uczciwość, Koszt i Opóźnienie). - -Na przykład, spójrz, jak tworzymy koncepcję. Używając inżynierii promptów do eksperymentowania z różnymi LLM, aby zbadać możliwości sprawdzenia, czy ich hipoteza może być poprawna. - -Zauważ, że nie jest to proces liniowy, ale zintegrowane pętle, iteracyjne i z nadrzędnym cyklem. - -Jak moglibyśmy zbadać te kroki? Przejdźmy do szczegółów, jak moglibyśmy zbudować cykl życia. - -![Przepływ pracy LLMOps](../../images/03-llm-stage-flows.png?WT.mc_id=academic-105485-koreys) - -Może to wyglądać nieco skomplikowanie, skupmy się najpierw na trzech dużych krokach. - -1. Tworzenie koncepcji/Eksploracja: Eksploracja, tutaj możemy eksplorować zgodnie z naszymi potrzebami biznesowymi. Prototypowanie, tworzenie [PromptFlow](https://microsoft.github.io/promptflow/index.html?WT.mc_id=academic-105485-koreyst) i testowanie, czy jest wystarczająco wydajny dla naszej Hipotezy. -2. Budowanie/Rozszerzanie: Implementacja, teraz zaczynamy oceniać dla większych zbiorów danych, wdrażać techniki, takie jak Dostrajanie i RAG, aby sprawdzić solidność naszego rozwiązania. Jeśli to nie działa, ponowne wdrożenie, dodanie nowych kroków w naszym przepływie lub restrukturyzacja danych może pomóc. Po przetestowaniu naszego przepływu i skali, jeśli działa i sprawdzimy nasze Metryki, jest gotowe do następnego kroku. -3. Operacjonalizacja: Integracja, teraz dodawanie systemów monitorowania i alertów do naszego systemu, wdrażanie i integracja aplikacji z naszą Aplikacją. - -Następnie mamy nadrzędny cykl Zarządzania, koncentrujący się na bezpieczeństwie, zgodności i zarządzaniu. - -Gratulacje, teraz masz gotową do użycia i operacyjną aplikację AI. Aby zdobyć praktyczne doświadczenie, spójrz na [Contoso Chat Demo.](https://nitya.github.io/contoso-chat/?WT.mc_id=academic-105485-koreys) - -Teraz, jakich narzędzi moglibyśmy użyć? - -## Narzędzia cyklu życia - -Jeśli chodzi o narzędzia, Microsoft dostarcza [Platformę Azure AI](https://azure.microsoft.com/solutions/ai/?WT.mc_id=academic-105485-koreys) i [PromptFlow](https://microsoft.github.io/promptflow/index.html?WT.mc_id=academic-105485-koreyst), które ułatwiają i przyspieszają implementację cyklu. - -[Platforma Azure AI](https://azure.microsoft.com/solutions/ai/?WT.mc_id=academic-105485-koreys) pozwala korzystać z [AI Studio](https://ai.azure.com/?WT.mc_id=academic-105485-koreys). AI Studio to portal internetowy umożliwiający eksplorację modeli, próbek i narzędzi. Zarządzanie zasobami, przepływami tworzenia interfejsu użytkownika oraz opcje SDK/CLI dla rozwoju Code-First. - -![Możliwości Azure AI](../../images/04-azure-ai-platform.png?WT.mc_id=academic-105485-koreys) - -Azure AI pozwala korzystać z wielu zasobów do zarządzania operacjami, usługami, projektami, wyszukiwaniem wektorowym i potrzebami bazodanowymi. - -![LLMOps z Azure AI](../../images/05-llm-azure-ai-prompt.png?WT.mc_id=academic-105485-koreys) - -Konstruuj, od dowodu koncepcji (POC) aż po aplikacje na dużą skalę za pomocą PromptFlow: - -- Projektuj i buduj aplikacje z VS Code, za pomocą narzędzi wizualnych i funkcjonalnych -- Testuj i dostrajaj swoje aplikacje dla jakościowej AI, z łatwością. -- Używaj Azure AI Studio do integracji i iteracji z chmurą, wypychaj i wdrażaj dla szybkiej integracji. - -![LLMOps z PromptFlow](../../images/06-llm-promptflow.png?WT.mc_id=academic-105485-koreys) - -## Świetnie! Kontynuuj naukę! - -Niesamowite, teraz dowiedz się więcej o tym, jak strukturyzujemy aplikację, aby wykorzystać te koncepcje w [Aplikacji Contoso Chat](https://nitya.github.io/contoso-chat/?WT.mc_id=academic-105485-koreys), aby sprawdzić, jak Cloud Advocacy dodaje te koncepcje w demonstracjach. Aby uzyskać więcej treści, sprawdź naszą [sesję breakout na Ignite! -](https://www.youtube.com/watch?v=DdOylyrTOWg) - -Teraz sprawdź Lekcję 15, aby zrozumieć, jak [Retrieval Augmented Generation i Bazy Danych Wektorowe](../../../15-rag-and-vector-databases/translations/pl/README.md?WT.mc_id=academic-105485-koreyst) wpływają na Generatywną AI i jak tworzyć bardziej angażujące aplikacje! diff --git a/14-the-generative-ai-application-lifecycle/translations/tw/README.md b/14-the-generative-ai-application-lifecycle/translations/tw/README.md deleted file mode 100644 index 48913babf1..0000000000 --- a/14-the-generative-ai-application-lifecycle/translations/tw/README.md +++ /dev/null @@ -1,87 +0,0 @@ -[![與函式呼叫整合](../../images/14-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson14-gh?WT.mc_id=academic-105485-koreyst) - -# 生成式 AI 應用程式生命週期 - -一個所有 AI 應用程式的重要問題是 AI 功能的相關性,因為 AI 是一個快速發展的領域,為了確保你的應用程式保持相關性、可靠性和穩健性,你需要持續監控、評估和改進它。這就是生成式 AI 生命週期的作用所在。 - -生成式 AI 生命週期是一個框架,指導你完成開發、部署和維護生成式 AI 應用程式的各個階段。它幫助你定義目標、衡量績效、識別挑戰並實施解決方案。它還幫助你將應用程式與你的領域和利益相關者的倫理和法律標準對齊。通過遵循生成式 AI 生命週期,你可以確保你的應用程式始終提供價值並滿足用戶需求。 - -## 簡介 - -在本章中,你將: - -- 了解從 MLOps 到 LLMOps 的範式轉變 -- LLM 生命週期 -- 生命週期工具 -- 生命週期度量和評估 - -## 了解從 MLOps 到 LLMOps 的範式轉變 - -LLMs 是人工智慧武器庫中的一個新工具,它們在應用程式的分析和生成任務中非常強大,然而這種力量在我們簡化 AI 和經典機器學習任務的方式上有一些後果。 - -隨著這一點,我們需要一個新的範式來動態地適應這個工具,並提供正確的激勵。我們可以將舊的 AI 應用程式分類為「ML 應用程式」,而將新的 AI 應用程式分類為「GenAI 應用程式」或簡稱「AI 應用程式」,以反映當時使用的主流技術和方法。這在多方面改變了我們的敘述,請看以下比較。 - -![LLMOps vs. MLOps 比較](../../images/01-llmops-shift.png?WT.mc_id=academic-105485-koreys) - -注意,在 LLMOps 中,我們更專注於應用程式開發人員,使用整合作為關鍵點,使用「模型即服務」,並考慮以下指標。 - -- 品質: 回應品質 -- 傷害: 負責任的 AI -- 誠實: 回應的合理性(有道理嗎?正確嗎?) -- 成本: 解決方案預算 -- 延遲: 每個 token 回應的平均時間 - -## LLM 生命週期 - -首先,為了了解生命週期和修改,讓我們注意下一個資訊圖表。 - -![LLMOps 資訊圖](../../images/02-llmops.png?WT.mc_id=academic-105485-koreys) - -如你所見,這與通常的 MLOps 生命週期不同。LLM 有許多新的需求,如提示、不同的技術來提高品質(微調、RAG、Meta-Prompts)、負責任 AI 的不同評估和責任,最後是新的評估指標(品質、危害、誠實、成本和延遲)。 - -例如,看看我們如何構思。使用提示工程來實驗各種大型語言模型,以探索可能性來測試他們的假設是否正確。 - -請注意,這不是線性的,而是整合的迴圈、反覆進行並具有一個總體循環。 - -我們如何探索這些步驟?讓我們詳細了解如何建構一個生命週期。 - -![LLMOps 工作流程](../../images/03-llm-stage-flows.png?WT.mc_id=academic-105485-koreys) - -這可能看起來有點複雜,讓我們先專注於三個大步驟。 - -1. 構思/探索: 探索, 在這裡我們可以根據業務需求進行探索。原型設計, 建立一個 [PromptFlow](https://microsoft.github.io/promptflow/index.html?WT.mc_id=academic-105485-koreyst) 並測試其是否對我們的假設足夠有效。 -1. 建構/增強: 實施, 現在, 我們開始評估更大的數據集實施技術, 如微調和RAG, 以檢查我們解決方案的穩健性。如果不夠, 重新實施它, 在流程中添加新步驟或重構數據, 可能會有所幫助。在測試我們的流程和規模後, 如果有效並檢查我們的指標, 它就準備好進入下一步。 -1. 操作化: 整合, 現在添加監控和警報系統到我們的系統, 部署和應用整合到我們的應用程式。 - -然後,我們有管理的總體循環,專注於安全性、合規性和治理。 - -恭喜你,現在你的 AI 應用程式已準備好並可以運行。要獲得實際操作經驗,請查看[Contoso Chat 展示](https://nitya.github.io/contoso-chat/?WT.mc_id=academic-105485-koreys)。 - -現在,我們可以使用哪些工具? - -## 生命週期工具 - -為了工具,Microsoft 提供了[Azure AI Platform](https://azure.microsoft.com/solutions/ai/?WT.mc_id=academic-105485-koreys)和[PromptFlow](https://microsoft.github.io/promptflow/index.html?WT.mc_id=academic-105485-koreyst),以促進並使您的循環易於實施並隨時可用。 - -[Azure AI Platform](https://azure.microsoft.com/solutions/ai/?WT.mc_id=academic-105485-koreys) 讓你可以使用 [AI Studio](https://ai.azure.com/?WT.mc_id=academic-105485-koreys)。AI Studio 是一個網頁入口,讓你可以探索模型、範例和工具。管理你的資源、UI 開發流程和 SDK/CLI 選項以進行程式碼優先的開發。 - -![Azure AI possibilities](../../images/04-azure-ai-platform.png?WT.mc_id=academic-105485-koreys) - -Azure AI,允許您使用多個資源,來管理您的操作、服務、專案、向量搜尋和資料庫需求。 - -![LLMOps 與 Azure AI](../../images/05-llm-azure-ai-prompt.png?WT.mc_id=academic-105485-koreys) - -從概念驗證(POC)到大規模應用的構建,使用 PromptFlow: - -- 從 VS Code 設計和建構應用程式,使用視覺和功能工具 -- 測試和微調您的應用程式,以輕鬆達到高品質 AI。 -- 使用 Azure AI Studio 與雲端整合和迭代,快速推送和部署以進行整合。 - -![LLMOps 與 PromptFlow](../../images/06-llm-promptflow.png?WT.mc_id=academic-105485-koreys) - -## 太棒了!繼續學習! - -Amazing, 現在了解更多我們如何結構一個應用程式來使用這些概念,請參考 [Contoso Chat App](https://nitya.github.io/contoso-chat/?WT.mc_id=academic-105485-koreyst),以檢查 Cloud Advocacy 如何在展示中添加這些概念。欲了解更多內容,請查看我們的 [Ignite breakout session](https://www.youtube.com/watch?v=DdOylyrTOWg)! - -現在,查看第15課,了解[檢索增強生成和向量資料庫](../../../15-rag-and-vector-databases/translations/tw/README.md?WT.mc_id=academic-105485-koreyst)如何影響生成式AI並製作更具吸引力的應用程式! - diff --git a/15-rag-and-vector-databases/translations/cn/README.md b/15-rag-and-vector-databases/translations/cn/README.md deleted file mode 100644 index a0ad1cf653..0000000000 --- a/15-rag-and-vector-databases/translations/cn/README.md +++ /dev/null @@ -1,232 +0,0 @@ -# 检索增强生成 (RAG) 与向量数据库 - -在之前的搜索应用课程中,我们简单探讨了如何将个人数据融入到大型语言模型(LLM)中。本节课将更深入地讲述如何在LLM应用中实现数据基础化,包括数据处理的机制和方法,以及如何存储包括嵌入和文本在内的数据。 - -> **视频教程即将上线** - -## 引言 - -本课程内容包括: - -- RAG简介,探讨其在人工智能中的应用及其重要性。 -- 了解向量数据库并创建一个用于应用的实例。 -- 通过实践示例展示如何在应用程序中集成RAG。 - -## 学习目标 - -课程完成后,您将能够: - -- 阐述RAG在数据检索和处理中的重要作用。 -- 配置RAG应用,并将数据与LLM结合。 -- 在LLM应用中有效地整合RAG和向量数据库。 - -## 场景设定:用个人数据增强LLM - -本课程旨在通过加入个人笔记来增强教育初创公司的LLM,让聊天机器人能够获取更多关于不同学科的信息。利用这些笔记,学习者可以更好地学习理解不同的主题,从而更轻松地为考试做准备。我们的场景包括: - -- `Azure Open AI:` 我们选用的LLM,用于创建聊天机器人。 -- `AI初学者的神经网络课程`:这是我们将基础化到LLM的数据。 -- `Azure AI Search` 和 `Azure Cosmos DB:` 用于存储数据并创建搜索索引的向量数据库。 - -用户可以利用这些笔记创建练习测验、复习卡片,并将其概括为简洁的总结。在开始之前,让我们先了解RAG及其工作原理: - -## 检索增强生成 (RAG) - -LLM驱动的聊天机器人通过处理用户的提示来生成回答。它旨在与用户就广泛的话题进行互动。然而,它的回答仅限于所提供的上下文和其基础训练数据。例如,GPT-4的知识截止日期是2021年9月,这意味着它缺少在此之后发生事件的知识。此外,用于训练LLM的数据不包括个人笔记或公司产品手册等机密信息。 - -### RAG如何工作 - -如果您想部署一个能从笔记创建测验的聊天机器人,您需要连接到知识库。这正是RAG发挥作用的地方。RAG的工作流程如下: - -- **知识库:** 在检索之前,需要将这些文档摄入并预处理,通常是将大型文档拆分为更小的块,将它们转换成文本嵌入,并存储在数据库中。 -- **用户查询:** 用户提问。 -- **检索:** 当用户提出问题时,嵌入模型从知识库中检索相关信息,为提示提供更多上下文。 -- **增强生成:** LLM根据检索到的数据增强其回答,使得生成的回答不仅基于预先训练的数据,还包括从添加的上下文中获得的相关信息。检索到的数据用于增强LLM的回答,LLM随后向用户提供问题的答案。 - -### 为什么使用RAG? - -- **信息丰富:** 确保文本回答是最新和相关的,因此通过访问内部知识库,提高了特定领域任务的性能。 -- 通过利用知识库中的**可验证数据**来减少错误信息,为用户查询提供上下文。 -- **成本效益:** 与微调LLM相比,它们更加经济。 - -## 创建知识库 - -我们的应用是基于我们个人的数据,即AI初学者课程中的神经网络课程。 - -### 向量数据库 - -向量数据库与传统数据库不同,它是专门设计来存储、管理和搜索嵌入向量的。它存储文档的数值表示形式。将数据分解为数值嵌入,使AI系统更容易理解和处理数据。 - -我们将嵌入存储在向量数据库中,因为LLM对作为输入接受的标记数量有限制。由于不能将整个嵌入传递给LLM,我们需要将它们分解成块,当用户提问时,最相似的嵌入将与提示一起返回。分块还有助于减少通过LLM传递的标记数量的成本。 - -一些流行的向量数据库包括Azure Cosmos DB、Clarifyai、Pinecone、Chromadb、ScaNN、Quadrants和DeepLake。您可以使用以下命令通过Azure CLI创建Azure Cosmos DB模型: - -```bash -az login -az group create -n -l -az cosmosdb create -n -r -az cosmosdb list-keys -n -g -``` - -### 从文本到嵌入 - -在存储数据之前,我们需要将其转换为向量嵌入。如果您处理的是大型文档或长文本,可以根据预期的查询进行分块。分块可以在句子级别或段落级别进行。由于分块从周围的词汇中提取含义,您可以向块中添加额外的上下文,例如,通过添加文档标题或包含块前后的文本。您可以按以下方式进行分块: - -```python -def split_text(text, max_length, min_length): - words = text.split() - chunks = [] - current_chunk = [] - - for word in words: - current_chunk.append(word) - if len(' '.join(current_chunk)) > max_length and len(' '.join(current_chunk)) < min_length: - chunks.append(' '.join(current_chunk)) - current_chunk = [] - - # 如果最后一个块没有达到最小长度,无论如何都要添加它 - if current_chunk: - chunks.append(' '.join(current_chunk)) - - return chunks -``` -一旦完成分块,我们就可以使用不同的嵌入模型来嵌入我们的文本。您可以使用的一些模型包括word2vec、OpenAI的ada-002、Azure Computer Vision等。选择使用哪个模型将取决于您使用的语言、编码的内容类型(文本/图像/音频)、它可以编码的输入大小以及嵌入输出的长度。 - -使用OpenAI的`text-embedding-ada-002`模型嵌入文本的示例是:![嵌入单词cat的示例](../../images/cat.png?WT.mc_id=academic-105485-koreyst) - -## 检索和向量搜索 - -当用户提问时,检索器使用查询编码器将其转换为向量,然后在我们的文档搜索索引中搜索与输入相关的文档中的相关向量。完成后,它将输入向量和文档向量转换为文本,并将其传递给LLM。 - -### 检索 - -检索是系统尝试快速找到索引中满足搜索条件的文档的过程。检索器的目标是获取将用于提供上下文并将LLM基础化在您的数据上的文档。 - -在我们的数据库中执行搜索的几种方式包括: - -- **关键字搜索** - 用于文本搜索。 -- -- **语义搜索** - 使用单词的语义含义进行搜索。 -- -- **向量搜索** - 使用嵌入模型将文档从文本转换为向量表示。检索通过查询与用户问题最接近的文档向量表示来完成。 -- -- **混合搜索** - 关键字和向量搜索的结合。 - -检索的一个挑战是,当数据库中没有与查询类似的响应时,系统将返回它们能找到的最佳信息。然而,您可以使用策略,如设置相关性的最大距离或使用结合了关键字和向量搜索的混合搜索。在本课中,我们将使用混合搜索,即关键字和向量搜索的结合。我们将数据存储到一个包含块和嵌入的数据帧中。 - -### 向量相似度 - -检索器通过知识数据库搜索嵌入彼此接近的向量,即最近的邻居,因为它们是相似的文本。在用户提出查询的情况下,首先对其进行嵌入,然后与相似的嵌入匹配。用于找出不同向量有多相似的常用测量是余弦相似度,它基于两个向量之间的角度。 - -我们可以使用其他方法来测量相似度,包括欧几里得距离,这是向量端点之间的直线距离,以及点积,它测量两个向量对应元素的乘积之和。 - -### 搜索索引 - -在进行检索时,我们需要先为知识库构建一个搜索索引。索引存储我们的嵌入,并能在大型数据库中快速检索最相似的块。我们可以使用以下代码在本地创建我们的索引: - -```python -from sklearn.neighbors import NearestNeighbors - -embeddings = flattened_df['embeddings'].tolist() - -# 创建搜索索引 -nbrs = NearestNeighbors(n_neighbors=5, algorithm='ball_tree').fit(embeddings) - -# 查询索引,可以使用kneighbors方法 -distances, indices = nbrs.kneighbors(embeddings) -``` -### 重新排序 - -查询数据库后,可能需要按照相关性从高到低对结果进行排序。重新排序的LLM使用机器学习来提高搜索结果的相关性,通过从最相关的排序。使用Azure AI Search,重新排序会自动使用语义重新排序器为您完成。使用最近邻居重新排序的示例: - -```python -# 查找最相似的文档 -distances, indices = nbrs.kneighbors([query_vector]) - -# 打印最相似的文档 -for i in range(3): - index = indices[0][i] - for index in indices[0]: - print(flattened_df['chunks'].iloc[index]) - print(flattened_df['path'].iloc[index]) - print(flattened_df['distances'].iloc[index]) - else: - print(f"DataFrame中未找到索引 {index}") -``` -## 整合所有元素 - -最后一步是将我们的LLM融入进来,以便能够得到基于我们数据的响应。我们可以按以下方式实现: - -```python -user_input = "什么是感知?" - -def chatbot(user_input): - # 将问题转换为查询向量 - query_vector = create_embeddings(user_input) - - # 查找最相似的文档 - distances, indices = nbrs.kneighbors([query_vector]) - - # 将文档添加到查询中以提供上下文 - history = [] - for index in indices[0]: - history.append(flattened_df['chunks'].iloc[index]) - - # 组合历史记录和用户输入 - history.append(user_input) - - # 创建消息对象 - messages=[ - {"role": "system", "content": "你是一个帮助解答AI问题的AI助手。"}, - {"role": "user", "content": history[-1]} - ] - - # 使用聊天完成生成回应 - response = openai.chat.completions.create( - model="gpt-4", - temperature=0.7, - max_tokens=800, - messages=messages - ) - - return response.choices[0].message - -chatbot(user_input) -``` -## 评估我们的应用 - -### 评估指标 - -- 确保提供的回应质量自然、流畅且类似人类。 - -- 数据的基础性:评估回应是否来源于提供的文档。 - -- 相关性:评估回应与提出的问题是否匹配且相关。 - -- 语法正确性:评估回应在语法上是否通顺。 - -## 使用RAG(Retervival Augmented Generation)和向量数据库的用例 - -RAG和向量数据库的应用场景广泛,包括: - -- 问答系统:将公司数据基础化到一个聊天系统中,员工可以用来提问。 -- 推荐系统:创建一个系统,匹配最相似的项,如电影、餐馆等。 -- 聊天机器人服务:可以存储聊天历史,并基于用户数据个性化对话。 -- 基于向量嵌入的图像搜索,适用于图像识别和异常检测。 - -## 总结 - -我们详细介绍了RAG的基本概念,从添加我们的数据到应用、用户查询和输出。为简化RAG的创建,可以使用如Semanti Kernel、Langchain或Autogen等框架。 - -## 作业 - -为了深入学习检索增强生成(RAG),您可以: - -- 使用您选择的框架为应用构建前端。 -- 利用LangChain或Semantic Kernel等框架,重新创建您的应用。 - -恭喜您完成了本课 👏。 - -## 学习之旅未结束,继续前行 - -完成本课程后,继续探索我们的[生成式AI学习集合](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst),以进一步提升您的生成式AI知识! diff --git a/15-rag-and-vector-databases/translations/pl/README.md b/15-rag-and-vector-databases/translations/pl/README.md deleted file mode 100644 index 327b0a5c86..0000000000 --- a/15-rag-and-vector-databases/translations/pl/README.md +++ /dev/null @@ -1,267 +0,0 @@ -# Retrieval Augmented Generation (RAG) i Bazy Danych Wektorowe - -[![Retrieval Augmented Generation (RAG) i Bazy Danych Wektorowe](../../images/15-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson15-gh?WT.mc_id=academic-105485-koreyst) - -W lekcji dotyczącej aplikacji wyszukiwania krótko nauczyliśmy się, jak integrować własne dane z Dużymi Modelami Językowymi (LLM). W tej lekcji zagłębimy się w koncepcje osadzania danych w aplikacji LLM, mechanizmy tego procesu oraz metody przechowywania danych, w tym zarówno embeddingów, jak i tekstu. - -> **Wideo wkrótce** - -## Wprowadzenie - -W tej lekcji omówimy następujące zagadnienia: - -- Wprowadzenie do RAG, czym jest i dlaczego jest używane w AI (sztucznej inteligencji). - -- Zrozumienie, czym są bazy danych wektorowe i stworzenie jednej dla naszej aplikacji. - -- Praktyczny przykład integracji RAG w aplikacji. - -## Cele Nauki - -Po ukończeniu tej lekcji będziesz potrafił: - -- Wyjaśnić znaczenie RAG w odzyskiwaniu i przetwarzaniu danych. - -- Skonfigurować aplikację RAG i osadzić dane w LLM. - -- Efektywnie integrować RAG i Bazy Danych Wektorowe w Aplikacjach LLM. - -## Nasz Scenariusz: wzbogacanie naszych LLM o własne dane - -W tej lekcji chcemy dodać własne notatki do startupu edukacyjnego, co pozwoli chatbotowi uzyskać więcej informacji na różne tematy. Korzystając z naszych notatek, uczniowie będą mogli lepiej się uczyć i rozumieć różne tematy, co ułatwi powtórki do egzaminów. Aby stworzyć nasz scenariusz, użyjemy: - -- `Azure OpenAI:` LLM, którego użyjemy do stworzenia naszego chatbota - -- `Lekcja AI dla początkujących o Sieciach Neuronowych:` to będą dane, na których osadzimy nasz LLM - -- `Azure AI Search` i `Azure Cosmos DB:` baza danych wektorowa do przechowywania naszych danych i tworzenia indeksu wyszukiwania - -Użytkownicy będą mogli tworzyć quizy z własnych notatek, fiszki do powtórek i podsumowywać je do zwięzłych przeglądów. Aby zacząć, przyjrzyjmy się, czym jest RAG i jak działa: - -## Retrieval Augmented Generation (RAG) - -Chatbot zasilany przez LLM przetwarza prompty użytkownika, aby generować odpowiedzi. Jest zaprojektowany tak, aby był interaktywny i angażował użytkowników w szeroki zakres tematów. Jednak jego odpowiedzi są ograniczone do dostarczonego kontekstu i danych treningowych. Na przykład, wiedza GPT-4 kończy się we wrześniu 2021 roku, co oznacza, że brakuje mu wiedzy o wydarzeniach, które miały miejsce po tym okresie. Ponadto, dane użyte do treningu LLM wykluczają informacje poufne, takie jak osobiste notatki czy podręcznik produktu firmy. - -### Jak działają RAG (Retrieval Augmented Generation) - -![rysunek pokazujący jak działają RAG](../../images/how-rag-works.png?WT.mc_id=academic-105485-koreyst) - -Załóżmy, że chcesz wdrożyć chatbota, który tworzy quizy z Twoich notatek, będziesz potrzebować połączenia z bazą wiedzy. Tutaj z pomocą przychodzi RAG. RAG działają w następujący sposób: - -- **Baza wiedzy:** Przed odzyskiwaniem te dokumenty muszą zostać przetworzone i przetworzone wstępnie, zazwyczaj dzieląc duże dokumenty na mniejsze części, przekształcając je w embeddingi tekstowe i przechowując je w bazie danych. - -- **Zapytanie użytkownika:** użytkownik zadaje pytanie - -- **Odzyskiwanie:** Gdy użytkownik zadaje pytanie, model embeddingu pobiera istotne informacje z naszej bazy wiedzy, aby zapewnić więcej kontekstu, który zostanie włączony do promptu. - -- **Generowanie wzbogacone:** LLM wzbogaca swoją odpowiedź na podstawie pobranych danych. Pozwala to na generowanie odpowiedzi nie tylko na podstawie wstępnie wytrenowanych danych, ale także istotnych informacji z dodanego kontekstu. Pobrane dane są używane do wzbogacania odpowiedzi LLM. Następnie LLM zwraca odpowiedź na pytanie użytkownika. - -![rysunek pokazujący architekturę RAG](../../images/encoder-decode.png?WT.mc_id=academic-105485-koreyst) - -Architektura RAG jest implementowana przy użyciu transformatorów składających się z dwóch części: kodera i dekodera. Na przykład, gdy użytkownik zadaje pytanie, tekst wejściowy jest „kodowany” w wektory przechwytujące znaczenie słów, a wektory są „dekodowane” w naszym indeksie dokumentów i generują nowy tekst na podstawie zapytania użytkownika. LLM używa zarówno modelu koder-dekoder do generowania wyniku. - -Dwa podejścia przy wdrażaniu RAG zgodnie z proponowanym artykułem: [Retrieval-Augmented Generation for Knowledge intensive NLP (natural language processing software) Tasks](https://arxiv.org/pdf/2005.11401.pdf?WT.mc_id=academic-105485-koreyst) to: - -- **_RAG-Sequence_** używanie pobranych dokumentów do przewidywania najlepszej możliwej odpowiedzi na zapytanie użytkownika - -- **RAG-Token** używanie dokumentów do generowania następnego tokena, a następnie pobieranie ich w celu odpowiedzi na zapytanie użytkownika - -### Dlaczego warto używać RAG? - -- **Bogactwo informacji:** zapewnia, że odpowiedzi tekstowe są aktualne. W związku z tym zwiększa wydajność w zadaniach specyficznych dla domeny poprzez dostęp do wewnętrznej bazy wiedzy. - -- Zmniejsza fabrykację poprzez wykorzystanie **weryfikowalnych danych** w bazie wiedzy do zapewnienia kontekstu dla zapytań użytkowników. - -- Jest **opłacalny**, ponieważ jest bardziej ekonomiczny w porównaniu do dostrajania LLM - -## Tworzenie bazy wiedzy - -Nasza aplikacja opiera się na naszych danych osobowych, tj. lekcji Sieci Neuronowych z programu AI Dla Początkujących. - -### Bazy Danych Wektorowe - -Baza danych wektorowa, w przeciwieństwie do tradycyjnych baz danych, jest specjalistyczną bazą danych zaprojektowaną do przechowywania, zarządzania i przeszukiwania osadzonych wektorów. Przechowuje numeryczne reprezentacje dokumentów. Podział danych na numeryczne embeddingi ułatwia naszemu systemowi AI zrozumienie i przetwarzanie danych. - -Przechowujemy nasze embeddingi w bazach danych wektorowych, ponieważ LLM mają limit liczby tokenów, które akceptują jako dane wejściowe. Ponieważ nie można przekazać całych embeddingów do LLM, będziemy musieli podzielić je na fragmenty, a gdy użytkownik zada pytanie, embeddingi najbardziej podobne do pytania zostaną zwrócone wraz z promptem. Podział na fragmenty zmniejsza również koszty związane z liczbą tokenów przekazywanych przez LLM. - -Niektóre popularne bazy danych wektorowe to Azure Cosmos DB, Clarifyai, Pinecone, Chromadb, ScaNN, Qdrant i DeepLake. Możesz utworzyć model Azure Cosmos DB za pomocą Azure CLI za pomocą następującego polecenia: - -```bash -az login -az group create -n -l -az cosmosdb create -n -r -az cosmosdb list-keys -n -g -``` - -### Od tekstu do embeddingów - -Zanim zapiszemy nasze dane, będziemy musieli przekonwertować je na embeddingi wektorowe, zanim zostaną zapisane w bazie danych. Jeśli pracujesz z dużymi dokumentami lub długimi tekstami, możesz je podzielić na fragmenty w oparciu o oczekiwane zapytania. Podział na fragmenty można wykonać na poziomie zdania lub akapitu. Ponieważ podział na fragmenty czerpie znaczenie ze słów wokół nich, możesz dodać inny kontekst do fragmentu, na przykład dodając tytuł dokumentu lub dołączając tekst przed lub po fragmencie. Możesz podzielić dane w następujący sposób: - -```python -def split_text(text, max_length, min_length): - words = text.split() - chunks = [] - current_chunk = [] - - for word in words: - current_chunk.append(word) - if len(' '.join(current_chunk)) < max_length and len(' '.join(current_chunk)) > min_length: - chunks.append(' '.join(current_chunk)) - current_chunk = [] - - # Jeśli ostatni fragment nie osiągnął minimalnej długości, dodaj go mimo wszystko - if current_chunk: - chunks.append(' '.join(current_chunk)) - - return chunks -``` - -Po podziale na fragmenty możemy następnie osadzić nasz tekst za pomocą różnych modeli embeddingu. Niektóre modele, których możesz użyć, to: word2vec, ada-002 firmy OpenAI, Azure Computer Vision i wiele innych. Wybór modelu do użycia będzie zależał od języków, których używasz, rodzaju kodowanej treści (tekst/obrazy/audio), rozmiaru danych wejściowych, które może zakodować i długości wyniku embeddingu. - -Przykład osadzonego tekstu przy użyciu modelu `text-embedding-ada-002` firmy OpenAI: -![embedding słowa kot](../../images/cat.png?WT.mc_id=academic-105485-koreyst) - -## Odzyskiwanie i Wyszukiwanie Wektorowe - -Gdy użytkownik zadaje pytanie, retriever przekształca je w wektor za pomocą kodera zapytań, a następnie przeszukuje nasz indeks wyszukiwania dokumentów w poszukiwaniu odpowiednich wektorów w dokumencie, które są powiązane z danymi wejściowymi. Po zakończeniu konwertuje zarówno wektor wejściowy, jak i wektory dokumentów na tekst i przekazuje je do LLM. - -### Odzyskiwanie - -Odzyskiwanie ma miejsce, gdy system próbuje szybko znaleźć dokumenty z indeksu, które spełniają kryteria wyszukiwania. Celem retrievera jest uzyskanie dokumentów, które zostaną wykorzystane do zapewnienia kontekstu i osadzenia LLM na Twoich danych. - -Istnieje kilka sposobów przeprowadzania wyszukiwania w naszej bazie danych, takich jak: - -- **Wyszukiwanie słów kluczowych** - używane do wyszukiwania tekstów - -- **Wyszukiwanie semantyczne** - wykorzystuje semantyczne znaczenie słów - -- **Wyszukiwanie wektorowe** - konwertuje dokumenty z tekstu na reprezentacje wektorowe za pomocą modeli embeddingu. Odzyskiwanie odbywa się poprzez zapytanie o dokumenty, których reprezentacje wektorowe są najbliższe pytaniu użytkownika. - -- **Hybrydowe** - połączenie wyszukiwania słów kluczowych i wektorowego. - -Wyzwanie związane z odzyskiwaniem pojawia się, gdy w bazie danych nie ma podobnej odpowiedzi na zapytanie, system zwróci wtedy najlepsze dostępne informacje, jednak można zastosować taktyki, takie jak ustawienie maksymalnej odległości dla istotności lub użycie wyszukiwania hybrydowego, które łączy wyszukiwanie słów kluczowych i wektorowe. W tej lekcji użyjemy wyszukiwania hybrydowego, połączenia wyszukiwania wektorowego i słów kluczowych. Będziemy przechowywać nasze dane w ramce danych z kolumnami zawierającymi fragmenty oraz embeddingi. - -### Podobieństwo Wektorowe - -Retriever przeszuka bazę wiedzy w poszukiwaniu embeddingów, które są blisko siebie, najbliższego sąsiada, ponieważ są to teksty podobne. W scenariuszu, gdy użytkownik zadaje zapytanie, jest ono najpierw osadzane, a następnie dopasowywane do podobnych embeddingów. Powszechną miarą używaną do określenia podobieństwa różnych wektorów jest podobieństwo kosinusowe, które opiera się na kącie między dwoma wektorami. - -Możemy mierzyć podobieństwo za pomocą innych alternatyw, takich jak odległość euklidesowa, która jest prostą linią między punktami końcowymi wektorów, oraz iloczyn skalarny, który mierzy sumę iloczynów odpowiadających sobie elementów dwóch wektorów. - -### Indeks wyszukiwania - -Podczas odzyskiwania będziemy musieli zbudować indeks wyszukiwania dla naszej bazy wiedzy przed wykonaniem wyszukiwania. Indeks będzie przechowywać nasze embeddingi i może szybko odzyskać najbardziej podobne fragmenty nawet w dużej bazie danych. Możemy stworzyć nasz indeks lokalnie za pomocą: - -```python -from sklearn.neighbors import NearestNeighbors - -embeddings = flattened_df['embeddings'].to_list() - -# Utwórz indeks wyszukiwania -nbrs = NearestNeighbors(n_neighbors=5, algorithm='ball_tree').fit(embeddings) - -# Aby zapytać indeks, możesz użyć metody kneighbors -distances, indices = nbrs.kneighbors(embeddings) -``` - -### Ponowne rangowanie - -Po zapytaniu bazy danych może być konieczne posortowanie wyników od najbardziej istotnych. LLM do ponownego rangowania wykorzystuje uczenie maszynowe do poprawy trafności wyników wyszukiwania poprzez uporządkowanie ich od najbardziej istotnych. Korzystając z Azure AI Search, ponowne rangowanie jest wykonywane automatycznie za pomocą semantycznego rerankera. Przykład działania ponownego rangowania przy użyciu najbliższych sąsiadów: - -```python -# Znajdź najbardziej podobne dokumenty -distances, indices = nbrs.kneighbors([query_vector]) - -index = [] -# Wydrukuj najbardziej podobne dokumenty -for i in range(3): - index = indices[0][i] - for index in indices[0]: - print(flattened_df['chunks'].iloc[index]) - print(flattened_df['path'].iloc[index]) - print(flattened_df['distances'].iloc[index]) - else: - print(f"Indeks {index} nie znaleziony w ramce danych") -``` - -## Łączenie wszystkiego w całość - -Ostatnim krokiem jest dodanie naszego LLM do miksu, aby móc uzyskać odpowiedzi oparte na naszych danych. Możemy to zaimplementować w następujący sposób: - -```python -user_input = "czym jest perceptron?" - -def chatbot(user_input): - # Przekonwertuj pytanie na wektor zapytania - query_vector = create_embeddings(user_input) - - # Znajdź najbardziej podobne dokumenty - distances, indices = nbrs.kneighbors([query_vector]) - - # dodaj dokumenty do zapytania, aby zapewnić kontekst - history = [] - for index in indices[0]: - history.append(flattened_df['chunks'].iloc[index]) - - # połącz historię i dane wejściowe użytkownika - history.append(user_input) - - # utwórz obiekt wiadomości - messages=[ - {"role": "system", "content": "Jesteś asystentem AI, który pomaga w pytaniach dotyczących AI."}, - {"role": "user", "content": history[-1]} - ] - - # użyj uzupełniania czatu do wygenerowania odpowiedzi - response = openai.chat.completions.create( - model="gpt-4", - temperature=0.7, - max_tokens=800, - messages=messages - ) - - return response.choices[0].message - -chatbot(user_input) -``` - -## Ocena naszej aplikacji - -### Metryki Oceny - -- Jakość dostarczonych odpowiedzi zapewniająca, że brzmią naturalnie, płynnie i jak ludzkie - -- Ugruntowanie danych: ocena, czy odpowiedź pochodziła z dostarczonych dokumentów - -- Trafność: ocena, czy odpowiedź pasuje i jest związana z zadanym pytaniem - -- Płynność - czy odpowiedź ma sens gramatyczny - -## Przypadki użycia RAG (Retrieval Augmented Generation) i baz danych wektorowych - -Istnieje wiele różnych przypadków użycia, w których wywołania funkcji mogą ulepszyć Twoją aplikację, na przykład: - -- Odpowiadanie na pytania: osadzenie danych firmowych w czacie, który może być używany przez pracowników do zadawania pytań. - -- Systemy rekomendacji: gdzie można stworzyć system, który dopasowuje najbardziej podobne wartości, np. filmy, restauracje i wiele innych. - -- Usługi chatbotów: możesz przechowywać historię czatów i personalizować rozmowę w oparciu o dane użytkownika. - -- Wyszukiwanie obrazów oparte na embeddingach wektorowych, przydatne przy rozpoznawaniu obrazów i wykrywaniu anomalii. - -## Podsumowanie - -Omówiliśmy podstawowe obszary RAG, od dodawania naszych danych do aplikacji, zapytania użytkownika i wyniku. Aby uprościć tworzenie RAG, możesz użyć frameworków takich jak Semantic Kernel, Langchain lub Autogen. - -## Zadanie - -Aby kontynuować naukę o Retrieval Augmented Generation (RAG), możesz zbudować: - -- Zbuduj front-end dla aplikacji za pomocą wybranego frameworka - -- Wykorzystaj framework, LangChain lub Semantic Kernel, i odtwórz swoją aplikację. - -Gratulacje za ukończenie lekcji 👏. - -## Nauka się tu nie kończy, kontynuuj podróż - -Po ukończeniu tej lekcji sprawdź naszą [Kolekcję Nauki o Generatywnej AI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst), aby dalej podnosić swoją wiedzę o Generatywnej AI! diff --git a/15-rag-and-vector-databases/translations/tw/README.md b/15-rag-and-vector-databases/translations/tw/README.md deleted file mode 100644 index 0ce92b5906..0000000000 --- a/15-rag-and-vector-databases/translations/tw/README.md +++ /dev/null @@ -1,268 +0,0 @@ -# 檢索增強生成(RAG)和向量資料庫 - -[![檢索增強生成 (RAG) 和向量資料庫](../../images/15-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson15-gh?WT.mc_id=academic-105485-koreyst) - -在搜尋應用課程中,我們簡要學習了如何將自己的資料整合到大型語言模型(LLMs)中。在本課程中,我們將深入探討在LLM應用中將資料基礎化的概念、過程的機制以及儲存資料的方法,包括嵌入和文本。 - -> **影片即將推出** - -## 簡介 - -在本課程中,我們將涵蓋以下內容: - -- 介紹 RAG,它是什麼以及為什麼在 AI(人工智慧)中使用它。 - -- 了解什麼是向量資料庫並為我們的應用程式建立一個。 - -- 一個關於如何將 RAG 整合到應用程式中的實際範例。 - -## 學習目標 - -完成本課程後,你將能夠: - -- 解釋 RAG 在資料檢索和處理中的重要性。 - -- 設定 RAG 應用並將您的資料接入 LLM - -- 在 LLM 應用中有效整合 RAG 和向量資料庫。 - -## 我們的場景: 使用我們自己的資料增強我們的 LLMs - -為了這節課,我們希望將我們自己的筆記添加到教育創業中,這樣可以讓聊天機器人獲取更多關於不同主題的資訊。使用我們已有的筆記,學習者將能夠更好地學習和理解不同的主題,使他們更容易復習考試。要建立我們的情境,我們將使用: - -- `Azure OpenAI:` 我們將用來建立我們聊天機器人的 LLM - -- `AI for beginners' lesson on Neural Networks`: 這將是我們 LLM 的基礎資料 - -- `Azure AI Search` 和 `Azure Cosmos DB:` 用來儲存我們資料並建立搜尋索引的向量資料庫 - -使用者將能夠從他們的筆記中建立練習測驗、修訂抽認卡並將其摘要為簡明的概述。要開始,讓我們看看什麼是 RAG 以及它如何運作: - -## 檢索增強生成 (RAG) - -LLM 驅動的聊天機器人處理用戶提示以生成回應。它被設計為互動的,並與用戶在廣泛的主題上進行交流。然而,它的回應僅限於提供的上下文和其基礎訓練數據。例如,GPT-4 的知識截止於 2021 年 9 月,這意味著它缺乏對此期間之後發生的事件的了解。此外,用於訓練 LLM 的數據排除了機密資訊,如個人筆記或公司的產品手冊。 - -### RAGs(檢索增強生成)的工作原理 - -![圖示顯示 RAGs 的工作原理](../../images/how-rag-works.png?WT.mc_id=academic-105485-koreyst) - -假設你想要部署一個從筆記中建立測驗的聊天機器人,你將需要連接到知識庫。這就是 RAG 派上用場的地方。RAG 的運作方式如下: - -- **知識庫:** 在檢索之前,這些文件需要被攝取和預處理,通常是將大型文件分解成較小的部分,將它們轉換為文本嵌入並存儲在資料庫中。 - -- **用戶查詢:** 用戶提出問題 - -- **檢索:** 當用戶提出問題時,嵌入模型會從我們的知識庫中檢索相關資訊,以提供更多將被納入提示的上下文。 - -- **增強生成:** LLM 根據檢索到的數據增強其回應。這使得生成的回應不僅基於預訓練數據,還基於新增上下文中的相關資訊。檢索到的數據用於增強 LLM 的回應。然後 LLM 向用戶的問題返回答案。 - -![drawing showing how RAGs architecture](../../images/encoder-decode.png?WT.mc_id=academic-105485-koreyst) - -RAGs 的架構是使用由兩部分組成的 transformers 實現的: 一個編碼器和一個解碼器。例如,當使用者提出問題時,輸入文字會被「編碼」成捕捉單詞意義的向量,這些向量會被「解碼」到我們的文件索引中,並根據使用者查詢生成新文字。LLM 使用編碼器-解碼器模型來生成輸出。 - -根據提議的論文:[Retrieval-Augmented Generation for Knowledge intensive NLP (natural language processing software) Tasks](https://arxiv.org/pdf/2005.11401.pdf?WT.mc_id=academic-105485-koreyst)實現 RAG 的兩種方法是: - -- **_RAG-Sequence_** 使用檢索到的文件來預測對用戶查詢的最佳答案 - -- **RAG-Token** 使用文件生成下一個標記,然後檢索它們來回答用戶的查詢 - -### 為什麼要使用 RAGs? - -- **資訊豐富度:** 確保文字回應是最新且符合現況。因此,通過訪問內部知識庫來增強在特定領域任務上的表現。 - -- 通過利用知識庫中的**可驗證數據**來減少捏造,為用戶查詢提供上下文。 - -- 它是**成本效益**的,因為與微調LLM相比,它們更經濟。 - -## 建立知識庫 - -我們的應用程式基於我們的個人資料,即 AI 初學者課程中的神經網路課程。 - -### 向量資料庫 - -一個向量資料庫,不同於傳統資料庫,是一種專門設計來儲存、管理和搜尋嵌入向量的資料庫。它儲存文件的數值表示。將資料分解為數值嵌入使我們的 AI 系統更容易理解和處理這些資料。 - -我們將嵌入儲存在向量資料庫中,因為LLM有接受作為輸入的token數量限制。由於無法將整個嵌入傳遞給LLM,我們需要將它們分解成塊,當使用者問問題時,最像問題的嵌入將與提示一起返回。分塊還可以減少通過LLM傳遞的token數量的成本。 - -一些流行的向量資料庫包括 Azure Cosmos DB、Clarifyai、Pinecone、Chromadb、ScaNN、Qdrant 和 DeepLake。你可以使用以下命令透過 Azure CLI 建立一個 Azure Cosmos DB 模型: - -```bash -az login -az group 建立 -n -l -az cosmosdb 建立 -n -r -az cosmosdb list-keys -n -g -``` - -### 從文本到嵌入 - -在我們儲存資料之前,我們需要先將其轉換為向量嵌入,然後再儲存在資料庫中。如果你正在處理大型文件或長文本,可以根據預期的查詢將它們分塊。分塊可以在句子層級或段落層級進行。由於分塊從周圍的詞語中衍生出意義,你可以為分塊添加一些其他的上下文,例如,添加文件標題或在分塊前後包含一些文本。你可以按如下方式分塊資料: - -```python -def split_text(文字, 最大長度, 最小長度): - 單詞 = 文字.split() - 塊 = [] - 當前塊 = [] - - for 單詞 in 單詞: - 當前塊.append(單詞) - if len(' '.join(當前塊)) < 最大長度 and len(' '.join(當前塊)) > 最小長度: - 塊.append(' '.join(當前塊)) - 當前塊 = [] - - # 如果最後一塊沒有達到最小長度,無論如何都要添加 - if 當前塊: - 塊.append(' '.join(當前塊)) - - return 塊 -``` - -一旦分塊後,我們可以使用不同的嵌入模型來嵌入我們的文本。您可以使用的一些模型包括: word2vec、OpenAI 的 ada-002、Azure Computer Vision 等等。選擇使用的模型將取決於您使用的語言、編碼的內容類型(文本/圖像/音頻)、它可以編碼的輸入大小以及嵌入輸出的長度。 - -範例使用 OpenAI 的 `text-embedding-ada-002` 模型嵌入文字如下: -![an embedding of the word cat](../../images/cat.png?WT.mc_id=academic-105485-koreyst) - -## 檢索和向量搜尋 - -當使用者提出問題時,檢索器會使用查詢編碼器將其轉換為向量,然後在我們的文件搜尋索引中搜尋與輸入相關的向量。完成後,它會將輸入向量和文件向量轉換為文字,並通過 LLM。 - -### 檢索 - -檢索發生在系統嘗試從索引中快速找到滿足搜索標準的文件時。檢索器的目標是獲取將用於提供上下文並基於您的數據定位LLM的文件。 - -在我們的資料庫中執行搜尋有幾種方法,例如: - -- **關鍵字搜尋** - 用於文字搜尋 - -- **語意搜尋** - 使用單詞的語意 - -- **向量搜尋** - 使用嵌入模型將文件從文字轉換為向量表示。檢索將通過查詢向量表示最接近用戶問題的文件來完成。 - -- **混合** - 關鍵字搜尋和向量搜尋的結合。 - -在資料庫中沒有與查詢相似的回應時,檢索會面臨挑戰,系統將返回他們能獲得的最佳資訊。然而,你可以使用一些策略,比如設定相關性的最大距離或使用結合關鍵字和向量搜索的混合搜索。在本課中,我們將使用混合搜索,結合向量和關鍵字搜索。我們將把數據存儲到一個數據框中,列包含了數據塊以及嵌入。 - -### 向量相似度 - -檢索器將在知識資料庫中搜尋相近的嵌入,最接近的鄰居,因為它們是相似的文本。在使用者提出查詢的情況下,首先會嵌入查詢,然後與相似的嵌入進行匹配。用來衡量不同向量相似度的常見方法是基於兩個向量之間角度的余弦相似度。 - -我們可以使用其他替代方法來測量相似性,例如歐幾里得距離(即向量端點之間的直線)和點積(測量兩個向量對應元素的乘積之和)。 - -### 搜尋索引 - -在進行檢索時,我們需要在執行搜尋之前為我們的知識庫建構一個搜尋索引。索引將儲存我們的嵌入並且即使在大型資料庫中也能快速檢索到最相似的區塊。我們可以使用以下方式在本地建立我們的索引: - -```python -from sklearn.neighbors import NearestNeighbors - -embeddings = flattened_df['embeddings'].to_list() - -# 建立搜尋索引 -nbrs = NearestNeighbors(n_neighbors=5, algorithm='ball_tree').fit(embeddings) - -# 要查詢索引,可以使用 kneighbors 方法 -distances, indices = nbrs.kneighbors(embeddings) -``` - -### 重新排序 - -一旦你查詢了資料庫,你可能需要將結果從最相關的排序。一個重新排序的LLM利用機器學習通過將搜索結果從最相關的排序來提高其相關性。使用Azure AI Search,重新排序會自動為你完成,使用語義重新排序器。以下是一個使用最近鄰重新排序如何工作的範例: - -```python -# 找到最相似的文件 -distances, indices = nbrs.kneighbors([query_vector]) - -index = [] -# 列印最相似的文件 -for i in range(3): - index = indices[0][i] - for index in indices[0]: - print(flattened_df['chunks'].iloc[index]) - print(flattened_df['path'].iloc[index]) - print(flattened_df['distances'].iloc[index]) - else: - print(f"Index {index} not found in DataFrame") -``` - -## 將所有內容整合在一起 - -最後一步是將我們的 LLM 添加到混合中,以便能夠獲得基於我們資料的回應。我們可以如下實現: - -```python -user_input = "什麼是感知器?" - -def chatbot(user_input): - # 將問題轉換為查詢向量 - query_vector = create_embeddings(user_input) - - # 找到最相似的文件 - distances, indices = nbrs.kneighbors([query_vector]) - - # 將文件添加到查詢中以提供上下文 - history = [] - for index in indices[0]: - history.append(flattened_df['chunks'].iloc[index]) - - # 結合歷史記錄和用戶輸入 - history.append(user_input) - - # 建立一個訊息物件 - messages=[ - {"role": "system", "content": "你是一個幫助解答 AI 問題的 AI 助手。"}, - {"role": "user", "content": history[-1]} - ] - - # 使用聊天完成來生成回應 - response = openai.chat.completions.create( - model="gpt-4", - temperature=0.7, - max_tokens=800, - messages=messages - ) - - return response.choices[0].message - -chatbot(user_input) -``` - -## 評估我們的應用程式 - -### 評估指標 - -- 回應的品質確保其聽起來自然、流暢且像人類 - -- 資料的基礎性: 評估回應是否來自提供的文件 - -- 相關性: 評估回應是否符合並與所問問題相關 - -- 流暢度 - 回應在語法上是否合理 - -## 使用 RAG (檢索增強生成) 和向量資料庫的用例 - -在許多不同的使用案例中,函式呼叫可以改善您的應用程式,例如: - -- 問答: 將公司的資料基礎連結到一個可以讓員工提問的聊天中。 - -- 推薦系統: 你可以建立一個系統來匹配最相似的值,例如電影、餐廳等等。 - -- 聊天機器人服務: 你可以儲存聊天歷史並根據使用者資料個性化對話。 - -- 基於向量嵌入的圖片搜尋,在進行圖像識別和異常檢測時非常有用。 - -## 摘要 - -我們已經涵蓋了從將資料添加到應用程式、使用者查詢和輸出的RAG基本領域。為了簡化RAG的建立,你可以使用如Semanti Kernel、Langchain或Autogen等框架。 - -## 作業 - -要繼續學習檢索增強生成(RAG),你可以建構: - -- 使用您選擇的框架為應用程式建構前端 - -- 利用框架(LangChain 或 Semantic Kernel)重新建構您的應用程式。 - -恭喜完成這節課 👏。 - -## 學習不止於此,繼續旅程 - -完成本課程後,請查看我們的[生成式 AI 學習集合](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst)以繼續提升您的生成式 AI 知識! - diff --git a/16-open-source-models/translations/pl/README.md b/16-open-source-models/translations/pl/README.md deleted file mode 100644 index e9b7448907..0000000000 --- a/16-open-source-models/translations/pl/README.md +++ /dev/null @@ -1,79 +0,0 @@ -[![Modele Open Source](../../images/16-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson16-gh?WT.mc_id=academic-105485-koreyst) - -## Wprowadzenie - -Świat modeli LLM typu open-source jest ekscytujący i ciągle się rozwija. Ta lekcja ma na celu zapewnienie dogłębnego spojrzenia na modele open source. Jeśli szukasz informacji na temat porównania modeli zastrzeżonych z modelami open source, przejdź do lekcji ["Odkrywanie i porównywanie różnych LLM"](../../../02-exploring-and-comparing-different-llms/README.md?WT.mc_id=academic-105485-koreyst). Ta lekcja obejmie również temat dostrajania (fine-tuning), ale bardziej szczegółowe wyjaśnienie można znaleźć w lekcji ["Dostrajanie LLM"](../../../18-fine-tuning/README.md?WT.mc_id=academic-105485-koreyst). - -## Cele nauki - -- Zrozumienie modeli open source -- Zrozumienie korzyści płynących z pracy z modelami open source -- Odkrywanie otwartych modeli dostępnych na Hugging Face i w Azure AI Studio - -## Czym są modele Open Source? - -Oprogramowanie open source odegrało kluczową rolę we wzroście technologii w różnych dziedzinach. Open Source Initiative (OSI) zdefiniowała [10 kryteriów dla oprogramowania](https://web.archive.org/web/20241126001143/https://opensource.org/osd?WT.mc_id=academic-105485-koreyst), aby mogło być sklasyfikowane jako open source. Kod źródłowy musi być otwarcie udostępniony na licencji zatwierdzonej przez OSI. - -Chociaż rozwój LLM ma podobne elementy do tworzenia oprogramowania, proces nie jest dokładnie taki sam. Wniosło to wiele dyskusji w społeczności na temat definicji open source w kontekście LLM. Aby model był zgodny z tradycyjną definicją open source, następujące informacje powinny być publicznie dostępne: - -- Zbiory danych użyte do trenowania modelu. -- Pełne wagi modelu jako część treningu. -- Kod ewaluacji. -- Kod dostrajania. -- Pełne wagi modelu i metryki treningu. - -Obecnie tylko kilka modeli spełnia te kryteria. [Model OLMo stworzony przez Allen Institute for Artificial Intelligence (AllenAI)](https://huggingface.co/allenai/OLMo-7B?WT.mc_id=academic-105485-koreyst) jest jednym z nich. - -W tej lekcji będziemy odnosić się do modeli jako "otwartych modeli" (open models), ponieważ w momencie pisania mogą one nie spełniać powyższych kryteriów. - -## Korzyści z Otwartych Modeli - -**Wysoce konfigurowalne** - Ponieważ otwarte modele są wydawane ze szczegółowymi informacjami o treningu, badacze i programiści mogą modyfikować wewnętrzne mechanizmy modelu. Umożliwia to tworzenie wysoce wyspecjalizowanych modeli, które są dostrojone do konkretnego zadania lub obszaru badań. Niektóre przykłady to generowanie kodu, operacje matematyczne i biologia. - -**Koszt** - Koszt za token przy używaniu i wdrażaniu tych modeli jest niższy niż w przypadku modeli zastrzeżonych. Podczas tworzenia aplikacji Generatywnej AI należy rozważyć stosunek wydajności do ceny podczas pracy z tymi modelami w konkretnym przypadku użycia. - -![Koszt Modelu](../../images/model-price.png?WT.mc_id=academic-105485-koreyst) -Źródło: Artificial Analysis - -**Elastyczność** - Praca z otwartymi modelami umożliwia elastyczność w zakresie używania różnych modeli lub ich łączenia. Przykładem tego są [Asystenci HuggingChat](https://huggingface.co/chat?WT.mc_id=academic-105485-koreyst), gdzie użytkownik może wybrać model używany bezpośrednio w interfejsie użytkownika: - -![Wybierz Model](../../images/choose-model.png?WT.mc_id=academic-105485-koreyst) - -## Odkrywanie Różnych Otwartych Modeli - -### Llama 2 - -[LLama2](https://huggingface.co/meta-llama?WT.mc_id=academic-105485-koreyst), opracowany przez Meta, to otwarty model zoptymalizowany pod kątem aplikacji opartych na czacie. Wynika to z jego metody dostrajania, która obejmowała dużą ilość dialogów i informacji zwrotnych od ludzi. Dzięki tej metodzie model generuje więcej wyników zgodnych z oczekiwaniami ludzi, co zapewnia lepsze doświadczenie użytkownika. - -Niektóre przykłady dostrojonych wersji Llama to [Japanese Llama](https://huggingface.co/elyza/ELYZA-japanese-Llama-2-7b?WT.mc_id=academic-105485-koreyst), która specjalizuje się w języku japońskim, oraz [Llama Pro](https://huggingface.co/TencentARC/LLaMA-Pro-8B?WT.mc_id=academic-105485-koreyst), która jest ulepszoną wersją modelu podstawowego. - -### Mistral - -[Mistral](https://huggingface.co/mistralai?WT.mc_id=academic-105485-koreyst) to otwarty model z silnym naciskiem na wysoką wydajność i efektywność. Wykorzystuje podejście Mixture-of-Experts (Mieszanka Ekspertów), które łączy grupę wyspecjalizowanych modeli ekspertów w jeden system, gdzie w zależności od danych wejściowych wybierane są określone modele do użycia. To sprawia, że obliczenia są bardziej efektywne, ponieważ modele zajmują się tylko danymi wejściowymi, w których się specjalizują. - -Niektóre przykłady dostrojonych wersji Mistral to [BioMistral](https://huggingface.co/BioMistral/BioMistral-7B?text=Mon+nom+est+Thomas+et+mon+principal?WT.mc_id=academic-105485-koreyst), który koncentruje się na dziedzinie medycznej, oraz [OpenMath Mistral](https://huggingface.co/nvidia/OpenMath-Mistral-7B-v0.1-hf?WT.mc_id=academic-105485-koreyst), który wykonuje obliczenia matematyczne. - -### Falcon - -[Falcon](https://huggingface.co/tiiuae?WT.mc_id=academic-105485-koreyst) to LLM stworzony przez Technology Innovation Institute (**TII**). Falcon-40B został wytrenowany na 40 miliardach parametrów, co wykazało lepszą wydajność niż GPT-3 przy mniejszym budżecie obliczeniowym. Wynika to z zastosowania algorytmu FlashAttention i multiquery attention, które umożliwiają zmniejszenie wymagań pamięciowych podczas wnioskowania. Dzięki temu skróconemu czasowi wnioskowania Falcon-40B nadaje się do aplikacji czatowych. - -Niektóre przykłady dostrojonych wersji Falcon to [OpenAssistant](https://huggingface.co/OpenAssistant/falcon-40b-sft-top1-560?WT.mc_id=academic-105485-koreyst), asystent zbudowany na otwartych modelach, oraz [GPT4ALL](https://huggingface.co/nomic-ai/gpt4all-falcon?WT.mc_id=academic-105485-koreyst), który zapewnia wyższą wydajność niż model podstawowy. - -## Jak Wybrać - -Nie ma jednej odpowiedzi na pytanie, jak wybrać otwarty model. Dobrym punktem wyjścia jest skorzystanie z funkcji filtrowania według zadań w Azure AI Studio. Pomoże to zrozumieć, do jakiego rodzaju zadań model został wytrenowany. Hugging Face prowadzi również Tablicę Liderów LLM, która pokazuje najlepiej działające modele w oparciu o określone metryki. - -Porównując LLM różnych typów, [Artificial Analysis](https://artificialanalysis.ai/?WT.mc_id=academic-105485-koreyst) to kolejne świetne źródło: - -![Jakość Modelu](../../images/model-quality.png?WT.mc_id=academic-105485-koreyst) -Źródło: Artifical Analysis - -Jeśli pracujesz nad konkretnym przypadkiem użycia, poszukiwanie dostrojonych wersji skupionych na tym samym obszarze może być skuteczne. Eksperymentowanie z wieloma otwartymi modelami, aby zobaczyć, jak działają zgodnie z Twoimi oczekiwaniami i oczekiwaniami użytkowników, to kolejna dobra praktyka. - -## Następne Kroki - -Najlepszą częścią otwartych modeli jest to, że możesz zacząć z nimi pracować dość szybko. Sprawdź [Katalog Modeli Azure AI Studio](https://ai.azure.com?WT.mc_id=academic-105485-koreyst), który zawiera specjalną kolekcję Hugging Face z modelami, o których tutaj dyskutowaliśmy. - -## Nauka się tu nie kończy, kontynuuj Podróż - -Po ukończeniu tej lekcji sprawdź naszą [Kolekcję Nauki o Generatywnej AI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst), aby dalej podnosić swoją wiedzę o Generatywnej AI! diff --git a/16-open-source-models/translations/tw/README.md b/16-open-source-models/translations/tw/README.md deleted file mode 100644 index 3c9bc19607..0000000000 --- a/16-open-source-models/translations/tw/README.md +++ /dev/null @@ -1,80 +0,0 @@ -[![開放原始碼模型](../../images/16-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson16-gh?WT.mc_id=academic-105485-koreyst) - -## 簡介 - -開放原始碼 LLMs 的世界令人興奮且不斷演變。本課程旨在深入了解開放原始碼模型。如果您正在尋找有關專有模型與開放原始碼模型比較的資訊,請參閱["探索和比較不同的 LLMs" 課程](../../../02-exploring-and-comparing-different-llms/translations/tw/README.md?WT.mc_id=academic-105485-koreyst)。本課程還將涵蓋微調的主題,但更詳細的解釋可以在["微調 LLMs" 課程](../../../18-fine-tuning/translations/tw/README.md?WT.mc_id=academic-105485-koreyst)中找到。 - -## 學習目標 - -- 瞭解開放原始碼模型 -- 瞭解使用開放原始碼模型的好處 -- 探索 Hugging Face 和 Azure AI Studio 上可用的開放模型 - -## 什麼是開放原始碼模型? - -開放原始碼軟體在各個領域的技術發展中扮演了至關重要的角色。開放原始碼倡議(OSI)已經定義了[軟體的10個標準](https://web.archive.org/web/20241126001143/https://opensource.org/osd?WT.mc_id=academic-105485-koreyst),以將其歸類為開放原始碼。源程式碼必須在OSI批准的許可下公開共享。 - -雖然 LLMs 的開發與軟體開發有相似的元素,但過程並不完全相同。這在社群中引發了許多關於 LLMs 背景下開放原始碼定義的討論。要使模型符合傳統的開放原始碼定義,以下資訊應該公開可用: - -- 用於訓練模型的數據集。 -- 作為訓練的一部分的完整模型權重。 -- 評估程式碼。 -- 微調程式碼。 -- 完整模型權重和訓練指標。 - -目前只有少數模型符合此標準。[由Allen Institute for Artificial Intelligence (AllenAI) 創建的OLMo模型](https://huggingface.co/allenai/OLMo-7B?WT.mc_id=academic-105485-koreyst) 就是其中之一。 - -在本課程中,我們將這些模型稱為「開放模型」,因為在撰寫時它們可能不符合上述標準。 - -## 開放模型的好處 - -**高度可定制** - 由於開放模型發布時附有詳細的訓練資訊,研究人員和開發人員可以修改模型的內部結構。這使得能夠建立即高度專門化的模型,針對特定任務或研究領域進行微調。一些範例包括程式碼產生器、數學運算和生物學。 - -**成本** - 使用和部署這些模型的每個 token 成本低於專有模型。在建構生成式 AI 應用程式時,應該在您的使用案例中考量這些模型的性能與價格。 - -![Model Cost](../../images/model-price.png?WT.mc_id=academic-105485-koreyst) -來源: 人工分析 - -**靈活性** - 使用開放模型使您在使用不同模型或結合它們方面更加靈活。一個範例是 [HuggingChat Assistants](https://huggingface.co/chat?WT.mc_id=academic-105485-koreyst),用戶可以直接在使用者介面中選擇所使用的模型: - -![選擇模型](../../images/choose-model.png?WT.mc_id=academic-105485-koreyst) - -## 探索不同的開放模型 - -### Llama 2 - -[LLama2](https://huggingface.co/meta-llama?WT.mc_id=academic-105485-koreyst), 由 Meta 開發,是一個針對聊天應用程式最佳化的開放模型。這是由於其微調方法,包括大量的對話和人類反饋。通過這種方法,模型產生更多符合人類期望的結果,從而提供更好的用戶體驗。 - -一些經過微調的Llama版本範例包括專門用於日語的[Japanese Llama](https://huggingface.co/elyza/ELYZA-japanese-Llama-2-7b?WT.mc_id=academic-105485-koreyst)和增強版基礎模型的[Llama Pro](https://huggingface.co/TencentARC/LLaMA-Pro-8B?WT.mc_id=academic-105485-koreyst)。 - -### Mistral - -[Mistral](https://huggingface.co/mistralai?WT.mc_id=academic-105485-koreyst)是一個專注於高效能和效率的開放模型。它使用專家混合方法,將一組專門的專家模型組合成一個系統,根據輸入選擇特定的模型來使用。這使得計算更加有效,因為模型只處理它們專門的輸入。 - -一些微調版本的Mistral範例包括專注於醫療領域的[BioMistral](https://huggingface.co/BioMistral/BioMistral-7B?text=Mon+nom+est+Thomas+et+mon+principal?WT.mc_id=academic-105485-koreyst)和進行數學計算的[OpenMath Mistral](https://huggingface.co/nvidia/OpenMath-Mistral-7B-v0.1-hf?WT.mc_id=academic-105485-koreyst)。 - -### Falcon - -[Falcon](https://huggingface.co/tiiuae?WT.mc_id=academic-105485-koreyst) 是由技術創新研究所(**TII**)創建的 LLM。Falcon-40B 在 400 億個參數上進行了訓練,已顯示出在較少計算預算下比 GPT-3 表現更好。這是由於其使用了 FlashAttention 演算法和多查詢注意力,使其能夠在推論時減少記憶體需求。由於這種減少的推論時間,Falcon-40B 適用於聊天應用程式。 - -一些 Falcon 微調版本的範例包括 [OpenAssistant](https://huggingface.co/OpenAssistant/falcon-40b-sft-top1-560?WT.mc_id=academic-105485-koreyst),一個基於開放模型的助手和 [GPT4ALL](https://huggingface.co/nomic-ai/gpt4all-falcon?WT.mc_id=academic-105485-koreyst),其性能高於基礎模型。 - -## 如何選擇 - -選擇開放模型沒有唯一的答案。一個好的開始是使用 Azure AI Studio 的任務篩選功能。這將幫助你了解模型已經被訓練用於哪些類型的任務。Hugging Face 也維護了一個 LLM 排行榜,顯示基於某些指標的最佳表現模型。 - -在比較不同類型的LLM時,[Artificial Analysis](https://artificialanalysis.ai/?WT.mc_id=academic-105485-koreyst) 是另一個很好的資源: - -![模型品質](../../images/model-quality.png?WT.mc_id=academic-105485-koreyst) -來源: 人工分析 - -如果處理特定用例,搜尋專注於相同領域的微調版本可能會很有效。嘗試多個開放模型,看看它們如何根據你和你的用戶的期望表現,也是另一個好做法。 - -## 下一步 - -開放模型最棒的部分是你可以很快地開始使用它們。查看 [Azure AI Studio Model Catalog](https://ai.azure.com?WT.mc_id=academic-105485-koreyst),其中包含我們在此討論的特定 Hugging Face 集合。 - -## 學習不止於此,繼續旅程 - -完成本課程後,請查看我們的[生成式 AI 學習集合](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst)以繼續提升您的生成式 AI 知識! - diff --git a/17-ai-agents/translations/pl/README.md b/17-ai-agents/translations/pl/README.md deleted file mode 100644 index 3b5c56a53f..0000000000 --- a/17-ai-agents/translations/pl/README.md +++ /dev/null @@ -1,161 +0,0 @@ -[![Agenci AI](../../images/17-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson17-gh?WT.mc_id=academic-105485-koreyst) - -## Wprowadzenie - -Agenci AI stanowią ekscytujący rozwój w dziedzinie Generatywnej AI, umożliwiając Dużym Modelom Językowym (LLM) ewolucję z asystentów w agentów zdolnych do podejmowania działań. Frameworki Agentów AI umożliwiają programistom tworzenie aplikacji, które dają LLM dostęp do narzędzi i zarządzania stanem. Frameworki te zwiększają również widoczność, pozwalając użytkownikom i programistom monitorować działania planowane przez LLM, co poprawia zarządzanie doświadczeniem. - -Lekcja obejmie następujące obszary: - -- Zrozumienie, czym jest Agent AI - Czym dokładnie jest Agent AI? -- Odkrywanie czterech różnych Frameworków Agentów AI - Co czyni je wyjątkowymi? -- Zastosowanie tych Agentów AI do różnych przypadków użycia - Kiedy powinniśmy używać Agentów AI? - -## Cele nauki - -Po ukończeniu tej lekcji będziesz potrafił: - -- Wyjaśnić, czym są Agenci AI i jak mogą być używani. -- Rozumieć różnice między niektórymi popularnymi Frameworkami Agentów AI i czym się różnią. -- Zrozumieć, jak funkcjonują Agenci AI, aby budować z nimi aplikacje. - -## Czym są Agenci AI? - -Agenci AI to bardzo ekscytująca dziedzina w świecie Generatywnej AI. Z tym podekscytowaniem wiąże się czasem zamieszanie w terminologii i jej zastosowaniu. Aby uprościć sprawę i objąć większość narzędzi odnoszących się do Agentów AI, będziemy używać następującej definicji: - -Agenci AI pozwalają Dużym Modelom Językowym (LLM) wykonywać zadania, dając im dostęp do **stanu** i **narzędzi**. - -![Model Agenta](../../images/what-agent.png?WT.mc_id=academic-105485-koreyst) - -Zdefiniujmy te terminy: - -**Duże Modele Językowe** - Są to modele, o których mowa w całym tym kursie, takie jak GPT-3.5, GPT-4, Llama-2 itp. - -**Stan** - Odnosi się do kontekstu, w którym działa LLM. LLM wykorzystuje kontekst swoich przeszłych działań i bieżący kontekst, kierując podejmowaniem decyzji dotyczących kolejnych działań. Frameworki Agentów AI ułatwiają programistom utrzymanie tego kontekstu. - -**Narzędzia** - Aby ukończyć zadanie zlecone przez użytkownika i zaplanowane przez LLM, LLM potrzebuje dostępu do narzędzi. Przykładami narzędzi mogą być baza danych, API, zewnętrzna aplikacja, a nawet inny LLM! - -Mamy nadzieję, że te definicje dadzą Ci dobre podstawy w dalszej części, gdy przyjrzymy się, jak są one wdrażane. Zbadajmy kilka różnych frameworków Agentów AI: - -## Agenci LangChain - -[Agenci LangChain](https://python.langchain.com/docs/how_to/#agents?WT.mc_id=academic-105485-koreyst) to implementacja definicji, które przedstawiliśmy powyżej. - -Aby zarządzać **stanem**, używa wbudowanej funkcji o nazwie `AgentExecutor`. Akceptuje ona zdefiniowanego `agenta` i `narzędzia`, które są dla niego dostępne. - -`AgentExecutor` przechowuje również historię czatu, aby zapewnić kontekst rozmowy. - -![Agenci Langchain](../../images/langchain-agents.png?WT.mc_id=academic-105485-koreyst) - -LangChain oferuje [katalog narzędzi](https://integrations.langchain.com/tools?WT.mc_id=academic-105485-koreyst), które można zaimportować do aplikacji, do których LLM może uzyskać dostęp. Są one tworzone przez społeczność i zespół LangChain. - -Następnie możesz zdefiniować te narzędzia i przekazać je do `AgentExecutor`. - -Widoczność to kolejny ważny aspekt, gdy mówimy o Agentach AI. Ważne jest, aby twórcy aplikacji rozumieli, którego narzędzia używa LLM i dlaczego. W tym celu zespół LangChain opracował LangSmith. - -## AutoGen - -Następnym frameworkiem Agentów AI, który omówimy, jest [AutoGen](https://microsoft.github.io/autogen/?WT.mc_id=academic-105485-koreyst). Głównym celem AutoGen są konwersacje. Agenci są zarówno **konwersacyjni**, jak i **konfigurowalni**. - -**Konwersacyjni -** LLM mogą rozpoczynać i kontynuować rozmowę z innym LLM w celu ukończenia zadania. Odbywa się to poprzez tworzenie `AssistantAgents` i nadawanie im określonej wiadomości systemowej. - -```python - -autogen.AssistantAgent( name="Coder", llm_config=llm_config, ) pm = autogen.AssistantAgent( name="Product_manager", system_message="Kreatywny w pomysłach na produkty oprogramowania.", llm_config=llm_config, ) - -``` - -**Konfigurowalni** - Agenci mogą być definiowani nie tylko jako LLM, ale także jako użytkownik lub narzędzie. Jako programista możesz zdefiniować `UserProxyAgent`, który jest odpowiedzialny za interakcję z użytkownikiem w celu uzyskania informacji zwrotnej podczas wykonywania zadania. Ta informacja zwrotna może kontynuować wykonywanie zadania lub je zatrzymać. - -```python -user_proxy = UserProxyAgent(name="user_proxy") -``` - -### Stan i Narzędzia - -Aby zmienić i zarządzać stanem, Agent Asystent generuje kod Pythona w celu ukończenia zadania. - -Oto przykład procesu: - -![AutoGen](../../images/autogen.png?WT.mc_id=academic-105485-koreyst) - -#### LLM Zdefiniowany za pomocą Wiadomości Systemowej - -```python -system_message="W przypadku zadań związanych z pogodą używaj tylko funkcji, które zostały Ci udostępnione. Odpowiedz TERMINATE, gdy zadanie zostanie zakończone." -``` - -Ta wiadomość systemowa kieruje konkretny LLM do funkcji istotnych dla jego zadania. Pamiętaj, że w AutoGen możesz mieć wiele zdefiniowanych AssistantAgents z różnymi wiadomościami systemowymi. - -#### Czat jest Inicjowany przez Użytkownika - -```python -user_proxy.initiate_chat( chatbot, message="Planuję wycieczkę do Nowego Jorku w przyszłym tygodniu, czy możesz mi pomóc wybrać ubrania? ", ) - -``` - -Ta wiadomość od user_proxy (Człowieka) jest tym, co rozpocznie proces eksploracji przez Agenta możliwych funkcji, które powinien wykonać. - -#### Funkcja jest Wykonywana - -```bash -chatbot (do user_proxy): - -***** Sugerowane wywołanie narzędzia: get_weather ***** Argumenty: {"location":"Nowy Jork, NY","time_periond:"7","temperature_unit":"Celsjusz"} ******************************************************** -------------------------------------------------------------------------------- - ->>>>>>>> WYKONYWANIE FUNKCJI get_weather... user_proxy (do chatbot): ***** Odpowiedź z wywołania funkcji "get_weather" ***** 112.22727272727272 EUR **************************************************************** - -``` - -Po przetworzeniu początkowego czatu Agent wyśle sugerowane narzędzie do wywołania. W tym przypadku jest to funkcja o nazwie `get_weather`. W zależności od konfiguracji, ta funkcja może być automatycznie wykonywana i odczytywana przez Agenta lub może być wykonywana na podstawie danych wejściowych użytkownika. - -Listę [próbek kodu AutoGen](https://microsoft.github.io/autogen/docs/Examples/?WT.mc_id=academic-105485-koreyst) znajdziesz, aby dalej eksplorować, jak zacząć budować. - -## Taskweaver - -Następnym frameworkiem agentów, który zbadamy, jest [Taskweaver](https://microsoft.github.io/TaskWeaver/?WT.mc_id=academic-105485-koreyst). Jest znany jako agent "code-first", ponieważ zamiast pracować wyłącznie z `stringami`, może pracować z DataFrame w Pythonie. Staje się to niezwykle przydatne w zadaniach analizy i generowania danych. Mogą to być rzeczy takie jak tworzenie wykresów i diagramów lub generowanie liczb losowych. - -### Stan i Narzędzia - -Aby zarządzać stanem konwersacji, TaskWeaver wykorzystuje koncepcję `Plannera`. `Planner` to LLM, który przyjmuje żądanie od użytkowników i planuje zadania, które należy wykonać, aby spełnić to żądanie. - -Aby ukończyć zadania, `Planner` ma dostęp do kolekcji narzędzi zwanych `Pluginami`. Mogą to być klasy Pythona lub ogólny interpreter kodu. Te pluginy są przechowywane jako embeddingi, aby LLM mógł lepiej wyszukać odpowiedni plugin. - -![Taskweaver](../../images/taskweaver.png?WT.mc_id=academic-105485-koreyst) - -Oto przykład pluginu do obsługi wykrywania anomalii: - -```python -class AnomalyDetectionPlugin(Plugin): def __call__(self, df: pd.DataFrame, time_col_name: str, value_col_name: str): -``` - -Kod jest weryfikowany przed wykonaniem. Inną funkcją do zarządzania kontekstem w Taskweaver jest `experience`. Experience pozwala na przechowywanie kontekstu konwersacji długoterminowo w pliku YAML. Można to skonfigurować tak, aby LLM poprawiał się z czasem w określonych zadaniach, biorąc pod uwagę wcześniejsze konwersacje. - -## JARVIS - -Ostatnim frameworkiem agentów, który zbadamy, jest [JARVIS](https://github.com/microsoft/JARVIS?tab=readme-ov-file?WT.mc_id=academic-105485-koreyst). To, co czyni JARVIS wyjątkowym, to fakt, że używa LLM do zarządzania `stanem` konwersacji, a `narzędziami` są inne modele AI. Każdy z modeli AI to wyspecjalizowane modele wykonujące określone zadania, takie jak wykrywanie obiektów, transkrypcja czy tworzenie podpisów pod obrazami. - -![JARVIS](../../images/jarvis.png?WT.mc_id=academic-105485-koreyst) - -LLM, będąc modelem ogólnego przeznaczenia, odbiera żądanie od użytkownika i identyfikuje konkretne zadanie oraz wszelkie argumenty/dane potrzebne do jego wykonania. - -```python -[{"task": "object-detection", "id": 0, "dep": [-1], "args": {"image": "e1.jpg" }}] -``` - -Następnie LLM formatuje żądanie w sposób, który wyspecjalizowany model AI może zinterpretować, na przykład w formacie JSON. Gdy model AI zwróci swoją predykcję na podstawie zadania, LLM odbiera odpowiedź. - -Jeśli do wykonania zadania wymagane jest wiele modeli, zinterpretuje również odpowiedzi z tych modeli, zanim połączy je w celu wygenerowania odpowiedzi dla użytkownika. - -Poniższy przykład pokazuje, jak to działa, gdy użytkownik prosi o opis i liczbę obiektów na zdjęciu: - -## Zadanie - -Aby kontynuować naukę o Agentach AI, możesz zbudować za pomocą AutoGen: - -- Aplikację symulującą spotkanie biznesowe z różnymi działami startupu edukacyjnego. -- Stwórz wiadomości systemowe, które kierują LLM w zrozumieniu różnych person i priorytetów, i umożliwiają użytkownikowi przedstawienie nowego pomysłu na produkt. -- Następnie LLM powinien wygenerować pytania uzupełniające z każdego działu, aby dopracować i ulepszyć prezentację oraz pomysł na produkt. - -## Nauka się tu nie kończy, kontynuuj Podróż - -Po ukończeniu tej lekcji sprawdź naszą [Kolekcję Nauki o Generatywnej AI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst), aby dalej podnosić swoją wiedzę o Generatywnej AI! diff --git a/17-ai-agents/translations/tw/README.md b/17-ai-agents/translations/tw/README.md deleted file mode 100644 index 786c1bc847..0000000000 --- a/17-ai-agents/translations/tw/README.md +++ /dev/null @@ -1,161 +0,0 @@ -[![開放原始碼模型](../../images/17-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson17-gh?WT.mc_id=academic-105485-koreyst) - -## 簡介 - -AI代理代表了生成式AI的一個令人興奮的發展,使大型語言模型(LLMs)從助手演變為能夠採取行動的代理。AI代理框架使開發者能夠建立應用程式,讓LLMs能夠訪問工具和狀態管理。這些框架還增強了可見性,使用戶和開發者能夠監控LLMs計劃的行動,從而改善體驗管理。 - -這節課將涵蓋以下領域: - -- 理解什麼是 AI Agent - AI Agent 到底是什麼? -- 探索四種不同的 AI Agent 框架 - 它們有什麼獨特之處? -- 將這些 AI Agent 應用於不同的使用案例 - 我們應該何時使用 AI Agent? - -## 學習目標 - -完成這節課後,你將能夠: - -- 解釋什麼是 AI 代理以及它們如何使用。 -- 了解一些流行的 AI 代理框架之間的差異,以及它們的不同之處。 -- 了解 AI 代理如何運作,以便使用它們建構應用程式。 - -## 什麼是 AI 代理? - -AI代理是一個在生成式AI世界中非常令人興奮的領域。隨著這種興奮,有時會出現術語和其應用的混淆。為了保持簡單並包含大多數提到AI代理的工具,我們將使用這一定義: - -AI Agents 允許大型語言模型(LLMs)透過提供**狀態**和**工具**來執行任務。 - -![代理模型](../../images/what-agent.png?WT.mc_id=academic-105485-koreyst) - -讓我們定義這些術語: - -**大型語言模型** - 這些是本課程中提到的模型,例如 GPT-3.5、GPT-4、Llama-2 等。 - -**狀態** - 這指的是LLM正在工作的上下文。LLM使用其過去行動的上下文和當前上下文,指導其後續行動的決策。AI代理框架允許開發人員更容易地維護此上下文。 - -**工具** - 為了完成使用者請求的任務以及 LLM 所規劃的任務,LLM 需要訪問工具。一些工具的範例可以是資料庫、API、外部應用程式甚至是另一個 LLM! - -這些定義希望能在我們了解它們如何實現時,為你打下良好的基礎。讓我們來探索幾個不同的 AI Agent 框架: - -## LangChain Agents - -[LangChain Agents](https://python.langchain.com/docs/how_to/#agents?WT.mc_id=academic-105485-koreyst) 是我們上述定義的實現。 - -要管理**狀態**,它使用一個名為 `AgentExecutor` 的內建函式。這個函式接受定義的 `agent` 和可用的 `tools`。 - -`Agent Executor` 也儲存聊天記錄以提供聊天的上下文。 - -![Langchain Agents](../../images/langchain-agents.png?WT.mc_id=academic-105485-koreyst) - -LangChain 提供一個[工具目錄](https://integrations.langchain.com/tools?WT.mc_id=academic-105485-koreyst),可以匯入到您的應用程式中,LLM 可以存取這些工具。這些工具由社群和 LangChain 團隊製作。 - -然後你可以定義這些工具並將它們傳遞給 `Agent Executor`。 - -可見性是討論 AI 代理時另一個重要方面。應用程式開發人員需要了解 LLM 使用的是哪種工具以及為什麼。為此,LangChain 團隊開發了 LangSmith。 - -## AutoGen - -下一個我們將討論的 AI Agent 框架是 [AutoGen](https://microsoft.github.io/autogen/?WT.mc_id=academic-105485-koreyst)。AutoGen 的主要焦點是對話。Agents 既是**可對話的**也是**可定制的**。 - -**Conversable -** LLMs 可以啟動並繼續與另一個 LLM 的對話以完成任務。這是通過建立 `AssistantAgents` 並給予它們特定的系統訊息來完成的。 - -```python - -autogen.AssistantAgent( name="Coder", llm_config=llm_config, ) pm = autogen.AssistantAgent( name="Product_manager", system_message="Creative in software product ideas.", llm_config=llm_config, ) - -``` - -**可自訂** - Agent 不僅可以定義為 LLMs,也可以是使用者或工具。作為開發者,你可以定義一個 `UserProxyAgent`,負責與使用者互動以獲取完成任務的反饋。這些反饋可以繼續執行任務或停止它。 - -```python -user_proxy = UserProxyAgent(name="user_proxy") -``` - -### 狀態和工具 - -為了改變和管理狀態,助手代理生成Python程式碼來完成任務。 - -這裡是一個過程的範例: - -![AutoGen](../../images/autogen.png?WT.mc_id=academic-105485-koreyst) - -#### 定義 LLM 的系統訊息 - -```python -system_message="對於天氣相關的任務,只使用提供給你的函式。任務完成後回覆 TERMINATE。" -``` - -此系統訊息指導此特定 LLM 哪些函式與其任務相關。請記住,使用 AutoGen 時,您可以有多個具有不同系統訊息的 AssistantAgents。 - -#### 聊天由使用者發起 - -```python -user_proxy.initiate_chat( chatbot, message="我計劃下週去紐約旅行,你能幫我選擇穿什麼嗎?", ) -``` - -此訊息來自 user_proxy (人類) 是啟動代理探索應執行的可能函式的過程。 - -#### 函式被執行 - -```bash -聊天機器人 (to user_proxy): - -***** 建議的工具呼叫: get_weather ***** 參數: {"location":"New York City, NY","time_periond:"7","temperature_unit":"Celsius"} ******************************************************** -------------------------------------------------------------------------------- - ->>>>>>>> 執行函式 get_weather... user_proxy (to 聊天機器人): ***** 呼叫函式 "get_weather" 的回應 ***** 112.22727272727272 EUR **************************************************************** - -``` - -一旦初始聊天處理完成,代理將發送建議的工具來呼叫。在這種情況下,它是一個名為 `get_weather` 的函式。根據您的配置,這個函式可以由代理自動執行和讀取,或者可以根據用戶輸入來執行。 - -你可以找到[AutoGen 程式碼範例](https://microsoft.github.io/autogen/docs/Examples/?WT.mc_id=academic-105485-koreyst)來進一步探索如何開始建構。 - -## Taskweaver - -接下來我們將探討的代理框架是 [Taskweaver](https://microsoft.github.io/TaskWeaver/?WT.mc_id=academic-105485-koreyst)。它被稱為「程式碼優先」代理,因為它不僅僅是嚴格地與 `strings` 一起工作,它還可以與 Python 中的 DataFrames 一起工作。這對於資料分析和生成任務變得非常有用。這可以是建立圖表或生成隨機數等事情。 - -### 狀態和工具 - -為了管理對話的狀態,TaskWeaver 使用了 `Planner` 的概念。`Planner` 是一個 LLM,它接收用戶的請求並規劃出需要完成的任務,以滿足這些請求。 - -為了完成任務,`Planner` 會接觸到稱為 `Plugins` 的工具集合。這可以是 Python 類別或一般的程式碼解釋器。這些插件被儲存為嵌入,以便 LLM 能夠更好地搜尋正確的插件。 - -![Taskweaver](../../images/taskweaver.png?WT.mc_id=academic-105485-koreyst) - -這裡是一個處理異常檢測的插件範例: - -```python -類別 AnomalyDetectionPlugin(Plugin): def __call__(self, df: pd.DataFrame, time_col_name: str, value_col_name: str): -``` - -程式碼在執行前會被驗證。Taskweaver 中管理上下文的另一個功能是 `experience`。Experience 允許將對話的上下文長期存儲在 YAML 檔案中。這可以配置,使得 LLM 隨著時間的推移在某些任務上有所改進,前提是它接觸到先前的對話。 - -## JARVIS - -最後我們將探討的代理框架是 [JARVIS](https://github.com/microsoft/JARVIS?tab=readme-ov-file?WT.mc_id=academic-105485-koreyst)。JARVIS 的獨特之處在於它使用 LLM 來管理對話的 `state`,而 `tools` 是其他 AI 模型。每個 AI 模型都是專門的模型,執行某些任務,例如物件檢測、轉錄或圖像標註。 - -![JARVIS](../../images/jarvis.png?WT.mc_id=academic-105485-koreyst) - -LLM 作為一個通用模型,接收來自使用者的請求並識別特定任務及完成任務所需的任何參數/資料。 - -```python -[{"task": "物件-detection", "id": 0, "dep": [-1], "args": {"image": "e1.jpg" }}] -``` - -LLM 然後以專門的 AI 模型能夠解釋的方式格式化請求,例如 JSON。一旦 AI 模型根據任務返回其預測,LLM 便會接收回應。 - -如果需要多個模型來完成任務,它還會解釋這些模型的回應,然後將它們整合起來生成對用戶的回應。 - -範例如下顯示當使用者請求描述和計算圖片中的物件時,這將如何運作: - -## 作業 - -為了繼續學習可以使用 AutoGen 建構的 AI 代理: - -- 一個模擬教育初創公司不同部門商務會議的應用程式。 -- 建立系統訊息,引導LLM理解不同角色和優先事項,並使使用者能夠提出新的產品創意。 -- 然後,LLM應從每個部門生成後續問題,以完善和改進提案和產品創意。 - -## 學習不止於此,繼續旅程 - -完成本課程後,請查看我們的[生成式 AI 學習集合](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst)以繼續提升您的生成式 AI 知識! - diff --git a/18-fine-tuning/translations/pl/README.md b/18-fine-tuning/translations/pl/README.md deleted file mode 100644 index da75ad38b5..0000000000 --- a/18-fine-tuning/translations/pl/README.md +++ /dev/null @@ -1,97 +0,0 @@ -[![Dostrajanie LLM](../../img/18-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson18-gh?WT.mc_id=academic-105485-koreyst) - -# Dostrajanie Twojego LLM - -Używanie dużych modeli językowych do tworzenia aplikacji generatywnej AI wiąże się z nowymi wyzwaniami. Kluczową kwestią jest zapewnienie jakości odpowiedzi (dokładności i trafności) w treści generowanej przez model dla danego żądania użytkownika. W poprzednich lekcjach omawialiśmy techniki takie jak inżynieria promptów i retrieval-augmented generation, które próbują rozwiązać problem poprzez _modyfikację danych wejściowych promptu_ do istniejącego modelu. - -W dzisiejszej lekcji omawiamy trzecią technikę, **dostrajanie (fine-tuning)**, która próbuje sprostać wyzwaniu poprzez _ponowne trenowanie samego modelu_ z dodatkowymi danymi. Zagłębmy się w szczegóły. - -## Cele Nauki - -Ta lekcja wprowadza pojęcie dostrajania dla wstępnie wytrenowanych modeli językowych, bada korzyści i wyzwania tego podejścia oraz dostarcza wskazówek, kiedy i jak używać dostrajania do poprawy wydajności Twoich modeli generatywnej AI. - -Po ukończeniu tej lekcji powinieneś być w stanie odpowiedzieć na następujące pytania: - -- Czym jest dostrajanie dla modeli językowych? -- Kiedy i dlaczego dostrajanie jest przydatne? -- Jak mogę dostroić wstępnie wytrenowany model? -- Jakie są ograniczenia dostrajania? - -Gotowy? Zaczynajmy. - -## Ilustrowany Przewodnik - -Chcesz zobaczyć ogólny obraz tego, co omówimy, zanim zagłębimy się w temat? Sprawdź ten ilustrowany przewodnik, który opisuje podróż edukacyjną tej lekcji - od nauki podstawowych koncepcji i motywacji do dostrajania, po zrozumienie procesu i najlepszych praktyk wykonywania zadania dostrajania. To fascynujący temat do eksploracji, więc nie zapomnij sprawdzić strony [Zasoby](./RESOURCES.md?WT.mc_id=academic-105485-koreyst), aby znaleźć dodatkowe linki wspierające Twoją samodzielną podróż edukacyjną! - -![Ilustrowany Przewodnik po Dostrajaniu Modeli Językowych](../../img/18-fine-tuning-sketchnote.png?WT.mc_id=academic-105485-koreyst) - -## Czym jest dostrajanie dla modeli językowych? - -Z definicji, duże modele językowe są _wstępnie trenowane_ na dużych ilościach tekstu pochodzącego z różnorodnych źródeł, w tym z internetu. Jak nauczyliśmy się w poprzednich lekcjach, potrzebujemy technik takich jak _inżynieria promptów_ i _retrieval-augmented generation_, aby poprawić jakość odpowiedzi modelu na pytania użytkownika ("prompty"). - -Popularna technika inżynierii promptów polega na dawaniu modelowi więcej wskazówek na temat tego, czego oczekuje się w odpowiedzi, albo poprzez dostarczanie _instrukcji_ (jawne wskazówki), albo _podawanie mu kilku przykładów_ (niejawne wskazówki). Nazywa się to _uczeniem few-shot_, ale ma ono dwa ograniczenia: - -- Limity tokenów modelu mogą ograniczać liczbę przykładów, które możesz podać, i ograniczać skuteczność. -- Koszty tokenów modelu mogą sprawić, że dodawanie przykładów do każdego promptu będzie drogie i ograniczy elastyczność. - -Dostrajanie jest powszechną praktyką w systemach uczenia maszynowego, gdzie bierzemy wstępnie wytrenowany model i ponownie go trenujemy z nowymi danymi, aby poprawić jego wydajność w konkretnym zadaniu. W kontekście modeli językowych możemy dostroić wstępnie wytrenowany model _za pomocą wyselekcjonowanego zestawu przykładów dla danego zadania lub domeny aplikacji_, aby stworzyć **model niestandardowy**, który może być bardziej dokładny i trafny dla tego konkretnego zadania lub domeny. Dodatkową korzyścią z dostrajania jest to, że może ono również zmniejszyć liczbę przykładów potrzebnych do uczenia few-shot - redukując zużycie tokenów i związane z tym koszty. - -## Kiedy i dlaczego powinniśmy dostrajać modele? - -W _tym_ kontekście, gdy mówimy o dostrajaniu, mamy na myśli **nadzorowane** dostrajanie, gdzie ponowne trenowanie odbywa się poprzez **dodanie nowych danych**, które nie były częścią oryginalnego zbioru danych treningowych. Różni się to od podejścia nienadzorowanego dostrajania, gdzie model jest ponownie trenowany na oryginalnych danych, ale z innymi hiperparametrami. - -Kluczową rzeczą do zapamiętania jest to, że dostrajanie jest zaawansowaną techniką, która wymaga pewnego poziomu wiedzy, aby uzyskać pożądane rezultaty. Jeśli zostanie wykonane nieprawidłowo, może nie przynieść oczekiwanych ulepszeń, a nawet może pogorszyć wydajność modelu dla Twojej docelowej domeny. - -Więc zanim dowiesz się, "jak" dostrajać modele językowe, musisz wiedzieć, "dlaczego" powinieneś wybrać tę drogę i "kiedy" rozpocząć proces dostrajania. Zacznij od zadania sobie tych pytań: - -- **Przypadek użycia**: Jaki jest Twój _przypadek użycia_ dla dostrajania? Jaki aspekt obecnego wstępnie wytrenowanego modelu chcesz poprawić? -- **Alternatywy**: Czy próbowałeś _innych technik_, aby osiągnąć pożądane wyniki? Użyj ich do stworzenia punktu odniesienia do porównania. - - Inżynieria promptów: Wypróbuj techniki takie jak prompting few-shot z przykładami trafnych odpowiedzi na prompty. Oceń jakość odpowiedzi. - - Retrieval Augmented Generation: Spróbuj wzbogacać prompty wynikami zapytań uzyskanymi poprzez przeszukiwanie Twoich danych. Oceń jakość odpowiedzi. -- **Koszty**: Czy zidentyfikowałeś koszty dostrajania? - - Możliwość dostrojenia - czy wstępnie wytrenowany model jest dostępny do dostrajania? - - Wysiłek - przygotowanie danych treningowych, ocena i udoskonalanie modelu. - - Obliczenia - uruchamianie zadań dostrajania i wdrażanie dostrojonego modelu - - Dane - dostęp do wystarczającej jakości przykładów, aby dostrajanie miało wpływ -- **Korzyści**: Czy potwierdziłeś korzyści płynące z dostrajania? - - Jakość - czy dostrojony model przewyższył punkt odniesienia? - - Koszt - czy redukuje zużycie tokenów poprzez uproszczenie promptów? - - Rozszerzalność - czy możesz ponownie wykorzystać model podstawowy dla nowych domen? - -Odpowiadając na te pytania, powinieneś być w stanie zdecydować, czy dostrajanie jest właściwym podejściem dla Twojego przypadku użycia. Idealnie, podejście jest zasadne tylko wtedy, gdy korzyści przewyższają koszty. Gdy zdecydujesz się kontynuować, nadszedł czas, aby pomyśleć o tym, _jak_ możesz dostroić wstępnie wytrenowany model. - -Chcesz uzyskać więcej informacji na temat procesu podejmowania decyzji? Obejrzyj [Dostrajać czy nie dostrajać](https://www.youtube.com/watch?v=0Jo-z-MFxJs) - -## Jak możemy dostroić wstępnie wytrenowany model? - -Aby dostroić wstępnie wytrenowany model, potrzebujesz: - -- wstępnie wytrenowanego modelu do dostrojenia -- zbioru danych do użycia do dostrajania -- środowiska treningowego do uruchomienia zadania dostrajania -- środowiska hostingowego do wdrożenia dostrojonego modelu - -## Dostrajanie w Akcji - -Poniższe zasoby zawierają samouczki krok po kroku, które przeprowadzą Cię przez rzeczywisty przykład przy użyciu wybranego modelu z wyselekcjonowanym zbiorem danych. Aby przejść przez te samouczki, potrzebujesz konta u określonego dostawcy, wraz z dostępem do odpowiedniego modelu i zbiorów danych. - -| Dostawca | Samouczek | Opis | -| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| OpenAI | [Jak dostrajać modele czatu](https://github.com/openai/openai-cookbook/blob/main/examples/How_to_finetune_chat_models.ipynb?WT.mc_id=academic-105485-koreyst) | Naucz się dostrajać `gpt-35-turbo` dla konkretnej domeny ("asystent przepisów") poprzez przygotowanie danych treningowych, uruchomienie zadania dostrajania i użycie dostrojonego modelu do wnioskowania. | -| Azure OpenAI | [Samouczek dostrajania GPT 3.5 Turbo](https://learn.microsoft.com/azure/ai-services/openai/tutorials/fine-tune?tabs=python-new%2Ccommand-line?WT.mc_id=academic-105485-koreyst) | Naucz się dostrajać model `gpt-35-turbo-0613` **na Azure**, wykonując kroki tworzenia i przesyłania danych treningowych, uruchamiania zadania dostrajania. Wdróż i używaj nowego modelu. | -| Hugging Face | [Dostrajanie LLM za pomocą Hugging Face](https://www.philschmid.de/fine-tune-llms-in-2024-with-trl?WT.mc_id=academic-105485-koreyst) | Ten wpis na blogu przeprowadzi Cię przez proces dostrajania _otwartego LLM_ (np. `CodeLlama 7B`) przy użyciu biblioteki [transformers](https://huggingface.co/docs/transformers/index?WT.mc_id=academic-105485-koreyst) i [Transformer Reinforcement Learning (TRL)](https://huggingface.co/docs/trl/index?WT.mc_id=academic-105485-koreyst]) z otwartymi [zbiorami danych](https://huggingface.co/docs/datasets/index?WT.mc_id=academic-105485-koreyst) na Hugging Face. | -| | | | -| 🤗 AutoTrain | [Dostrajanie LLM za pomocą AutoTrain](https://github.com/huggingface/autotrain-advanced/?WT.mc_id=academic-105485-koreyst) | AutoTrain (lub AutoTrain Advanced) to biblioteka Pythona opracowana przez Hugging Face, która umożliwia dostrajanie dla wielu różnych zadań, w tym dostrajanie LLM. AutoTrain to rozwiązanie bez kodu, a dostrajanie można wykonać we własnej chmurze, na Hugging Face Spaces lub lokalnie. Obsługuje zarówno graficzny interfejs użytkownika oparty na sieci Web, CLI, jak i trenowanie za pomocą plików konfiguracyjnych yaml. | -| | | | - -## Zadanie - -Wybierz jeden z powyższych samouczków i przejdź przez niego. _Możemy zreplikować wersję tych samouczków w Jupyter Notebooks w tym repozytorium tylko w celach informacyjnych. Prosimy o bezpośrednie korzystanie z oryginalnych źródeł, aby uzyskać najnowsze wersje_. - -## Świetna Robota! Kontynuuj Naukę. - -Po ukończeniu tej lekcji sprawdź naszą [Kolekcję Nauki o Generatywnej AI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst), aby dalej podnosić swoją wiedzę o Generatywnej AI! - -Gratulacje!! Ukończyłeś ostatnią lekcję z serii v2 tego kursu! Nie przestawaj się uczyć i budować. \*\*Sprawdź stronę [ZASOBY](RESOURCES.md?WT.mc_id=academic-105485-koreyst), aby znaleźć listę dodatkowych sugestii dotyczących tego tematu. - -Nasza seria lekcji v1 również została zaktualizowana o więcej zadań i koncepcji. Poświęć więc chwilę na odświeżenie wiedzy - i proszę [podziel się swoimi pytaniami i opiniami](https://github.com/microsoft/generative-ai-for-beginners/issues?WT.mc_id=academic-105485-koreyst), aby pomóc nam ulepszyć te lekcje dla społeczności. diff --git a/18-fine-tuning/translations/pl/RESOURCES.md b/18-fine-tuning/translations/pl/RESOURCES.md deleted file mode 100644 index 90cccff89c..0000000000 --- a/18-fine-tuning/translations/pl/RESOURCES.md +++ /dev/null @@ -1,37 +0,0 @@ -# Zasoby Do Samodzielnej Nauki - -Ta lekcja została zbudowana w oparciu o szereg podstawowych zasobów od OpenAI i Azure OpenAI jako źródła terminologii i samouczków. Oto niewyczerpująca lista, dla Twoich własnych samodzielnych podróży edukacyjnych. - -## 1. Podstawowe Zasoby - -| Tytuł/Link | Opis | -| :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [Fine-tuning z Modelami OpenAI](https://platform.openai.com/docs/guides/fine-tuning?WT.mc_id=academic-105485-koreyst) | Fine-tuning doskonali uczenie się na kilku przykładach, trenując na znacznie większej liczbie przykładów niż może zmieścić się w prompcie, oszczędzając koszty, poprawiając jakość odpowiedzi i umożliwiając żądania o niższym opóźnieniu. **Uzyskaj przegląd fine-tuningu od OpenAI.** | -| [Czym jest Fine-Tuning z Azure OpenAI?](https://learn.microsoft.com/azure/ai-services/openai/concepts/fine-tuning-considerations#what-is-fine-tuning-with-azure-openai?WT.mc_id=academic-105485-koreyst) | Zrozum **czym jest fine-tuning (koncepcja)**, dlaczego warto się nim zainteresować (motywujący problem), jakie dane wykorzystać (trenowanie) i mierzenie jakości | -| [Dostosuj model za pomocą fine-tuningu](https://learn.microsoft.com/azure/ai-services/openai/how-to/fine-tuning?tabs=turbo%2Cpython&pivots=programming-language-studio#continuous-fine-tuning?WT.mc_id=academic-105485-koreyst) | Azure OpenAI Service pozwala dostosować nasze modele do Twoich osobistych zbiorów danych za pomocą fine-tuningu. Dowiedz się **jak wykonać fine-tuning (proces)** wybranych modeli za pomocą Azure AI Studio, Python SDK lub REST API. | -| [Zalecenia dotyczące fine-tuningu LLM](https://learn.microsoft.com/ai/playbook/technology-guidance/generative-ai/working-with-llms/fine-tuning-recommend?WT.mc_id=academic-105485-koreyst) | LLM mogą nie działać dobrze w konkretnych domenach, zadaniach lub zbiorach danych, lub mogą generować niedokładne lub mylące wyniki. **Kiedy należy rozważyć fine-tuning** jako możliwe rozwiązanie tego problemu? | -| [Ciągły Fine Tuning](https://learn.microsoft.com/azure/ai-services/openai/how-to/fine-tuning?tabs=turbo%2Cpython&pivots=programming-language-studio#continuous-fine-tuning?WT.mc_id=academic-105485-koreyst) | Ciągły fine-tuning jest iteracyjnym procesem wybierania już dostrojonego modelu jako modelu bazowego i **dalszego dostrajania go** na nowych zestawach przykładów treningowych. | -| [Fine-tuning i wywołania funkcji](https://learn.microsoft.com/azure/ai-services/openai/how-to/fine-tuning-functions?WT.mc_id=academic-105485-koreyst) | Dostrajanie modelu **z przykładami wywołań funkcji** może poprawić wyniki modelu, uzyskując dokładniejsze i bardziej spójne wyniki - z podobnie sformatowanymi odpowiedziami i oszczędnością kosztów | -| [Modele Fine-tuning: Przewodnik Azure OpenAI](https://learn.microsoft.com/azure/ai-services/openai/concepts/models#fine-tuning-models?WT.mc_id=academic-105485-koreyst) | Sprawdź tę tabelę, aby zrozumieć **które modele można dostrajać** w Azure OpenAI i w jakich regionach są dostępne. Sprawdź ich limity tokenów i daty wygaśnięcia danych treningowych, jeśli to konieczne. | -| [Dostrajać czy Nie Dostrajać? Oto Jest Pytanie](https://learn.microsoft.com/shows/ai-show/to-fine-tune-or-not-fine-tune-that-is-the-question?WT.mc_id=academic-105485-koreyst) | Ten 30-minutowy odcinek AI Show z **października 2023** omawia korzyści, wady i praktyczne wskazówki, które pomogą Ci podjąć tę decyzję. | -| [Pierwsze Kroki Z Fine-Tuningiem LLM](https://learn.microsoft.com/ai/playbook/technology-guidance/generative-ai/working-with-llms/fine-tuning-recommend?WT.mc_id=academic-105485-koreyst) | Ten zasób z **AI Playbook** przeprowadzi Cię przez wymagania dotyczące danych, formatowanie, dostrajanie hiperparametrów oraz wyzwania/ograniczenia, o których powinieneś wiedzieć. | -| **Samouczek**: [Azure OpenAI GPT3.5 Turbo Fine-Tuning](https://learn.microsoft.com/azure/ai-services/openai/tutorials/fine-tune?tabs=python%2Ccommand-line?WT.mc_id=academic-105485-koreyst) | Dowiedz się, jak utworzyć przykładowy zbiór danych do fine-tuningu, przygotować się do fine-tuningu, utworzyć zadanie fine-tuningu i wdrożyć dostrojony model w Azure. | -| **Samouczek**: [Dostrajanie modelu Llama 2 w Azure AI Studio](https://learn.microsoft.com/azure/ai-studio/how-to/fine-tune-model-llama?WT.mc_id=academic-105485-koreyst) | Azure AI Studio pozwala dostosować duże modele językowe do Twoich osobistych zbiorów danych _przy użyciu przepływu pracy opartego na interfejsie użytkownika, odpowiedniego dla programistów niskokodemokratycznych_. Zobacz ten przykład. | -| **Samouczek**:[Dostrajanie modeli Hugging Face dla pojedynczego GPU w Azure](https://learn.microsoft.com/azure/databricks/machine-learning/train-model/huggingface/fine-tune-model?WT.mc_id=academic-105485-koreyst) | Ten artykuł opisuje, jak dostroić model Hugging Face za pomocą biblioteki transformers Hugging Face na pojedynczym GPU z Azure DataBricks + bibliotekami Hugging Face Trainer | -| **Szkolenie:** [Dostosuj model podstawowy za pomocą Azure Machine Learning](https://learn.microsoft.com/training/modules/finetune-foundation-model-with-azure-machine-learning/?WT.mc_id=academic-105485-koreyst) | Katalog modeli w Azure Machine Learning oferuje wiele modeli open source, które możesz dostosować do konkretnego zadania. Wypróbuj ten moduł [ze ścieżki edukacyjnej AzureML Generative AI](https://learn.microsoft.com/training/paths/work-with-generative-models-azure-machine-learning/?WT.mc_id=academic-105485-koreyst) | -| **Samouczek:** [Azure OpenAI Fine-Tuning](https://docs.wandb.ai/guides/integrations/azure-openai-fine-tuning?WT.mc_id=academic-105485-koreyst) | Dostrajanie modeli GPT-3.5 lub GPT-4 na Microsoft Azure przy użyciu W&B pozwala na szczegółowe śledzenie i analizę wydajności modelu. Ten przewodnik rozszerza koncepcje z przewodnika OpenAI Fine-Tuning o konkretne kroki i funkcje dla Azure OpenAI. | -| | | - -## 2. Dodatkowe Zasoby - -Ta sekcja zawiera dodatkowe zasoby, które warto odkryć, ale których nie mieliśmy czasu omówić w tej lekcji. Mogą zostać omówione w przyszłej lekcji lub jako opcja dodatkowego zadania w późniejszym terminie. Na razie używaj ich do budowania własnej wiedzy i umiejętności w tym temacie. - -| Tytuł/Link | Opis | -| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **OpenAI Cookbook**: [Przygotowanie i analiza danych do fine-tuningu modelu czatu](https://cookbook.openai.com/examples/chat_finetuning_data_prep?WT.mc_id=academic-105485-koreyst) | Ten notatnik służy jako narzędzie do wstępnego przetwarzania i analizy zbioru danych czatu używanego do dostrajania modelu czatu. Sprawdza błędy formatu, dostarcza podstawowe statystyki i szacuje liczbę tokenów dla kosztów fine-tuningu. Zobacz: [Metoda fine-tuningu dla gpt-3.5-turbo](https://platform.openai.com/docs/guides/fine-tuning?WT.mc_id=academic-105485-koreyst). | -| **OpenAI Cookbook**: [Fine-Tuning dla Retrieval Augmented Generation (RAG) z Qdrant](https://cookbook.openai.com/examples/fine-tuned_qa/ft_retrieval_augmented_generation_qdrant?WT.mc_id=academic-105485-koreyst) | Celem tego notatnika jest przeprowadzenie kompleksowego przykładu, jak dostroić modele OpenAI do Retrieval Augmented Generation (RAG). Będziemy również integrować Qdrant i Few-Shot Learning, aby zwiększyć wydajność modelu i zmniejszyć fabrykacje. | -| **OpenAI Cookbook**: [Fine-tuning GPT z Weights & Biases](https://cookbook.openai.com/examples/third_party/gpt_finetuning_with_wandb?WT.mc_id=academic-105485-koreyst) | Weights & Biases (W&B) to platforma dla deweloperów AI, z narzędziami do trenowania modeli, dostrajania modeli i wykorzystywania modeli podstawowych. Przeczytaj najpierw ich przewodnik [OpenAI Fine-Tuning](https://docs.wandb.ai/guides/integrations/openai-fine-tuning/?WT.mc_id=academic-105485-koreyst), a następnie wypróbuj ćwiczenie z Cookbook. | -| **Samouczek Społeczności** [Phinetuning 2.0](https://huggingface.co/blog/g-ronimo/phinetuning?WT.mc_id=academic-105485-koreyst) - fine-tuning dla Małych Modeli Językowych | Poznaj [Phi-2](https://www.microsoft.com/research/blog/phi-2-the-surprising-power-of-small-language-models/?WT.mc_id=academic-105485-koreyst), nowy mały model Microsoftu, niezwykle potężny, a jednocześnie kompaktowy. Ten samouczek przeprowadzi Cię przez dostrajanie Phi-2, pokazując, jak zbudować unikalny zbiór danych i dostroić model za pomocą QLoRA. | -| **Samouczek Hugging Face** [Jak Wykonać Fine-Tune LLM w 2024 z Hugging Face](https://www.philschmid.de/fine-tune-llms-in-2024-with-trl?WT.mc_id=academic-105485-koreyst) | Ten wpis na blogu przeprowadzi Cię przez to, jak dostroić otwarte LLM za pomocą Hugging Face TRL, Transformers i zbiorów danych w 2024 roku. Definiujesz przypadek użycia, ustawiasz środowisko deweloperskie, przygotowujesz zbiór danych, dostrajasz model, testujesz i oceniasz go, a następnie wdrażasz do produkcji. | -| **Hugging Face: [AutoTrain Advanced](https://github.com/huggingface/autotrain-advanced?WT.mc_id=academic-105485-koreyst)** | Zapewnia szybsze i łatwiejsze trenowanie i wdrażanie [najnowocześniejszych modeli uczenia maszynowego](https://twitter.com/abhi1thakur/status/1755167674894557291?WT.mc_id=academic-105485-koreyst). Repozytorium zawiera przyjazne dla Colab samouczki z przewodnikami wideo na YouTube do fine-tuningu. **Odzwierciedla niedawną aktualizację [local-first](https://twitter.com/abhi1thakur/status/1750828141805777057?WT.mc_id=academic-105485-koreyst)**. Przeczytaj [dokumentację AutoTrain](https://huggingface.co/autotrain?WT.mc_id=academic-105485-koreyst) | -| | | diff --git a/18-fine-tuning/translations/tw/README.md b/18-fine-tuning/translations/tw/README.md deleted file mode 100644 index 54b126a81b..0000000000 --- a/18-fine-tuning/translations/tw/README.md +++ /dev/null @@ -1,98 +0,0 @@ -[![開放原始碼模型](../../img/18-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson18-gh?WT.mc_id=academic-105485-koreyst) - -# 微調您的 LLM - -使用大型語言模型來建構生成式 AI 應用程式會帶來新的挑戰。一個關鍵問題是確保模型針對特定使用者請求所生成內容的品質(準確性和相關性)。在之前的課程中,我們討論了提示工程和檢索增強生成等技術,這些技術試圖通過_修改提示輸入_來解決現有模型的問題。 - -在今天的課程中,我們討論了第三種技術,**微調**,這種技術試圖通過_重新訓練模型本身_並使用額外的數據來解決這一挑戰。讓我們深入了解細節。 - -## 學習目標 - -本課程介紹了對預訓練語言模型進行微調的概念,探討了這種方法的優點和挑戰,並提供了何時以及如何使用微調來提高生成式 AI 模型性能的指導。 - -在本課程結束時,你應該能夠回答以下問題: - -- 語言模型的微調是什麼? -- 微調在什麼時候以及為什麼有用? -- 我如何微調一個預訓練模型? -- 微調的限制是什麼? - -準備好了嗎?讓我們開始吧。 - -## 圖解指南 - -想要在深入探討之前了解我們將涵蓋的整體內容嗎?查看這個描述本課程學習旅程的圖解指南 - 從學習核心概念和微調的動機,到了解執行微調任務的過程和最佳實踐。這是一個引人入勝的探索主題,所以別忘了查看[資源](../../RESOURCES.md?WT.mc_id=academic-105485-koreyst)頁面以獲取更多支持自學旅程的連結! - -![語言模型微調圖解指南](../../img/18-fine-tuning-sketchnote.png?WT.mc_id=academic-105485-koreyst) - -## 語言模型的微調是什麼? - -根據定義,大型語言模型是從包括互聯網在內的多種來源獲取的大量文本上進行_預訓練_的。正如我們在之前的課程中所學到的,我們需要像_提示工程_和_檢索增強生成_這樣的技術來提高模型對用戶問題(「提示」)的回應品質。 - -一個流行的提示工程技術涉及通過提供_指示_(明確指導)或_給它一些範例_(隱含指導)來給模型更多關於回應預期的指導。這被稱為_少量學習_,但它有兩個限制: - -- 模型標記限制會限制您能提供的範例數量,並限制效果。 -- 模型標記成本會使在每個提示中添加範例變得昂貴,並限制靈活性。 - -微調是機器學習系統中的一種常見做法,我們採用預訓練模型並使用新數據重新訓練它,以提高其在特定任務上的性能。在語言模型的背景下,我們可以微調預訓練模型_使用為給定任務或應用領域精選的一組範例_來建立一個**自訂模型**,這個模型可能對於該特定任務或領域更準確和相關。微調的一個附帶好處是,它還可以減少少量學習所需的範例數量——減少 token 使用和相關成本。 - -## 何時以及為什麼我們應該微調模型? - -在 _此_ 上下文中,當我們談論微調時,我們指的是**監督式**微調,其中重新訓練是通過**添加新數據**來完成的,這些數據不是原始訓練數據集的一部分。這與無監督微調方法不同,後者是在原始數據上重新訓練模型,但使用不同的超參數。 - -關鍵是要記住,微調是一種需要一定專業知識才能獲得預期結果的高級技術。如果操作不當,它可能不會提供預期的改進,甚至可能降低模型在您目標領域的性能。 - -所以,在你學習「如何」微調語言模型之前,你需要知道「為什麼」你應該選擇這條路,以及「何時」開始微調的過程。首先問自己這些問題: - -- **使用案例**: 你的微調_使用案例_是什麼?你想改進當前預訓練模型的哪個方面? -- **替代方案**: 你是否嘗試過_其他技術_來達到預期結果?使用它們來建立比較的基準。 - - 提示工程: 嘗試使用相關提示回應範例的少量提示技術。評估回應的品質。 - - 檢索增強生成: 嘗試使用檢索數據查詢結果來增強提示。評估回應的品質。 -- **成本**: 你是否已經識別出微調的成本? - - 可調性 - 預訓練模型是否可用於微調? - - 努力 - 準備訓練數據、評估和改進模型的努力。 - - 計算 - 執行微調工作和部署微調模型的計算成本 - - 數據 - 是否有足夠品質的範例來影響微調效果 -- **收益**: 你是否確認了微調的收益? - - 品質 - 微調後的模型是否超越了基準? - - 成本 - 是否通過簡化提示來減少代幣使用? - - 可擴展性 - 你能否將基礎模型重新用於新領域? - -藉由回答這些問題,你應該能夠決定微調是否適合你的使用案例。理想情況下,只有當收益超過成本時,這種方法才是有效的。一旦你決定繼續,就該考慮_如何_微調預訓練模型。 - -想要獲得更多關於決策過程的見解嗎?觀看[是否要微調](https://www.youtube.com/watch?v=0Jo-z-MFxJs) - -## 我們如何微調一個預訓練模型? - -要微調一個預訓練模型,你需要具備: - -- 一個預訓練模型來微調 -- 一個數據集來用於微調 -- 一個訓練環境來執行微調工作 -- 一個託管環境來部署微調後的模型 - -## 微調操作中 - -以下資源提供逐步指南,帶您通過使用精選資料集的選定模型進行真實範例。要完成這些指南,您需要在特定提供者上擁有一個帳戶,並訪問相關的模型和資料集。 - -| Provider | Tutorial | Description | -| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| OpenAI | [How to fine-tune chat models](https://github.com/openai/openai-cookbook/blob/main/examples/How_to_finetune_chat_models.ipynb?WT.mc_id=academic-105485-koreyst) | 學習如何為特定領域("秘訣助手")微調 `gpt-35-turbo`,包括準備訓練資料、執行微調工作以及使用微調後的模型進行推論。 | -| Azure OpenAI | [GPT 3.5 Turbo fine-tuning tutorial](https://learn.microsoft.com/azure/ai-services/openai/tutorials/fine-tune?tabs=python-new%2Ccommand-line?WT.mc_id=academic-105485-koreyst) | 學習如何在 **Azure** 上微調 `gpt-35-turbo-0613` 模型,包括建立和上傳訓練資料、執行微調工作。部署並使用新模型。 | -| Hugging Face | [Fine-tuning LLMs with Hugging Face](https://www.philschmid.de/fine-tune-llms-in-2024-with-trl?WT.mc_id=academic-105485-koreyst) | 這篇博客文章介紹如何使用 [transformers](https://huggingface.co/docs/transformers/index?WT.mc_id=academic-105485-koreyst) 函式庫和 [Transformer Reinforcement Learning (TRL)](https://huggingface.co/docs/trl/index?WT.mc_id=academic-105485-koreyst) 以及 Hugging Face 上的開放 [datasets](https://huggingface.co/docs/datasets/index?WT.mc_id=academic-105485-koreyst) 來微調 _open LLM_(例如:`CodeLlama 7B`)。 | -| | | | -| 🤗 AutoTrain | [Fine-tuning LLMs with AutoTrain](https://github.com/huggingface/autotrain-advanced/?WT.mc_id=academic-105485-koreyst) | AutoTrain(或 AutoTrain Advanced)是由 Hugging Face 開發的 python 函式庫,允許對許多不同的任務進行微調,包括 LLM 微調。AutoTrain 是一個無需程式碼的解決方案,可以在自己的雲端、Hugging Face Spaces 或本地進行微調。它支持基於網頁的 GUI、CLI 和通過 yaml 配置文件進行訓練。 | -| | | | - -## 作業 - -選擇上面的其中一個指南並逐步完成它們。_我們可能會在這個 Repo 中的 Jupyter Notebooks 中複製這些指南的版本僅供參考。請直接使用原始來源以獲取最新版本_。 - -## 很棒的工作!繼續學習。 - -完成本課程後,請查看我們的[生成式 AI 學習集合](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst)以繼續提升您的生成式 AI 知識! - -恭喜!! 你已經完成了這門課程 v2 系列的最後一課! 不要停止學習和建構。**查看[資源](RESOURCES.md?WT.mc_id=academic-105485-koreyst)頁面,獲取更多關於此主題的建議。 - -我們的 v1 系列課程也已更新了更多的作業和概念。所以花點時間重新整理你的知識 - 並且請[分享你的問題和反饋](https://github.com/microsoft/generative-ai-for-beginners/issues?WT.mc_id=academic-105485-koreyst),以幫助我們改進這些課程,造福社群。 - diff --git a/18-fine-tuning/translations/tw/RESOURCES.md b/18-fine-tuning/translations/tw/RESOURCES.md deleted file mode 100644 index 7eb381898f..0000000000 --- a/18-fine-tuning/translations/tw/RESOURCES.md +++ /dev/null @@ -1,38 +0,0 @@ -# 自學資源 - -這堂課是使用來自 OpenAI 和 Azure OpenAI 的多個核心資源建構的,作為術語和指南的參考。以下是一個非全面的清單,供您自行學習之用。 - -## 1. 主要資源 - -| Title/Link | Description | -| :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [Fine-tuning with OpenAI Models](https://platform.openai.com/docs/guides/fine-tuning?WT.mc_id=academic-105485-koreyst) | 微調通過在提示中訓練更多範例來改進少量學習,節省成本,提高回應品質,並實現低延遲請求。**了解來自OpenAI的微調概述**。 | -| [What is Fine-Tuning with Azure OpenAI?](https://learn.microsoft.com/azure/ai-services/openai/concepts/fine-tuning-considerations#what-is-fine-tuning-with-azure-openai?WT.mc_id=academic-105485-koreyst) | 了解**什麼是微調(概念)**,為什麼你應該關注它(激勵問題),使用什麼數據(訓練)和衡量品質 | -| [Customize a model with fine-tuning](https://learn.microsoft.com/azure/ai-services/openai/how-to/fine-tuning?tabs=turbo%2Cpython&pivots=programming-language-studio#continuous-fine-tuning?WT.mc_id=academic-105485-koreyst) | Azure OpenAI服務允許你使用微調來定制我們的模型以適應你的個人數據集。了解**如何使用Azure AI Studio、Python SDK或REST API進行微調(過程)**選擇模型。 | -| [Recommendations for LLM fine-tuning](https://learn.microsoft.com/ai/playbook/technology-guidance/generative-ai/working-with-llms/fine-tuning-recommend?WT.mc_id=academic-105485-koreyst) | LLMs在特定領域、任務或數據集上可能表現不佳,或可能產生不準確或誤導性的輸出。**什麼時候應該考慮微調**作為解決方案? | -| [Continuous Fine Tuning](https://learn.microsoft.com/azure/ai-services/openai/how-to/fine-tuning?tabs=turbo%2Cpython&pivots=programming-language-studio#continuous-fine-tuning?WT.mc_id=academic-105485-koreyst) | 連續微調是選擇已經微調過的模型作為基礎模型並在新的訓練範例集上**進一步微調**的迭代過程。 | -| [Fine-tuning and function calling](https://learn.microsoft.com/azure/ai-services/openai/how-to/fine-tuning-functions?WT.mc_id=academic-105485-koreyst) | 使用**函式呼叫範例**微調你的模型可以通過獲得更準確和一致的輸出來改進模型輸出——具有類似格式的回應和成本節省 | -| [Fine-tuning Models: Azure OpenAI Guidance](https://learn.microsoft.com/azure/ai-services/openai/concepts/models#fine-tuning-models?WT.mc_id=academic-105485-koreyst) | 查閱此表以了解**哪些模型可以在Azure OpenAI中進行微調**,以及這些模型在哪些地區可用。如有需要,查閱它們的token限制和訓練數據到期日期。 | -| [To Fine Tune or Not To Fine Tune? That is the Question](https://learn.microsoft.com/shows/ai-show/to-fine-tune-or-not-fine-tune-that-is-the-question?WT.mc_id=academic-105485-koreyst) | 這個30分鐘的**2023年10月**AI Show節目討論了幫助你做出這個決定的優點、缺點和實際見解。 | -| [Getting Started With LLM Fine-Tuning](https://learn.microsoft.com/ai/playbook/technology-guidance/generative-ai/working-with-llms/fine-tuning-recommend?WT.mc_id=academic-105485-koreyst) | 這個**AI Playbook**資源帶你了解數據需求、格式化、超參數微調以及你應該知道的挑戰/限制。 | -| **Tutorial**: [Azure OpenAI GPT3.5 Turbo Fine-Tuning](https://learn.microsoft.com/azure/ai-services/openai/tutorials/fine-tune?tabs=python%2Ccommand-line?WT.mc_id=academic-105485-koreyst) | 學習建立一個範例微調數據集,準備微調,建立微調工作,並在Azure上部署微調模型。 | -| **Tutorial**: [Fine-tune a Llama 2 model in Azure AI Studio](https://learn.microsoft.com/azure/ai-studio/how-to/fine-tune-model-llama?WT.mc_id=academic-105485-koreyst) | Azure AI Studio允許你使用基於UI的工作流程來定制大型語言模型以適應你的個人數據集_適合低代碼開發者_。請參見此範例。 | -| **Tutorial**:[Fine-tune Hugging Face models for a single GPU on Azure](https://learn.microsoft.com/azure/databricks/machine-learning/train-model/huggingface/fine-tune-model?WT.mc_id=academic-105485-koreyst) | 本文描述了如何使用Hugging Face transformers函式庫在單個GPU上與Azure DataBricks + Hugging Face Trainer函式庫一起微調Hugging Face模型。 | -| **Training:** [Fine-tune a foundation model with Azure Machine Learning](https://learn.microsoft.com/training/modules/finetune-foundation-model-with-azure-machine-learning/?WT.mc_id=academic-105485-koreyst) | Azure Machine Learning中的模型目錄提供了許多你可以為特定任務微調的開放原始碼模型。試試這個模組是[來自AzureML生成式AI學習路徑](https://learn.microsoft.com/training/paths/work-with-generative-models-azure-machine-learning/?WT.mc_id=academic-105485-koreyst) | -| **Tutorial:** [Azure OpenAI Fine-Tuning](https://docs.wandb.ai/guides/integrations/azure-openai-fine-tuning?WT.mc_id=academic-105485-koreyst) | 使用W&B在Microsoft Azure上微調GPT-3.5或GPT-4模型允許對模型性能進行詳細跟蹤和分析。本指南擴展了OpenAI微調指南中的概念,提供了Azure OpenAI的具體步驟和功能。 | -| | | - -## 2. 次要資源 - -此部分捕捉了值得探索的額外資源,但我們在本課中沒有時間涵蓋。它們可能會在未來的課程中涵蓋,或作為後續作業選項,在以後的日期進行。現在,使用它們來建立您自己在此主題周圍的專業知識和知識。 - -| Title/Link | Description | -| :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **OpenAI Cookbook**: [Data preparation and analysis for chat model fine-tuning](https://cookbook.openai.com/examples/chat_finetuning_data_prep?WT.mc_id=academic-105485-koreyst) | 此筆記本用作預處理和分析用於微調聊天模型的聊天數據集。它檢查格式錯誤,提供基本統計資訊,並估算微調成本的代幣數量。請參見: [Fine-tuning method for gpt-3.5-turbo](https://platform.openai.com/docs/guides/fine-tuning?WT.mc_id=academic-105485-koreyst)。 | -| **OpenAI Cookbook**: [Fine-Tuning for Retrieval Augmented Generation (RAG) with Qdrant](https://cookbook.openai.com/examples/fine-tuned_qa/ft_retrieval_augmented_generation_qdrant?WT.mc_id=academic-105485-koreyst) | 此筆記本的目的是通過一個全面的範例來演示如何為檢索增強生成(RAG)微調OpenAI模型。我們還將整合Qdrant和少樣本學習來提升模型性能並減少捏造。 | -| **OpenAI Cookbook**: [Fine-tuning GPT with Weights & Biases](https://cookbook.openai.com/examples/third_party/gpt_finetuning_with_wandb?WT.mc_id=academic-105485-koreyst) | Weights & Biases (W&B) 是AI開發者平台,提供訓練模型、微調模型和利用基礎模型的工具。首先閱讀他們的[OpenAI Fine-Tuning]https://docs.wandb.ai/guides/integrations/openai-fine-tuning/?WT.mc_id=academic-105485-koreyst)指南,然後嘗試Cookbook練習。 | -| **Community Tutorial** [Phinetuning 2.0](https://huggingface.co/blog/g-ronimo/phinetuning?WT.mc_id=academic-105485-koreyst) - fine-tuning for Small Language Models | 認識[Phi-2](https://www.microsoft.com/research/blog/phi-2-the-surprising-power-of-small-language-models/?WT.mc_id=academic-105485-koreyst),微軟的新小型模型,功能強大且緊湊。本指南將引導您微調Phi-2,展示如何建立獨特的數據集並使用QLoRA微調模型。 | -| **Hugging Face Tutorial** [How to Fine-Tune LLMs in 2024 with Hugging Face](https://www.philschmid.de/fine-tune-llms-in-2024-with-trl?WT.mc_id=academic-105485-koreyst) | 這篇博客文章將引導您如何在2024年使用Hugging Face TRL、Transformers和數據集微調開放LLMs。您將定義一個使用案例,設定開發環境,準備數據集,微調模型,測試評估,然後部署到生產環境。 | -| **Hugging Face: [AutoTrain Advanced](https://github.com/huggingface/autotrain-advanced?WT.mc_id=academic-105485-koreyst)** | 帶來更快更簡單的[最先進機器學習模型](https://twitter.com/abhi1thakur/status/1755167674894557291?WT.mc_id=academic-105485-koreyst)訓練和部署。 Repo 有適合Colab的指南和YouTube影片指導,用於微調。**反映了最近的[local-first](https://twitter.com/abhi1thakur/status/1750828141805777057?WT.mc_id=academic-105485-koreyst)更新**。請閱讀[AutoTrain documentation](https://huggingface.co/autotrain?WT.mc_id=academic-105485-koreyst)。 | -| | | - diff --git a/19-slm/translations/ko/README.md b/19-slm/translations/ko/README.md deleted file mode 100644 index a1c12c934d..0000000000 --- a/19-slm/translations/ko/README.md +++ /dev/null @@ -1,315 +0,0 @@ -# 입문자를 위한 생성형 AI와 소형 언어 모델 소개 - -생성형 AI는 텍스트와 이미지부터 음악, 가상 환경까지 다양한 콘텐츠를 생성할 수 있는 시스템을 만드는 데 중점을 둔 인공지능의 흥미로운 분야입니다. 그중에서도 언어 모델은 생성형 AI의 가장 흥미로운 응용 분야 중 하나입니다. - -## 소형 언어 모델(Small Language Models)이란? - -소형 언어 모델(SLM)은 대형 언어 모델(LLM)의 축소판으로, LLM의 아키텍처 원칙과 기술을 활용하면서도 계산 자원 소모를 크게 줄인 모델입니다. - -SLM은 인간과 유사한 텍스트를 생성하도록 설계된 언어 모델의 하위 집합으로, GPT-4와 같은 대형 모델과 달리 더 작고 효율적이기 때문에 컴퓨팅 자원이 제한된 응용 분야에 적합합니다. -SLM은 일반적으로 LLM을 압축하거나 증류하여 구축되며, 원래 모델의 기능과 언어적 능력을 상당 부분 유지하려고 합니다. 모델 크기를 줄이면 메모리 사용량과 계산 요구 사항이 낮아져 다음과 같은 다양한 자연어 처리(NLP) 작업을 수행할 수 있습니다: - -- 텍스트 생성: 일관되고 문맥에 맞는 문장이나 단락을 생성합니다. -- 텍스트 완성: 주어진 프롬프트에 따라 문장을 예측하고 완성합니다. -- 번역: 텍스트를 한 언어에서 다른 언어로 변환합니다. -- 요약: 긴 텍스트를 더 간결하고 이해하기 쉬운 요약으로 압축합니다. - -하지만 더 큰 모델에 비해 성능이나 이해의 깊이에서 약간의 한계가 있을 수 있습니다. - -## 소형 언어 모델의 작동 원리 - -SLM은 방대한 양의 텍스트 데이터를 통해 훈련되며, 이 과정에서 언어의 패턴과 구조를 학습하여 문법적으로 정확하고 문맥상 적절한 텍스트를 생성할 수 있습니다. 훈련 과정은 다음과 같습니다: - -- 데이터 수집: 다양한 소스에서 대량의 텍스트 데이터셋을 수집합니다. -- 전처리: 훈련에 적합하도록 데이터를 정리하고 구성합니다. -- 훈련: 기계 학습 알고리즘을 사용하여 모델에 텍스트 생성 및 이해 방법을 학습시킵니다. -- 파인 튜닝: 특정 작업의 성능을 향상시키기 위해 모델을 조정합니다. - -SLM의 개발은 모바일 기기나 엣지 컴퓨팅 플랫폼과 같이 리소스가 제한된 환경에서도 모델을 배포해야 하는 요구를 충족합니다. 효율성에 초점을 맞춘 설계를 통해 성능과 접근성의 균형을 유지하여 다양한 분야에서 폭넓게 활용될 수 있습니다. - -![slm](../../img/slm.png?WT.mc_id=academic-105485-koreyst) - -## 학습 목표 - -이 강의에서는 SLM에 대한 지식을 소개하고, 이를 Microsoft Phi-3와 결합하여 텍스트 콘텐츠, 비전(Vision), MoE(Mixture of Experts) 등의 다양한 시나리오에서 활용하는 방법을 배울 것입니다. - -이번 강의를 마치면 다음 질문에 답할 수 있습니다: - -- SLM이란 무엇인가? -- SLM과 LLM의 차이점은 무엇인가? -- Microsoft Phi-3/3.5 패밀리는 무엇인가? -- Microsoft Phi-3/3.5 패밀리를 어떻게 활용하는가? - -준비되셨나요? 시작해봅시다. - -## 대형 언어 모델(LLMs)과 소형 언어 모델(SLMs)의 차이점 - -LLMs과 SLMs은 모두 확률론적 기계 학습의 기본 원리를 기반으로 하며, 아키텍처 설계, 훈련 방법론, 데이터 생성 프로세스, 모델 평가 기술에서 유사한 접근을 따릅니다. 그러나 이 두 모델을 구분하는 몇 가지 핵심요소가 있습니다. - -## 소형 언어 모델의 응용 분야 -SLM은 다음과 같은 다양한 응용 분야에서 사용됩니다: - -- 챗봇: 고객 지원을 제공하고 사용자와 대화형으로 소통합니다. -- 콘텐츠 생성: 아이디어를 제공하거나 전체 글을 작성하는데 도움을 줍니다. -- 교육: 학생들의 작문 과제를 돕거나 새로운 언어 학습을 지원합니다. -- 접근성: 텍스트-음성 변환 시스템과 같은 장애인을 위한 도구를 만듭니다. - -**모델 크기** - -LLM과 SLM의 가장 큰 차이점은 모델의 규모입니다. 예를 들어, GPT-4와 같은 LLM은 약 1조 7,600억 개의 파라미터로 구성될 수 있는 반면, Mistral 7B와 같은 오픈 소스 SLM은 약 70억 개의 파라미터를 가집니다. 이러한 차이는 모델의 아키텍처와 훈련 프로세스의 차이에서 비롯됩니다. 예를 들어, ChatGPT는 인코더-디코더 프레임워크 내에서 자기 어텐션 메커니즘을 사용하지만, Mistral 7B는 슬라이딩 윈도우 어텐션을 사용하여 디코더 전용 모델 내에서 더 효율적인 훈련을 가능하게 합니다. 이러한 아키텍처의 차이는 모델의 복잡성과 성능에 큰 영향을 미칩니다. - -**이해력** - -SLM은 특정 도메인 내에서의 성능에 최적화되어 고도로 전문화되어 있지만, 여러 분야에 걸쳐 광범위한 맥락적 이해를 제공하는 데는 한계가 있을 수 있습니다. 반면에 LLM은 방대한 양의 다양한 데이터셋으로 훈련되어 여러 분야에서 높은 성능을 발휘하도록 설계되었습니다. 방대한 양의 다양한 데이터셋으로 훈련된 LLM은 여러 분야에서 두루 활용되며, 적응력과 다재다능함이 뛰어납니다. 그래서 자연어 처리나 프로그래밍과 같은 더 넓은 범위의 작업에 더 적합합니다. - -**계산 자원** - -LLM의 훈련과 배포는 리소스 집약적이며, 대규모 GPU 클러스터 등의 상당한 컴퓨팅 인프라가 필요합니다. 예를 들어, ChatGPT와 같은 모델을 처음부터 훈련하려면 수천 개의 GPU로도 긴 시간이 필요할 수 있습니다. 반면에 SLM은 파라미터 수가 적어 계산 자원 측면에서 접근성이 높습니다. Mistral 7B와 같은 모델은 적당한 GPU를 갖춘 로컬 머신에서도 훈련하고 실행할 수 있지만, 훈련에는 여전히 여러 GPU에서 몇 시간이 소요됩니다. - -**편향성** - -LLM은 훈련 데이터의 특성으로 인해 편향 문제가 발생할 수 있습니다. 인터넷의 공개 데이터를 기반으로 훈련되기 때문에 특정 그룹을 과소 대표하거나 잘못 대표할 수 있고, 잘못된 라벨링을 도입 및 방언, 지리적 변이, 문법 규칙에 영향을 받는 언어적 편향을 반영할 수 있습니다. 또한 LLM 아키텍처의 복잡성은 세심한 파인튜닝 없이는 눈에 띄지 않게 편향을 악화시킬 수 있습니다. 반면에 SLM은 더 제한적이고 도메인 특화된 데이터셋으로 훈련되기 때문에 이러한 편향에 덜 취약하지만, 완전히 자유로운 것은 아닙니다. - -**추론 속도** - -SLM은 작은 크기로 인해 추론 속도 면에서 큰 이점을 제공합니다. 로컬 하드웨어에서 효율적으로 출력을 생성할 수 있으며, 대규모 병렬 처리가 필요하지 않습니다. 반면에 LLM은 크기와 복잡성으로 인해 추론 시간이 느릴 수 있으며, 특히 여러 사용자가 동시에 접근하는 경우 응답 시간이 더욱 지연될 수 있습니다. - -요약하자면, LLM과 SLM은 머신러닝에 기반을 두고 있지만, 모델 크기, 자원 요구 사항, 맥락 이해, 편향 취약성, 추론 속도 등에서 상당한 차이가 있습니다. 이러한 차이는 각각의 사용 사례에 대한 적합성을 반영하며, LLM은 더 다재다능하지만 자원 소모가 크고, SLM은 특정 분야에서 효율성을 제공하면서 계산 요구 사항이 줄어듭니다. - -***참고: 이 장에서는 Microsoft Phi-3 / 3.5를 예로 들어 SLM을 소개하겠습니다.*** - -## Microsoft Phi-3 / Phi-3.5 패밀리 소개 - -Phi-3 / 3.5 패밀리는 주로 텍스트, 비전(Vision), 에이전트(MoE) 응용 시나리오를 대상으로 합니다: - -### Phi-3 / 3.5 Instruct - -주로 텍스트 생성, 대화 완성, 정보 추출 등에 사용됩니다. - -**Phi-3-mini** - -3.8억 개의 파라미터를 가진 언어 모델로, Microsoft Azure AI Studio, Hugging Face, Ollama에서 사용할 수 있습니다. Phi-3 모델은 주요 벤치마크에서 동등하거나 더 큰 크기의 언어 모델보다 우수한 성능을 보입니다.(아래 벤치마크 수치를 참조하세요. 수치가 높을수록 좋습니다). Phi-3-mini는 크기가 두 배인 모델보다 뛰어난 성능을 보이며, Phi-3-small과 Phi-3-medium은 GPT-3.5를 포함한 더 큰 모델보다도 우수합니다. - -**Phi-3-small & medium** - -단 70억 개의 파라미터로 구성된 Phi-3-small은 다양한 언어, 추론, 코딩, 수학 벤치마크에서 GPT-3.5T를 뛰어넘는 성능을 보입니다. - -140억 개의 파라미터를 가진 Phi-3-medium도 이러한 추세를 이어가며 Gemini 1.0 Pro보다 뛰어난 성능 보입니다. - -**Phi-3.5-mini** - -Phi-3-mini의 업그레이드 버전으로 볼 수 있습니다. 파라미터 수는 변함이 없지만, 다국어 지원 능력을 향상시켰습니다. (아랍어, 중국어, 체코어, 덴마크어, 네덜란드어, 영어, 핀란드어, 프랑스어, 독일어, 히브리어, 헝가리어, 이탈리아어, 일본어, 한국어, 노르웨이어, 폴란드어, 포르투갈어, 러시아어, 스페인어, 스웨덴어, 태국어, 터키어, 우크라이나어 등 20개 이상의 언어 지원) 그리고 긴 컨텍스트의 지원이 강화되었습니다. - -3.8억 개의 파라미터를 가진 Phi-3.5-mini는 동일한 크기의 언어 모델보다 우수하며, 크기가 두 배인 모델과 동등한 성능을 보입니다. - -### Phi-3 / 3.5 Vision - -Phi-3/3.5의 Instruct 모델이 Phi의 이해 능력이라면, Vision 모델은 Phi에게 세상을 이해하는 눈을 제공합니다. - -**Phi-3-Vision** - -단 42억 개의 파라미터를 가진 Phi-3-vision은 일반적인 시각적 추론 작업, OCR, 표 및 다이어그램 이해 작업에서 Claude-3 Haiku와 Gemini 1.0 Pro V와 같은 더 큰 모델보다 뛰어난 성능을 보입니다. - -**Phi-3.5-Vision** - -Phi-3-Vision의 업그레이드 버전으로, 다중 이미지 지원을 추가했습니다. 이제 단순히 이미지를 보는 것뿐만 아니라 동영상까지도 볼 수 있다고 생각하시면 됩니다. - -Phi-3.5-Vision은 OCR, 표 및 차트 이해 작업에서 Claude-3.5 Sonnet과 Gemini 1.5 Flash와 같은 더 큰 모델을 능가하며, 일반적인 시각적 지식 추론 작업에서도 동등한 성능을 보입니다. 다중 프레임 입력을 지원, 즉 여러 입력 이미지에 대한 추론을 수행할 수 있습니다. - -### Phi-3.5-MoE - -***전문가 혼합(Mixture of Experts, MoE)*** 은 모델이 훨씬 적은 계산량으로 사전 훈련될 수 있게 하며, 이는 고밀도 모델과 동일한 계산 예산으로 모델이나 데이터셋의 크기를 크게 확장할 수 있음을 의미합니다. 특히, MoE 모델은 사전 학습 중에 고밀도 모델과 동일한 품질을 훨씬 더 빨리 달성할 수 있습니다. - -Phi-3.5-MoE는 16개의 3.8억 개 파라미터를 가진 전문가 모듈로 구성됩니다. 단 66억 개의 활성 파라미터만으로 구성된 Phi-3.5-MoE는 훨씬 더 큰 모델과 유사한 수준의 추론, 언어 이해, 수학 능력을 달성합니다. - -Phi-3/3.5 패밀리 모델은 다양한 시나리오에 맞춰 활용할 수 있으며, LLM과 달리 Phi-3/3.5-mini나 Phi-3/3.5-Vision은 엣지 디바이스에도 배포할 수 있습니다. - -## Phi-3/3.5 패밀리 모델 사용 방법 - -이제 다양한 시나리오에서 Phi-3/3.5 모델을 어떻게 활용할 수 있는지 알아보겠습니다. 다음으로, 다양한 시나리오를 기반으로 Phi-3/3.5를 사용해 보겠습니다. - -![phi3](../../img/phi3.png?WT.mc_id=academic-105485-koreyst) - -### 클라우드 API를 통한 추론 - -**GitHub Models** - -GitHub Models는 가장 직접적인 방법입니다. GitHub Models를 통해 Phi-3/3.5-Instruct 모델에 빠르게 접근할 수 있습니다. Azure AI Inference SDK나 OpenAI SDK와 결합하여 코드로 API에 접근하여 Phi-3/3.5-Instruct를 호출할 수 있습니다. 또한 Playground를 통해 다양한 효과를 테스트할 수도 있습니다. - -- 데모: 중국어 시나리오에서 Phi-3-mini와 Phi-3.5-mini의 효과 비교 - -![phi3](../../img/gh1.png?WT.mc_id=academic-105485-koreyst) - -![phi35](../../img/gh2.png?WT.mc_id=academic-105485-koreyst) - - -**Azure AI Studio** - -아니면 비전과 MoE 모델을 사용하고자 한다면, Azure AI Studio를 통해 호출할 수 있습니다. 관심이 있다면, Phi-3 Cookbook을 읽어 Azure AI Studio를 통해 Phi-3/3.5 Instruct, Vision, MoE를 호출하는 방법을 배울 수 있습니다. [이 링크를 클릭하세요.](https://github.com/microsoft/Phi-3CookBook/blob/main/md/02.QuickStart/AzureAIStudio_QuickStart.md?WT.mc_id=academic-105485-koreyst) - -**NVIDIA NIM** - -Azure와 GitHub에서 제공하는 클라우드 기반 모델 카탈로그 솔루션 외에도, [Nivida NIM](https://developer.nvidia.com/nim?WT.mc_id=academic-105485-koreyst)을 사용하여 관련 호출을 완료할 수 있습니다. NVIDIA NIM을 통해 Phi-3/3.5 패밀리의 API 호출을 할 수 있습니다. NVIDIA NIM(NVIDIA Inference Microservices)은 클라우드, 데이터 센터, 워크스테이션 등 다양한 환경에서 AI 모델을 효율적으로 배포할 수 있도록 설계된 가속화된 추론 마이크로서비스 세트입니다. - -NVIDIA NIM의 주요 특징: - -- **간편한 배포**: NIM은 단일 명령으로 AI 모델을 배포할 수 있어 기존 워크플로우에 쉽게 통합할 수 있습니다. -- **최적화된 성능**: NVIDIA의 사전 최적화된 추론 엔진(TensorRT, TensorRT-LLM 등)을 활용하여 낮은 지연 시간과 높은 처리량을 보장합니다. -- **확장성**: Kubernetes에서 자동 확장을 지원하여 다양한 워크로드를 효과적으로 처리할 수 있습니다. -보안 및 제어: 조직은 자체 관리 인프라에 NIM 마이크로서비스를 자체 호스팅하여 데이터와 애플리케이션에 대한 제어를 유지할 수 있습니다. -- **표준 API**: NIM은 업계 표준 API를 제공하여 챗봇, AI 어시스턴트 등과 같은 AI 애플리케이션을 쉽게 구축하고 통합할 수 있습니다. - -NIM은 NVIDIA AI Enterprise의 일부로, AI 모델의 배포와 운영을 간소화하여 NVIDIA GPU에서 효율적으로 실행되도록 합니다. - -- 데모: NVIDIA NIM을 사용하여 Phi-3.5-Vision API 호출하려면 [[이 링크를 클릭하세요](../..//python/Phi-3-Vision-Nividia-NIM.ipynb?WT.mc_id=academic-105485-koreyst)] - -### 로컬 환경에서 Phi-3/3.5 추론하기 - -Phi-3 또는 GPT-3와 같은 언어 모델에서 추론은 입력받은 내용에 기반하여 응답이나 예측을 생성하는 과정을 말합니다. 프롬프트나 질문을 Phi-3에 제공하면, 훈련된 신경망을 사용하여 훈련된 데이터의 패턴과 관계를 분석하여 가장 가능성 있고 관련성 높은 응답을 추론합니다. - -**Hugging Face Transformers** - -Hugging Face Transformers는 자연어 처리(Natural Language Processing, NLP) 및 기타 머신러닝 작업을 위한 강력한 라이브러리입니다. 주요 특징은 다음과 같습니다: - -1. **사전 훈련된 모델**: 텍스트 분류, 개체명 인식, 질문 응답, 요약, 번역, 텍스트 생성 등 다양한 작업에 사용할 수 있는 수천 개의 사전 훈련된 모델을 제공합니다. - -2. **프레임워크 호환성**: PyTorch, TensorFlow, JAX 등 여러 딥러닝 프레임워크를 지원합니다. 한 프레임워크에서 모델을 훈련하고 다른 프레임워크에서 사용할 수 있습니다. - - -3. **멀티모달 기능**: NLP 외에도 컴퓨터 비전(이미지 분류, 물체 인식 등) 및 오디오 처리(음성 인식, 오디오 분류 등) 작업도 지원합니다. - -4. **사용 편의성**: 모델을 쉽게 다운로드하고 파인튜닝할 수 있는 API와 도구를 제공하여 초보자와 전문가 모두에게 접근성이 높습니다. - -5. **커뮤니티와 리소스**: Hugging Face는 활발한 커뮤니티와 광범위한 문서, 튜토리얼, 가이드가 있어 사용자가 시작하고 라이브러리를 최대한 활용할 수 있도록 돕습니다. [공식 문서](https://huggingface.co/docs/transformers/index?WT.mc_id=academic-105485-koreyst) 또는 [GitHub 리포지토리](https://github.com/huggingface/transformers?WT.mc_id=academic-105485-koreyst)를 참조하세요. - -이 방법은 가장 일반적으로 사용되지만 GPU 가속이 필요합니다. Vision이나 MoE와 같은 시나리오는 많은 계산이 필요하며, 양자화하지 않으면 CPU에서 매우 제한적입니다. - -- 데모: Transformer를 사용하여 Phi-3.5-Instruct 호출하기 - [이 링크를 클릭하세요](../..//python/phi35-instruct-demo.ipynb?WT.mc_id=academic-105485-koreyst) -- 데모: Transformer를 사용하여 Phi-3.5-Vision 호출하기 - [이 링크를 클릭하세요](../..//python/phi35-vision-demo.ipynb?WT.mc_id=academic-105485-koreyst) -- 데모: Transformer를 사용하여 Phi-3.5-MoE 호출하기 - [이 링크를 클릭하세요](../..//python/phi35_moe_demo.ipynb?WT.mc_id=academic-105485-koreyst) - -**Ollama** - -[Ollama](https://ollama.com/?WT.mc_id=academic-105485-koreyst)는 로컬에서 대형 언어 모델(LLM)을 실행하기 쉽게 만들어주는 플랫폼입니다. Llama 3.1, Phi 3, Mistral, Gemma 2 등 다양한 모델을 지원합니다. Ollama는 모델 가중치, 구성, 데이터를 하나의 패키지로 묶어 사용자가 자신만의 모델을 커스터마이징하고 생성할 수 있게 합니다. Ollama는 macOS, Linux, Windows에서 사용할 수 있습니다. 클라우드 서비스를 사용하지 않고 LLM을 실험하거나 배포하고자 한다면 훌륭한 도구입니다. Ollama는 가장 직접적인 방법으로, 다음 명령을 실행하면 됩니다. - - -```bash - -ollama run phi3.5 - -``` - - -**ONNX Runtime for GenAI** - -[ONNX Runtime](https://github.com/microsoft/onnxruntime-genai?WT.mc_id=academic-105485-koreyst)은 플랫폼 간 추론 및 훈련 머신러닝 가속기입니다. ONNX Runtime for Generative AI(GENAI)는 생성형 AI 모델을 다양한 플랫폼에서 효율적으로 실행할 수 있도록 도와주는 강력한 도구입니다. - -## ONNX Runtime이란? -ONNX Runtime은 머신러닝 모델의 고성능 추론을 가능하게 하는 오픈 소스 프로젝트입니다. ONNX(Open Neural Network Exchange) 형식의 모델을 지원하며, 이는 머신러닝 모델을 표현하는 표준입니다. ONNX Runtime 추론은 더 빠른 사용자 경험과 낮은 비용을 가능하게 하며, PyTorch, TensorFlow/Keras 등의 딥러닝 프레임워크와 scikit-learn, LightGBM, XGBoost 등의 클래식 머신러닝 라이브러리의 모델을 지원합니다. ONNX Runtime은 다양한 하드웨어, 드라이버, 운영 체제와 호환되며, 하드웨어 가속기를 활용하여 최적의 성능을 제공합니다. - -## 생성형 AI란? -생성형 AI는 훈련된 데이터를 바탕으로 새로운 콘텐츠(텍스트, 이미지, 음악 등)를 생성할 수 있는 AI 시스템을 말합니다. GPT-3와 같은 언어 모델이나 Stable Diffusion과 같은 이미지 생성 모델이 예시입니다. ONNX Runtime for GenAI 라이브러리는 ONNX 모델에 대한 생성형 AI 루프를 제공하며 여기에는 ONNX Runtime을 사용한 추론, 로짓 처리, 검색 및 샘플링, KV 캐시 관리를 포함합니다. - -## ONNX Runtime for GENAI -ONNX Runtime for GENAI는 ONNX Runtime의 기능을 확장하여 생성형 AI 모델을 지원합니다. 주요 특징은 다음과 같습니다: - -- **광범위한 플랫폼 지원**: Windows, Linux, macOS, Android, iOS 등 다양한 플랫폼에서 작동합니다. -- **모델 지원**: LLaMA, GPT-Neo, BLOOM 등 많은 인기 있는 생성형 AI 모델을 지원합니다. -- **성능 최적화**: NVIDIA GPU, AMD GPU 등 다양한 하드웨어 가속기에 대한 최적화를 포함합니다. -- **사용 편의성**: 애플리케이션에 쉽게 통합할 수 있는 API를 제공하여 최소한의 코드로 텍스트, 이미지 등의 콘텐츠를 생성할 수 있습니다. -- 사용자는 고수준의 generate() 메서드를 호출하거나 모델의 각 반복을 루프 내에서 실행하여 한 번에 한 토큰씩 생성하고, 필요에 따라 루프 내에서 생성 파라미터를 업데이트할 수 있습니다. -- ONNX 런타임은 그리디/빔 서치 및 TopP, TopK 샘플링을 지원하여 토큰 시퀀스를 생성하고, 반복 패널티와 같은 내장된 로짓 처리를 제공합니다. 또한, 사용자 정의 스코어링을 쉽게 추가할 수 있습니다. - - -## 시작하기 -ONNX Runtime for GENAI를 시작하려면 다음 단계를 따르세요: - -### ONNX Runtime 설치: -```Python -pip install onnxruntime -``` -### 생성형 AI 익스텐션 설치: -```Python -pip install onnxruntime-genai -``` -### 모델 실행: Python의 간단한 예시: -```Python -import onnxruntime_genai as og - -model = og.Model('path_to_your_model.onnx') - -tokenizer = og.Tokenizer(model) - -input_text = "Hello, how are you?" - -input_tokens = tokenizer.encode(input_text) - -output_tokens = model.generate(input_tokens) - -output_text = tokenizer.decode(output_tokens) - -print(output_text) -``` -### 데모: ONNX Runtime GenAI를 사용하여 Phi-3.5-Vision 호출하기 - - -```python - -import onnxruntime_genai as og - -model_path = './Your Phi-3.5-vision-instruct ONNX Path' - -img_path = './Your Image Path' - -model = og.Model(model_path) - -processor = model.create_multimodal_processor() - -tokenizer_stream = processor.create_stream() - -text = "Your Prompt" - -prompt = "<|user|>\n" - -prompt += "<|image_1|>\n" - -prompt += f"{text}<|end|>\n" - -prompt += "<|assistant|>\n" - -image = og.Images.open(img_path) - -inputs = processor(prompt, images=image) - -params = og.GeneratorParams(model) - -params.set_inputs(inputs) - -params.set_search_options(max_length=3072) - -generator = og.Generator(model, params) - -while not generator.is_done(): - - generator.compute_logits() - - generator.generate_next_token() - - new_token = generator.get_next_tokens()[0] - - code += tokenizer_stream.decode(new_token) - - print(tokenizer_stream.decode(new_token), end='', flush=True) - -``` - - -**기타** - -ONNX Runtime과 Ollama 외에도, 다양한 제조업체에서 제공하는 방법을 통해 양자화된 모델의 추론을 수행할 수 있습니다. 예를 들어 Apple Metal과 함께 Apple MLX 프레임워크, NPU와 함께 Qualcomm QNN, CPU/GPU와 함께 Intel OpenVINO 등을 사용할 수 있습니다. 더 많은 내용은 [Phi-3 Cookbook](https://github.com/microsoft/phi-3cookbook?WT.mc_id=academic-105485-koreyst)에서 찾을 수 있습니다. - - - -## 더 알아보기 - -이제 Phi-3/3.5 패밀리의 기본 개념을 배웠지만, SLM을 더 깊이 이해하려면 추가 학습이 필요합니다. 더 많은 정보가 궁금하다면 [Phi-3 Cookbook](https://github.com/microsoft/phi-3cookbook?WT.mc_id=academic-105485-koreyst)을 방문해 보세요. diff --git a/19-slm/translations/pl/README.md b/19-slm/translations/pl/README.md deleted file mode 100644 index daa6fc1b01..0000000000 --- a/19-slm/translations/pl/README.md +++ /dev/null @@ -1,311 +0,0 @@ -# Wprowadzenie do Małych Modeli Językowych (SLM) dla Początkujących w Generatywnej AI - -Generatywna AI to fascynująca dziedzina sztucznej inteligencji, która skupia się na tworzeniu systemów zdolnych do generowania nowych treści. Treść ta może obejmować tekst, obrazy, muzykę, a nawet całe wirtualne środowiska. Jednym z najbardziej ekscytujących zastosowań generatywnej AI jest dziedzina modeli językowych. - -## Czym są Małe Modele Językowe (SLM)? - -Mały Model Językowy (SLM) reprezentuje pomniejszoną wersję dużego modelu językowego (LLM), wykorzystując wiele zasad architektonicznych i technik LLM, jednocześnie wykazując znacznie mniejsze zapotrzebowanie obliczeniowe. - -SLM to podzbiór modeli językowych zaprojektowanych do generowania tekstu przypominającego ludzki. W przeciwieństwie do ich większych odpowiedników, takich jak GPT-4, SLM są bardziej kompaktowe i wydajne, co czyni je idealnymi do zastosowań, w których zasoby obliczeniowe są ograniczone. Mimo mniejszych rozmiarów, nadal mogą wykonywać różnorodne zadania. Zazwyczaj SLM są budowane poprzez kompresję lub destylację LLM, mając na celu zachowanie znacznej części funkcjonalności i możliwości językowych oryginalnego modelu. Ta redukcja rozmiaru modelu zmniejsza ogólną złożoność, czyniąc SLM bardziej wydajnymi pod względem zużycia pamięci i wymagań obliczeniowych. Pomimo tych optymalizacji, SLM nadal mogą wykonywać szeroki zakres zadań przetwarzania języka naturalnego (NLP): - -- Generowanie tekstu: Tworzenie spójnych i kontekstowo trafnych zdań lub akapitów. -- Uzupełnianie tekstu: Przewidywanie i uzupełnianie zdań na podstawie danego promptu. -- Tłumaczenie: Konwertowanie tekstu z jednego języka na inny. -- Podsumowywanie: Skracanie długich tekstów do krótszych, bardziej przyswajalnych podsumowań. - -Jednak z pewnymi kompromisami w zakresie wydajności lub głębi zrozumienia w porównaniu do ich większych odpowiedników. - -## Jak działają Małe Modele Językowe? - -SLM są trenowane na ogromnych ilościach danych tekstowych. Podczas treningu uczą się wzorców i struktur języka, co umożliwia im generowanie tekstu, który jest zarówno poprawny gramatycznie, jak i odpowiedni kontekstowo. Proces treningu obejmuje: - -- Zbieranie danych: Gromadzenie dużych zbiorów danych tekstowych z różnych źródeł. -- Przetwarzanie wstępne: Czyszczenie i organizowanie danych, aby nadawały się do treningu. -- Trening: Używanie algorytmów uczenia maszynowego do nauczenia modelu rozumienia i generowania tekstu. -- Dostrajanie (Fine-Tuning): Dostosowywanie modelu w celu poprawy jego wydajności w określonych zadaniach. - -Rozwój SLM wpisuje się w rosnące zapotrzebowanie na modele, które można wdrażać w środowiskach o ograniczonych zasobach, takich jak urządzenia mobilne czy platformy edge computing, gdzie pełnowymiarowe LLM mogą być niepraktyczne ze względu na duże zapotrzebowanie na zasoby. Skupiając się na wydajności, SLM równoważą wydajność z dostępnością, umożliwiając szersze zastosowanie w różnych dziedzinach. - -![slm](../../img/slm.png?WT.mc_id=academic-105485-koreyst) - -## Cele Nauki - -W tej lekcji mamy nadzieję wprowadzić wiedzę na temat SLM i połączyć ją z Microsoft Phi-3, aby poznać różne scenariusze w kontekście treści tekstowych, wizji i MoE. - -Po ukończeniu tej lekcji powinieneś być w stanie odpowiedzieć na następujące pytania: - -- Czym jest SLM? -- Jaka jest różnica między SLM a LLM? -- Czym jest rodzina Microsoft Phi-3/3.5? -- Jak wnioskować z rodziny Microsoft Phi-3/3.5? - -Gotowy? Zaczynajmy. - -## Różnice między Dużymi Modelami Językowymi (LLM) a Małymi Modelami Językowymi (SLM) - -Zarówno LLM, jak i SLM opierają się na fundamentalnych zasadach probabilistycznego uczenia maszynowego, stosując podobne podejścia w projektowaniu architektonicznym, metodologiach treningu, procesach generowania danych i technikach oceny modeli. Jednak kilka kluczowych czynników odróżnia te dwa typy modeli. - -## Zastosowania Małych Modeli Językowych - -SLM mają szeroki zakres zastosowań, w tym: - -- Chatboty: Zapewnianie obsługi klienta i angażowanie użytkowników w sposób konwersacyjny. -- Tworzenie treści: Pomaganie pisarzom poprzez generowanie pomysłów lub nawet tworzenie całych artykułów. -- Edukacja: Pomaganie uczniom w zadaniach pisemnych lub nauce nowych języków. -- Dostępność: Tworzenie narzędzi dla osób z niepełnosprawnościami, takich jak systemy zamiany tekstu na mowę. - -**Rozmiar** - -Główna różnica między LLM a SLM leży w skali modeli. LLM, takie jak ChatGPT (GPT-4), mogą składać się z szacunkowo 1,76 biliona parametrów, podczas gdy SLM typu open-source, takie jak Mistral 7B, są projektowane ze znacznie mniejszą liczbą parametrów – około 7 miliardów. Ta rozbieżność wynika głównie z różnic w architekturze modelu i procesach treningu. Na przykład ChatGPT wykorzystuje mechanizm samouwagi (self-attention) w ramach architektury koder-dekoder, podczas gdy Mistral 7B używa uwagi okna przesuwnego (sliding window attention), co umożliwia bardziej wydajny trening w ramach modelu tylko dekodera. Ta różnorodność architektoniczna ma głębokie implikacje dla złożoności i wydajności tych modeli. - -**Zrozumienie** - -SLM są zazwyczaj optymalizowane pod kątem wydajności w określonych dziedzinach, co czyni je wysoce wyspecjalizowanymi, ale potencjalnie ograniczonymi w ich zdolności do zapewnienia szerokiego zrozumienia kontekstowego w wielu dziedzinach wiedzy. W przeciwieństwie do tego, LLM mają na celu symulowanie inteligencji podobnej do ludzkiej na bardziej kompleksowym poziomie. Trenowane na ogromnych, zróżnicowanych zbiorach danych, LLM są zaprojektowane do dobrego działania w różnych dziedzinach, oferując większą wszechstronność i zdolność adaptacji. W konsekwencji LLM są bardziej odpowiednie do szerszego zakresu zadań niższego szczebla, takich jak przetwarzanie języka naturalnego i programowanie. - -**Obliczenia** - -Trening i wdrażanie LLM to procesy wymagające dużych zasobów, często wymagające znacznej infrastruktury obliczeniowej, w tym klastrów GPU na dużą skalę. Na przykład trening modelu takiego jak ChatGPT od podstaw może wymagać tysięcy GPU przez dłuższy czas. W przeciwieństwie do tego, SLM, ze względu na mniejszą liczbę parametrów, są bardziej dostępne pod względem zasobów obliczeniowych. Modele takie jak Mistral 7B można trenować i uruchamiać na lokalnych maszynach wyposażonych w umiarkowane możliwości GPU, chociaż trening nadal wymaga kilku godzin na wielu GPU. - -**Stronniczość (Bias)** - -Stronniczość jest znanym problemem w LLM, głównie ze względu na charakter danych treningowych. Modele te często opierają się na surowych, ogólnodostępnych danych z internetu, które mogą niedostatecznie reprezentować lub błędnie reprezentować niektóre grupy, wprowadzać błędne etykietowanie lub odzwierciedlać stronniczość językową wynikającą z dialektu, różnic geograficznych i zasad gramatycznych. Dodatkowo złożoność architektur LLM może nieumyślnie pogłębiać stronniczość, która może pozostać niezauważona bez starannego dostrajania. Z drugiej strony, SLM, będąc trenowane na bardziej ograniczonych, specyficznych dla domeny zbiorach danych, są z natury mniej podatne na takie stronniczości, chociaż nie są na nie odporne. - -**Wnioskowanie (Inference)** - -Zmniejszony rozmiar SLM daje im znaczną przewagę pod względem szybkości wnioskowania, pozwalając im efektywnie generować wyniki na lokalnym sprzęcie bez potrzeby rozległego przetwarzania równoległego. W przeciwieństwie do tego, LLM, ze względu na swój rozmiar i złożoność, często wymagają znacznych równoległych zasobów obliczeniowych, aby osiągnąć akceptowalne czasy wnioskowania. Obecność wielu jednoczesnych użytkowników dodatkowo spowalnia czas odpowiedzi LLM, zwłaszcza gdy są wdrażane na dużą skalę. - -Podsumowując, chociaż zarówno LLM, jak i SLM mają wspólną podstawę w uczeniu maszynowym, różnią się znacznie pod względem rozmiaru modelu, wymagań dotyczących zasobów, zrozumienia kontekstowego, podatności na stronniczość i szybkości wnioskowania. Różnice te odzwierciedlają ich odpowiednią przydatność do różnych przypadków użycia, przy czym LLM są bardziej wszechstronne, ale wymagające dużych zasobów, a SLM oferują bardziej specyficzną dla domeny wydajność przy zmniejszonych wymaganiach obliczeniowych. - -**_Uwaga: W tym rozdziale przedstawimy SLM na przykładzie Microsoft Phi-3 / 3.5._** - -## Przedstawienie rodziny Phi-3 / Phi-3.5 - -Rodzina Phi-3 / 3.5 jest głównie ukierunkowana na scenariusze zastosowań związane z tekstem, wizją i Agentem (MoE): - -### Phi-3 / 3.5 Instruct - -Głównie do generowania tekstu, uzupełniania czatu, ekstrakcji informacji z treści itp. - -**Phi-3-mini** - -Model językowy 3.8B jest dostępny w Microsoft Azure AI Studio, Hugging Face i Ollama. Modele Phi-3 znacznie przewyższają modele językowe o tej samej i większej wielkości w kluczowych benchmarkach (patrz liczby benchmarków poniżej, wyższe liczby są lepsze). Phi-3-mini przewyższa modele dwukrotnie większe, podczas gdy Phi-3-small i Phi-3-medium przewyższają większe modele, w tym GPT-3.5 - -**Phi-3-small & medium** - -Mając zaledwie 7 mld parametrów, Phi-3-small pokonuje GPT-3.5T w różnych benchmarkach językowych, rozumowania, kodowania i matematycznych. - -Phi-3-medium z 14 mld parametrów kontynuuje ten trend i przewyższa Gemini 1.0 Pro. - -**Phi-3.5-mini** - -Możemy go traktować jako ulepszenie Phi-3-mini. Chociaż parametry pozostają niezmienione, poprawia on zdolność obsługi wielu języków (Obsługa ponad 20 języków: arabski, chiński, czeski, duński, holenderski, angielski, fiński, francuski, niemiecki, hebrajski, węgierski, włoski, japoński, koreański, norweski, polski, portugalski, rosyjski, hiszpański, szwedzki, tajski, turecki, ukraiński) i dodaje silniejsze wsparcie dla długiego kontekstu. - -Phi-3.5-mini z 3.8 mld parametrów przewyższa modele językowe tej samej wielkości i jest na równi z modelami dwukrotnie większymi. - -### Phi-3 / 3.5 Vision - -Możemy myśleć o modelu Instruct Phi-3/3.5 jako o zdolności Phi do rozumienia, a Vision to to, co daje Phi oczy do rozumienia świata. - -**Phi-3-Vision** - -Phi-3-vision, mając zaledwie 4.2 mld parametrów, kontynuuje ten trend i przewyższa większe modele, takie jak Claude-3 Haiku i Gemini 1.0 Pro V, w ogólnych zadaniach rozumowania wizualnego, OCR oraz zadaniach rozumienia tabel i diagramów. - -**Phi-3.5-Vision** - -Phi-3.5-Vision jest również ulepszeniem Phi-3-Vision, dodając obsługę wielu obrazów. Możesz myśleć o tym jako o poprawie widzenia, nie tylko można widzieć zdjęcia, ale także filmy. - -Phi-3.5-vision przewyższa większe modele, takie jak Claude-3.5 Sonnet i Gemini 1.5 Flash, w zadaniach OCR, rozumienia tabel i wykresów oraz jest na równi w ogólnych zadaniach rozumowania opartego na wiedzy wizualnej. Obsługuje wejście wieloklatkowe, tj. wykonuje rozumowanie na wielu obrazach wejściowych. - -### Phi-3.5-MoE - -**_Mixture of Experts (MoE)_** umożliwia wstępne trenowanie modeli przy znacznie mniejszym zużyciu zasobów obliczeniowych, co oznacza, że można radykalnie zwiększyć rozmiar modelu lub zbioru danych przy tym samym budżecie obliczeniowym co model gęsty. W szczególności model MoE powinien osiągnąć tę samą jakość co jego gęsty odpowiednik znacznie szybciej podczas wstępnego treningu. - -Phi-3.5-MoE składa się z 16 modułów eksperckich 3.8B. Phi-3.5-MoE z zaledwie 6.6 mld aktywnych parametrów osiąga podobny poziom rozumowania, rozumienia języka i matematyki co znacznie większe modele. - -Możemy używać modelu rodziny Phi-3/3.5 w oparciu o różne scenariusze. W przeciwieństwie do LLM, możesz wdrożyć Phi-3/3.5-mini lub Phi-3/3.5-Vision na urządzeniach brzegowych (edge). - -## Jak używać modeli rodziny Phi-3/3.5 - -Mamy nadzieję używać Phi-3/3.5 w różnych scenariuszach. Następnie użyjemy Phi-3/3.5 w oparciu o różne scenariusze. - -![phi3](../../img/phi3.png?WT.mc_id=academic-105485-koreyst) - -### Wnioskowanie z różnymi API chmurowymi - -**GitHub Models** - -GitHub Models to najbardziej bezpośredni sposób. Możesz szybko uzyskać dostęp do modelu Phi-3/3.5-Instruct poprzez GitHub Models. W połączeniu z Azure AI Inference SDK / OpenAI SDK, możesz uzyskać dostęp do API za pomocą kodu, aby zakończyć wywołanie Phi-3/3.5-Instruct. Możesz również testować różne efekty za pomocą Playground. - -- Demo: Porównanie efektów Phi-3-mini i Phi-3.5-mini w scenariuszach chińskich - -![phi3](../../img/gh1.png?WT.mc_id=academic-105485-koreyst) - -![phi35](../../img/gh2.png?WT.mc_id=academic-105485-koreyst) - -**Azure AI Studio** - -Lub jeśli chcemy używać modeli wizji i MoE, możesz użyć Azure AI Studio, aby zakończyć wywołanie. Jeśli jesteś zainteresowany, możesz przeczytać Phi-3 Cookbook, aby dowiedzieć się, jak wywoływać Phi-3/3.5 Instruct, Vision, MoE za pośrednictwem Azure AI Studio [Kliknij ten link](https://github.com/microsoft/Phi-3CookBook/blob/main/md/02.QuickStart/AzureAIStudio_QuickStart.md?WT.mc_id=academic-105485-koreyst) - -**NVIDIA NIM** - -Oprócz rozwiązań Model Catalog opartych na chmurze dostarczanych przez Azure i GitHub, możesz również użyć [Nivida NIM](https://developer.nvidia.com/nim?WT.mc_id=academic-105485-koreyst) do wykonania powiązanych wywołań. Możesz odwiedzić NIVIDA NIM, aby zakończyć wywołania API rodziny Phi-3/3.5. NVIDIA NIM (NVIDIA Inference Microservices) to zestaw przyspieszonych mikrousług wnioskowania zaprojektowanych, aby pomóc programistom efektywnie wdrażać modele AI w różnych środowiskach, w tym w chmurach, centrach danych i stacjach roboczych. - -Oto niektóre kluczowe cechy NVIDIA NIM: - -- **Łatwość wdrożenia:** NIM pozwala na wdrożenie modeli AI za pomocą jednej komendy, co ułatwia integrację z istniejącymi przepływami pracy. -- **Zoptymalizowana wydajność:** Wykorzystuje wstępnie zoptymalizowane silniki wnioskowania NVIDIA, takie jak TensorRT i TensorRT-LLM, aby zapewnić niskie opóźnienia i wysoką przepustowość. -- **Skalowalność:** NIM obsługuje automatyczne skalowanie w Kubernetes, umożliwiając efektywne obsługiwanie zmiennych obciążeń. -- **Bezpieczeństwo i kontrola:** Organizacje mogą zachować kontrolę nad swoimi danymi i aplikacjami, samodzielnie hostując mikrousługi NIM na własnej zarządzanej infrastrukturze. -- **Standardowe API:** NIM zapewnia standardowe API branżowe, co ułatwia budowanie i integrowanie aplikacji AI, takich jak chatboty, asystenci AI i inne. - -NIM jest częścią NVIDIA AI Enterprise, która ma na celu uproszczenie wdrażania i operacjonalizacji modeli AI, zapewniając ich efektywne działanie na GPU NVIDIA. - -- Demo: Używanie Nividia NIM do wywołania Phi-3.5-Vision-API [[Kliknij ten link](../../python/Phi-3-Vision-Nividia-NIM.ipynb?WT.mc_id=academic-105485-koreyst)] - -### Wnioskowanie Phi-3/3.5 w środowisku lokalnym - -Wnioskowanie w odniesieniu do Phi-3 lub dowolnego modelu językowego, takiego jak GPT-3, odnosi się do procesu generowania odpowiedzi lub przewidywań na podstawie otrzymanych danych wejściowych. Gdy podajesz prompt lub pytanie do Phi-3, wykorzystuje on swoją wytrenowaną sieć neuronową do wnioskowania najbardziej prawdopodobnej i trafnej odpowiedzi, analizując wzorce i relacje w danych, na których został wytrenowany. - -**Hugging Face Transformer** - -Hugging Face Transformers to potężna biblioteka przeznaczona do przetwarzania języka naturalnego (NLP) i innych zadań uczenia maszynowego. Oto kilka kluczowych punktów na jej temat: - -1. **Wstępnie wytrenowane modele**: Dostarcza tysiące wstępnie wytrenowanych modeli, które można wykorzystać do różnych zadań, takich jak klasyfikacja tekstu, rozpoznawanie nazwanych encji, odpowiadanie na pytania, podsumowywanie, tłumaczenie i generowanie tekstu. - -2. **Interoperacyjność frameworków**: Biblioteka obsługuje wiele frameworków głębokiego uczenia, w tym PyTorch, TensorFlow i JAX. Pozwala to trenować model w jednym frameworku i używać go w innym. - -3. **Możliwości multimodalne**: Oprócz NLP, Hugging Face Transformers obsługuje również zadania z zakresu widzenia komputerowego (np. klasyfikacja obrazów, wykrywanie obiektów) i przetwarzania dźwięku (np. rozpoznawanie mowy, klasyfikacja dźwięku). - -4. **Łatwość użycia**: Biblioteka oferuje API i narzędzia do łatwego pobierania i dostrajania modeli, dzięki czemu jest dostępna zarówno dla początkujących, jak i ekspertów. - -5. **Społeczność i zasoby**: Hugging Face ma żywą społeczność oraz obszerną dokumentację, samouczki i przewodniki, które pomagają użytkownikom rozpocząć pracę i w pełni wykorzystać bibliotekę. - [oficjalna dokumentacja](https://huggingface.co/docs/transformers/index?WT.mc_id=academic-105485-koreyst) lub ich [repozytorium GitHub](https://github.com/huggingface/transformers?WT.mc_id=academic-105485-koreyst). - -Jest to najczęściej stosowana metoda, ale wymaga również przyspieszenia GPU. W końcu sceny takie jak Vision i MoE wymagają wielu obliczeń, które będą bardzo ograniczone w CPU, jeśli nie zostaną skwantyzowane. - -- Demo: Używanie Transformera do wywołania Phi-3.5-Instuct [[Kliknij ten link](../../python/phi35-instruct-demo.ipynb?WT.mc_id=academic-105485-koreyst)] - -- Demo: Używanie Transformera do wywołania Phi-3.5-Vision [[Kliknij ten link](../../python/phi35-vision-demo.ipynb?WT.mc_id=academic-105485-koreyst)] - -- Demo: Używanie Transformera do wywołania Phi-3.5-MoE [[Kliknij ten link](../../python/phi35_moe_demo.ipynb?WT.mc_id=academic-105485-koreyst)] - -**Ollama** - -[Ollama](https://ollama.com/?WT.mc_id=academic-105485-koreyst) to platforma zaprojektowana, aby ułatwić uruchamianie dużych modeli językowych (LLM) lokalnie na Twojej maszynie. Obsługuje różne modele, takie jak Llama 3.1, Phi 3, Mistral i Gemma 2. Platforma upraszcza proces, łącząc wagi modelu, konfigurację i dane w jeden pakiet, co ułatwia użytkownikom dostosowywanie i tworzenie własnych modeli. Ollama jest dostępna dla systemów macOS, Linux i Windows. To świetne narzędzie, jeśli chcesz eksperymentować z LLM lub wdrażać je bez polegania na usługach chmurowych. Ollama to najbardziej bezpośredni sposób, wystarczy wykonać następujące polecenie. - -```bash - -ollama run phi3.5 - -``` - -**ONNX Runtime dla GenAI** - -[ONNX Runtime](https://github.com/microsoft/onnxruntime-genai?WT.mc_id=academic-105485-koreyst) to wieloplatformowy akcelerator wnioskowania i trenowania uczenia maszynowego. ONNX Runtime dla Generative AI (GENAI) to potężne narzędzie, które pomaga efektywnie uruchamiać modele generatywnej AI na różnych platformach. - -## Czym jest ONNX Runtime? - -ONNX Runtime to projekt open-source, który umożliwia wysokowydajne wnioskowanie modeli uczenia maszynowego. Obsługuje modele w formacie Open Neural Network Exchange (ONNX), który jest standardem reprezentacji modeli uczenia maszynowego. Wnioskowanie ONNX Runtime może zapewnić szybsze doświadczenia klienta i niższe koszty, obsługując modele z frameworków głębokiego uczenia, takich jak PyTorch i TensorFlow/Keras, a także klasycznych bibliotek uczenia maszynowego, takich jak scikit-learn, LightGBM, XGBoost itp. ONNX Runtime jest kompatybilny z różnymi sprzętami, sterownikami i systemami operacyjnymi oraz zapewnia optymalną wydajność, wykorzystując akceleratory sprzętowe tam, gdzie to możliwe, wraz z optymalizacjami i transformacjami grafu. - -## Czym jest Generatywna AI? - -Generatywna AI odnosi się do systemów AI, które mogą generować nowe treści, takie jak tekst, obrazy lub muzyka, na podstawie danych, na których zostały wytrenowane. Przykłady obejmują modele językowe, takie jak GPT-3, oraz modele generowania obrazów, takie jak Stable Diffusion. Biblioteka ONNX Runtime dla GenAI zapewnia pętlę generatywnej AI dla modeli ONNX, w tym wnioskowanie za pomocą ONNX Runtime, przetwarzanie logitów, wyszukiwanie i próbkowanie oraz zarządzanie pamięcią podręczną KV. - -## ONNX Runtime dla GENAI - -ONNX Runtime dla GENAI rozszerza możliwości ONNX Runtime o obsługę modeli generatywnej AI. Oto niektóre kluczowe cechy: - -- **Szerokie wsparcie platform:** Działa na różnych platformach, w tym Windows, Linux, macOS, Android i iOS. -- **Wsparcie modeli:** Obsługuje wiele popularnych modeli generatywnej AI, takich jak LLaMA, GPT-Neo, BLOOM i inne. -- **Optymalizacja wydajności:** Zawiera optymalizacje dla różnych akceleratorów sprzętowych, takich jak GPU NVIDIA, GPU AMD i inne. -- **Łatwość użycia:** Dostarcza API do łatwej integracji z aplikacjami, umożliwiając generowanie tekstu, obrazów i innych treści przy minimalnym kodzie. -- Użytkownicy mogą wywołać metodę `generate()` wysokiego poziomu lub uruchomić każdą iterację modelu w pętli, generując jeden token na raz i opcjonalnie aktualizując parametry generowania wewnątrz pętli. -- ONNX Runtime obsługuje również wyszukiwanie zachłanne/wiązki (greedy/beam search) oraz próbkowanie TopP, TopK do generowania sekwencji tokenów oraz wbudowane przetwarzanie logitów, takie jak kary za powtórzenia. Można również łatwo dodać niestandardowe ocenianie. - -## Pierwsze kroki - -Aby rozpocząć pracę z ONNX Runtime dla GENAI, możesz wykonać następujące kroki: - -### Zainstaluj ONNX Runtime: - -```Python -pip install onnxruntime -``` - -### Zainstaluj rozszerzenia Generative AI: - -```Python -pip install onnxruntime-genai -``` - -### Uruchom model: Oto prosty przykład w Pythonie: - -```Python -import onnxruntime_genai as og - -model = og.Model('sciezka_do_twojego_modelu.onnx') - -tokenizer = og.Tokenizer(model) - -input_text = "Witaj, jak się masz?" - -input_tokens = tokenizer.encode(input_text) -``` - -### Demo: Używanie ONNX Runtime GenAI do wywołania Phi-3.5-Vision - -```python -import onnxruntime_genai as og - -model_path = './Twoja ścieżka ONNX Phi-3.5-vision-instruct' - -img_path = './Twoja ścieżka do obrazu' - -model = og.Model(model_path) - -processor = model.create_multimodal_processor() - -tokenizer_stream = processor.create_stream() - -text = "Twój Prompt" - -prompt = "<|user|>\n" - -prompt += "<|image_1|>\n" - -prompt += f"{text}<|end|>\n" - -prompt += "<|assistant|>\n" - -image = og.Images.open(img_path) - -inputs = processor(prompt, images=image) - -params = og.GeneratorParams(model) - -params.set_inputs(inputs) - -params.set_search_options(max_length=3072) - -generator = og.Generator(model, params) - -while not generator.is_done(): - - generator.compute_logits() - - generator.generate_next_token() - - new_token = generator.get_next_tokens()[0] - - code += tokenizer_stream.decode(new_token) - - print(tokenizer_stream.decode(new_token), end='', flush=True) -``` - -**Inne** - -Oprócz metod referencyjnych ONNX Runtime i Ollama, możemy również zakończyć odniesienie do modeli ilościowych w oparciu o metody referencyjne modeli dostarczane przez różnych producentów. Takich jak framework Apple MLX z Apple Metal, Qualcomm QNN z NPU, Intel OpenVINO z CPU/GPU itp. Możesz również uzyskać więcej treści z [Phi-3 Cookbook](https://github.com/microsoft/phi-3cookbook?WT.mc_id=academic-105485-koreyst) - -## Więcej - -Poznaliśmy podstawy rodziny Phi-3/3.5, ale aby dowiedzieć się więcej o SLM, potrzebujemy więcej wiedzy. Odpowiedzi znajdziesz w Phi-3 Cookbook. Jeśli chcesz dowiedzieć się więcej, odwiedź [Phi-3 Cookbook](https://github.com/microsoft/phi-3cookbook?WT.mc_id=academic-105485-koreyst). diff --git a/20-mistral/translations/ko/README.md b/20-mistral/translations/ko/README.md deleted file mode 100644 index e7c44a4b33..0000000000 --- a/20-mistral/translations/ko/README.md +++ /dev/null @@ -1,345 +0,0 @@ -# Mistral 모델로 빌드하기 - -## 소개 - -이 레슨에서는 다음의 내용을 다룹니다: -- 다양한 Mistral 모델 탐색 -- 각 모델의 사용 사례와 시나리오 이해 -- 각 모델의 고유한 기능을 보여주는 코드 예제 - -## Mistral 모델들 -이 레슨에서는 **Mistral Large**, **Mistral Small**, 그리고 **Mistral Nemo**라는 세 가지 Mistral 모델을 살펴보겠습니다. - -세 모델 모두 Github Model 마켓플레이스에서 무료로 이용 가능합니다. 현 레슨에서는 이 세 모델들을 사용하여 코드를 실행할 예정입니다. Github Models를 사용하여 AI 모델로 프로토타입 제작에 대한 자세한 내용은 [여기에서 확인할 수 있습니다.](https://docs.github.com/en/github-models/prototyping-with-ai-models?WT.mc_id=academic-105485-koreyst). - -## Mistral Large 2 (2407) -Mistral Large 2는 현재 Mistral의 대표 모델로, 기업용으로 설계되었습니다. - -이 모델은 기존 Mistral Large 모델을 업그레이드한 것으로, 다음과 같은 개선 사항이 있습니다. - -- 더 큰 context window - 32k에서 128k로 확대 -- 더 나아진 수학 및 코딩 작성 성능 - 평균 정확도가 60.4%에서 76.9%로 증가 -- 더 향상된 다국어 성능 - 지원 언어에는 영어, 프랑스어, 독일어, 스페인어, 이탈리아어, 포르투갈어, 네덜란드어, 러시아어, 중국어, 일본어, 한국어, 아랍어, 힌디어가 포함 - -이러한 기능을 통해 Mistral Large는 다음과 같은 분야에 적합합니다: -- *검색 증강 생성(Retrieval Augmented Generation, RAG)* - 넓어진 context window 덕분에 더 나은 성능 발휘 -- *함수 호출(Function Calling)* - 외부 도구와 API와의 통합을 가능하게 하는 네이티브 함수 호출 기능 제공. 해당 호출을 병렬 또는 순차적인 순서로 차례대로 수행 가능. -- *코드 생성(Code Generation)* - Python, Java, TypeScript, C++ 코드를 생성하는 데 우수한 성능을 발휘 - -### Mistral Large 2을 사용한 RAG 예제 - -이 예제에서는 Mistral Large 2를 사용해 텍스트 문서에 대한 RAG 패턴을 실행합니다. 질문은 한국어로 작성되었으며, 저자가 대학에 들어가기 전 했던 활동에 대해 묻고 있습니다. - -Cohere Embeddings Model을 사용해 텍스트와 질문의 임베딩을 생성하며, faiss Python 패키지를 벡터 저장소로 사용합니다. - -Mistral 모델에 보내는 프롬프트에는 질문과 유사한 검색 결과 청크들이 포함됩니다. 모델은 이 정보에 기반해 자연어 응답을 제공합니다. - -```python -pip install faiss-cpu -``` - -```python -import requests -import numpy as np -import faiss -import os - -from azure.ai.inference import ChatCompletionsClient -from azure.ai.inference.models import SystemMessage, UserMessage -from azure.core.credentials import AzureKeyCredential -from azure.ai.inference import EmbeddingsClient - -endpoint = "https://models.inference.ai.azure.com" -model_name = "Mistral-large" -token = os.environ["GITHUB_TOKEN"] - -client = ChatCompletionsClient( - endpoint=endpoint, - credential=AzureKeyCredential(token), -) - -response = requests.get('https://raw.githubusercontent.com/run-llama/llama_index/main/docs/docs/examples/data/paul_graham/paul_graham_essay.txt') -text = response.text - -chunk_size = 2048 -chunks = [text[i:i + chunk_size] for i in range(0, len(text), chunk_size)] -len(chunks) - -embed_model_name = "cohere-embed-v3-multilingual" - -embed_client = EmbeddingsClient( - endpoint=endpoint, - credential=AzureKeyCredential(token) -) - -embed_response = embed_client.embed( - input=chunks, - model=embed_model_name -) - - - -text_embeddings = [] -for item in embed_response.data: - length = len(item.embedding) - text_embeddings.append(item.embedding) -text_embeddings = np.array(text_embeddings) - - -d = text_embeddings.shape[1] -index = faiss.IndexFlatL2(d) -index.add(text_embeddings) - -question = "저자가 대학에 오기 전에 주로 했던 두 가지 일은 무엇이었나요??" - -question_embedding = embed_client.embed( - input=[question], - model=embed_model_name -) - -question_embeddings = np.array(question_embedding.data[0].embedding) - - -D, I = index.search(question_embeddings.reshape(1, -1), k=2) # distance, index -retrieved_chunks = [chunks[i] for i in I.tolist()[0]] - -prompt = f""" -Context information is below. ---------------------- -{retrieved_chunks} ---------------------- -Given the context information and not prior knowledge, answer the query. -Query: {question} -Answer: -""" - - -chat_response = client.complete( - messages=[ - SystemMessage(content="You are a helpful assistant."), - UserMessage(content=prompt), - ], - temperature=1.0, - top_p=1.0, - max_tokens=1000, - model=model_name -) - -print(chat_response.choices[0].message.content) -``` - -## Mistral Small -Mistral Small은 Mistral 제품군 내의 프리미어/기업용 카테고리에 속한 또 다른 모델입니다. 이름에서 알 수 있듯이 소형 언어 모델(SLM)이죠. Mistral Small은 다음과 같은 장점이 있습니다: -- 비용 절감 - Mistral Large와 NeMo같은 Mistral LLMs에 비해 80% 비용 절감 -- 짧은 지연 시간 - Mistral LLM에 비해 빠른 응답 속도 -- 유연성 - 리소스 요구 사항이 적어 다양한 환경에서 배포 가능 - - -Mistral Small은 다음과 같은 경우에 적합합니다: - -- 요약, 감정 분석, 번역 등 텍스트 기반 작업 -- 비용 효율성으로 인해 자주 요청이 필요한 애플리케이션 -- 즉각적인 응답이 필요한 코드 검토, 코드 제안 등의 작업 - -## Mistral Small과 Mistral Large 비교 -아래 코드 셀을 실행하여 Mistral Small과 Large의 응답 시간 차이를 비교해보겠습니다. - -실행해보면 동일한 프롬프트에 대해 3-5초 정도의 응답 시간 차이를 확인할 수 있으며, 응답 길이와 스타일 차이도 살펴볼 수 있습니다. - -```python - -import os -endpoint = "https://models.inference.ai.azure.com" -model_name = "Mistral-small" -token = os.environ["GITHUB_TOKEN"] - -client = ChatCompletionsClient( - endpoint=endpoint, - credential=AzureKeyCredential(token), -) - -response = client.complete( - messages=[ - SystemMessage(content="You are a helpful coding assistant."), - UserMessage(content="Can you write a Python function to the fizz buzz test?"), - ], - temperature=1.0, - top_p=1.0, - max_tokens=1000, - model=model_name -) - -print(response.choices[0].message.content) - -``` - -```python - -import os -from azure.ai.inference import ChatCompletionsClient -from azure.ai.inference.models import SystemMessage, UserMessage -from azure.core.credentials import AzureKeyCredential - -endpoint = "https://models.inference.ai.azure.com" -model_name = "Mistral-large" -token = os.environ["GITHUB_TOKEN"] - -client = ChatCompletionsClient( - endpoint=endpoint, - credential=AzureKeyCredential(token), -) - -response = client.complete( - messages=[ - SystemMessage(content="You are a helpful coding assistant."), - UserMessage(content="Can you write a Python function to the fizz buzz test?"), - ], - temperature=1.0, - top_p=1.0, - max_tokens=1000, - model=model_name -) - -print(response.choices[0].message.content) - -``` - -## Mistral NeMo -이 레슨에서 다루는 다른 두 모델과 비교하여 Mistral NeMo는 Apache2 라이선스를 가진 유일한 무료 모델입니다. - -NeMo는 Mistral의 이전 오픈 소스 LLM인 Mistral 7B의 업그레이드된 모델로 볼 수 있습니다. - -NeMo 모델의 특징은 다음과 같습니다: - -- *더 효율적인 토큰화* - tiktoken 대신 Tekken tokenizer를 사용해 더 많은 언어와 코드에서 더 나은 성능 발휘 - -- *파인튜닝* - 기본 모델은 파인튜닝이 가능하여, 파인튜닝이 필요한 사용 사례에 더 유연하게 활용할 수 있음 - -- *네이티브 함수 호출* - Mistral Large처럼 function calling에 대한 학습이 되어 있음. 오픈 소스 모델로서는 최초로 이 기능을 갖추었다는 점이 독특함 - - -## Tokenizer 비교 - -다음 샘플에서는 Mistral NeMo가 Mistral Large와 비교하여 어떻게 tokenization을 처리하는지 살펴봅니다. - -두 샘플 모두 동일한 프롬프트를 사용하지만, NeMo가 Mistral Large보다 적은 수의 토큰을 반환하는 것을 확인할 수 있습니다. - -```bash -pip install mistral-common -``` - -```python -# 필요한 패키지 임포트: -from mistral_common.protocol.instruct.messages import ( - UserMessage, -) -from mistral_common.protocol.instruct.request import ChatCompletionRequest -from mistral_common.protocol.instruct.tool_calls import ( - Function, - Tool, -) -from mistral_common.tokens.tokenizers.mistral import MistralTokenizer - -# Mistral 토크나이저 로드 - -model_name = "open-mistral-nemo " - -tokenizer = MistralTokenizer.from_model(model_name) - -# 메시지 목록 토큰화 -tokenized = tokenizer.encode_chat_completion( - ChatCompletionRequest( - tools=[ - Tool( - function=Function( - name="get_current_weather", - description="Get the current weather", - parameters={ - "type": "object", - "properties": { - "location": { - "type": "string", - "description": "The city and state, e.g. San Francisco, CA", - }, - "format": { - "type": "string", - "enum": ["celsius", "fahrenheit"], - "description": "The temperature unit to use. Infer this from the users location.", - }, - }, - "required": ["location", "format"], - }, - ) - ) - ], - messages=[ - UserMessage(content="What's the weather like today in Paris"), - ], - model=model_name, - ) -) -tokens, text = tokenized.tokens, tokenized.text - -# 토큰 수 세기 -print(len(tokens)) -``` - -```python -# 필요한 패키지 임포트: -from mistral_common.protocol.instruct.messages import ( - UserMessage, -) -from mistral_common.protocol.instruct.request import ChatCompletionRequest -from mistral_common.protocol.instruct.tool_calls import ( - Function, - Tool, -) -from mistral_common.tokens.tokenizers.mistral import MistralTokenizer - -# Mistral 토크나이저 로드 - -model_name = "mistral-large-latest" - -tokenizer = MistralTokenizer.from_model(model_name) - -# 메시지 목록 토큰화 -tokenized = tokenizer.encode_chat_completion( - ChatCompletionRequest( - tools=[ - Tool( - function=Function( - name="get_current_weather", - description="Get the current weather", - parameters={ - "type": "object", - "properties": { - "location": { - "type": "string", - "description": "The city and state, e.g. San Francisco, CA", - }, - "format": { - "type": "string", - "enum": ["celsius", "fahrenheit"], - "description": "The temperature unit to use. Infer this from the users location.", - }, - }, - "required": ["location", "format"], - }, - ) - ) - ], - messages=[ - UserMessage(content="What's the weather like today in Paris"), - ], - model=model_name, - ) -) -tokens, text = tokenized.tokens, tokenized.text - -# 토큰 수 세기 -print(len(tokens)) -``` - -## 여기서 멈추지 말고, 더 깊이 탐구해 보세요 - -이 레슨을 마쳤다면, [생성형 AI 학습 컬렉션](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst)에서 더 많은 내용을 확인하며 생성형 AI 지식을 한 단계 더 높여보세요! diff --git a/20-mistral/translations/pl/README.md b/20-mistral/translations/pl/README.md deleted file mode 100644 index 89c2a10008..0000000000 --- a/20-mistral/translations/pl/README.md +++ /dev/null @@ -1,348 +0,0 @@ -# Budowanie z modelami Mistral - -## Wprowadzenie - -Ta lekcja obejmie: - -- Odkrywanie różnych modeli Mistral -- Zrozumienie przypadków użycia i scenariuszy dla każdego modelu -- Przykłady kodu pokazujące unikalne cechy każdego modelu. - -## Modele Mistral - -W tej lekcji omówimy 3 różne modele Mistral: -**Mistral Large**, **Mistral Small** i **Mistral Nemo**. - -Każdy z tych modeli jest dostępny za darmo na rynku modeli Github. Kod w tym notatniku będzie używał tych modeli do uruchomienia kodu. Oto więcej szczegółów na temat używania modeli Github do [prototypowania z modelami AI](https://docs.github.com/en/github-models/prototyping-with-ai-models?WT.mc_id=academic-105485-koreyst). - -## Mistral Large 2 (2407) - -Mistral Large 2 jest obecnie flagowym modelem firmy Mistral i jest przeznaczony do użytku korporacyjnego. - -Model ten jest ulepszeniem oryginalnego Mistral Large, oferując - -- Większe okno kontekstowe - 128k vs 32k -- Lepszą wydajność w zadaniach matematycznych i kodowania - średnia dokładność 76,9% vs 60,4% -- Zwiększoną wydajność wielojęzyczną - obsługiwane języki to: angielski, francuski, niemiecki, hiszpański, włoski, portugalski, holenderski, rosyjski, chiński, japoński, koreański, arabski i hindi. - -Dzięki tym funkcjom Mistral Large doskonale radzi sobie z - -- _Retrieval Augmented Generation (RAG)_ - ze względu na większe okno kontekstowe -- _Wywoływanie funkcji_ - ten model ma natywne wywoływanie funkcji, co pozwala na integrację z zewnętrznymi narzędziami i API. Wywołania te mogą być wykonywane zarówno równolegle, jak i jedno po drugim w porządku sekwencyjnym. -- _Generowanie kodu_ - ten model doskonale radzi sobie z generowaniem kodu w językach Python, Java, TypeScript i C++. - -### Przykład RAG przy użyciu Mistral Large 2 - -W tym przykładzie używamy Mistral Large 2 do uruchomienia wzorca RAG na dokumencie tekstowym. Pytanie jest napisane w języku koreańskim i dotyczy działań autora przed studiami. - -Wykorzystuje model Embeddings Cohere do tworzenia embeddingów dokumentu tekstowego oraz pytania. W tej próbce używa pakietu faiss w Pythonie jako magazynu wektorów. - -Prompt wysłany do modelu Mistral zawiera zarówno pytania, jak i pobrane fragmenty podobne do pytania. Model następnie dostarcza odpowiedź w języku naturalnym. - -```python -pip install faiss-cpu -``` - -```python -import requests -import numpy as np -import faiss -import os - -from azure.ai.inference import ChatCompletionsClient -from azure.ai.inference.models import SystemMessage, UserMessage -from azure.core.credentials import AzureKeyCredential -from azure.ai.inference import EmbeddingsClient - -endpoint = "https://models.inference.ai.azure.com" -model_name = "Mistral-large" -token = os.environ["GITHUB_TOKEN"] - -client = ChatCompletionsClient( - endpoint=endpoint, - credential=AzureKeyCredential(token), -) - -response = requests.get('https://raw.githubusercontent.com/run-llama/llama_index/main/docs/docs/examples/data/paul_graham/paul_graham_essay.txt') -text = response.text - -chunk_size = 2048 -chunks = [text[i:i + chunk_size] for i in range(0, len(text), chunk_size)] -len(chunks) - -embed_model_name = "cohere-embed-v3-multilingual" - -embed_client = EmbeddingsClient( - endpoint=endpoint, - credential=AzureKeyCredential(token) -) - -embed_response = embed_client.embed( - input=chunks, - model=embed_model_name -) - -text_embeddings = [] -for item in embed_response.data: - length = len(item.embedding) - text_embeddings.append(item.embedding) -text_embeddings = np.array(text_embeddings) - -d = text_embeddings.shape[1] -index = faiss.IndexFlatL2(d) -index.add(text_embeddings) - -question = "저자가 대학에 오기 전에 주로 했던 두 가지 일은 무엇이었나요??" - -question_embedding = embed_client.embed( - input=[question], - model=embed_model_name -) - -question_embeddings = np.array(question_embedding.data[0].embedding) - -D, I = index.search(question_embeddings.reshape(1, -1), k=2) # odległość, indeks -retrieved_chunks = [chunks[i] for i in I.tolist()[0]] - -prompt = f""" -Informacje kontekstowe znajdują się poniżej. ---------------------- -{retrieved_chunks} ---------------------- -Biorąc pod uwagę informacje kontekstowe, a nie wcześniejszą wiedzę, odpowiedz na zapytanie. -Zapytanie: {question} -Odpowiedź: -""" - -chat_response = client.complete( - messages=[ - SystemMessage(content="Jesteś pomocnym asystentem."), - UserMessage(content=prompt), - ], - temperature=1.0, - top_p=1.0, - max_tokens=1000, - model=model_name -) - -print(chat_response.choices[0].message.content) -``` - -## Mistral Small - -Mistral Small to kolejny model z rodziny modeli Mistral należący do kategorii premier/enterprise. Jak sama nazwa wskazuje, model ten jest Małym Modelem Językowym (SLM). Zalety korzystania z Mistral Small to: - -- Oszczędność kosztów w porównaniu do LLM Mistral, takich jak Mistral Large i NeMo - spadek ceny o 80% -- Niskie opóźnienie - szybsza odpowiedź w porównaniu do LLM Mistral -- Elastyczność - może być wdrażany w różnych środowiskach z mniejszymi ograniczeniami dotyczącymi wymaganych zasobów. - -Mistral Small doskonale nadaje się do: - -- Zadań tekstowych, takich jak podsumowywanie, analiza sentymentu i tłumaczenie. -- Aplikacji, w których często wysyłane są żądania, ze względu na opłacalność -- Zadań związanych z kodem o niskim opóźnieniu, takich jak przegląd i sugestie kodu - -## Porównanie Mistral Small i Mistral Large - -Aby pokazać różnice w opóźnieniach między Mistral Small i Large, uruchom poniższe komórki. - -Powinieneś zauważyć różnicę w czasach odpowiedzi wynoszącą 3-5 sekund. Zwróć również uwagę na długości i styl odpowiedzi dla tego samego promptu. - -```python -import os -endpoint = "https://models.inference.ai.azure.com" -model_name = "Mistral-small" -token = os.environ["GITHUB_TOKEN"] - -client = ChatCompletionsClient( - endpoint=endpoint, - credential=AzureKeyCredential(token), -) - -response = client.complete( - messages=[ - SystemMessage(content="Jesteś pomocnym asystentem kodowania."), - UserMessage(content="Czy możesz napisać funkcję w Pythonie do testu fizz buzz?"), - ], - temperature=1.0, - top_p=1.0, - max_tokens=1000, - model=model_name -) - -print(response.choices[0].message.content) -``` - -```python -import os -from azure.ai.inference import ChatCompletionsClient -from azure.ai.inference.models import SystemMessage, UserMessage -from azure.core.credentials import AzureKeyCredential - -endpoint = "https://models.inference.ai.azure.com" -model_name = "Mistral-large" -token = os.environ["GITHUB_TOKEN"] - -client = ChatCompletionsClient( - endpoint=endpoint, - credential=AzureKeyCredential(token), -) - -response = client.complete( - messages=[ - SystemMessage(content="Jesteś pomocnym asystentem kodowania."), - UserMessage(content="Czy możesz napisać funkcję w Pythonie do testu fizz buzz?"), - ], - temperature=1.0, - top_p=1.0, - max_tokens=1000, - model=model_name -) - -print(response.choices[0].message.content) -``` - -## Mistral NeMo - -W porównaniu do pozostałych dwóch modeli omawianych w tej lekcji, Mistral NeMo jest jedynym darmowym modelem na licencji Apache2. - -Jest postrzegany jako ulepszenie wcześniejszego otwartego LLM od Mistral, Mistral 7B. - -Inne cechy modelu NeMo to: - -- _Bardziej wydajna tokenizacja:_ Ten model używa tokenizera Tekken zamiast częściej używanego tiktoken. Pozwala to na lepszą wydajność w większej liczbie języków i kodu. - -- _Dostrajanie:_ Model podstawowy jest dostępny do dostrajania. Daje to większą elastyczność w przypadkach użycia, w których może być potrzebne dostrajanie. - -- _Natywne wywoływanie funkcji_ - Podobnie jak Mistral Large, ten model został wytrenowany na wywoływaniu funkcji. Czyni go to wyjątkowym jako jeden z pierwszych modeli open source, który to potrafi. - -### Porównanie Tokenizerów - -W tej próbce przyjrzymy się, jak Mistral NeMo obsługuje tokenizację w porównaniu do Mistral Large. - -Obie próbki przyjmują ten sam prompt, ale powinieneś zauważyć, że NeMo zwraca mniej tokenów niż Mistral Large. - -```bash -pip install mistral-common -``` - -```python -# Importuj potrzebne pakiety: -from mistral_common.protocol.instruct.messages import ( - UserMessage, -) -from mistral_common.protocol.instruct.request import ChatCompletionRequest -from mistral_common.protocol.instruct.tool_calls import ( - Function, - Tool, -) -from mistral_common.tokens.tokenizers.mistral import MistralTokenizer - -# Załaduj tokenizer Mistral - -model_name = "open-mistral-nemo\t" - -tokenizer = MistralTokenizer.from_model(model_name) -``` - -```python -# Załaduj tokenizer Mistral -tokenizer = MistralTokenizer.from_model(model_name) - -# Tokenizuj listę wiadomości -tokenized = tokenizer.encode_chat_completion( - ChatCompletionRequest( - tools=[ - Tool( - function=Function( - name="get_current_weather", - description="Pobierz aktualną pogodę", - parameters={ - "type": "object", - "properties": { - "location": { - "type": "string", - "description": "Miasto i stan, np. San Francisco, CA", - }, - "format": { - "type": "string", - "enum": ["celsius", "fahrenheit"], - "description": "Jednostka temperatury do użycia. Wywnioskuj to z lokalizacji użytkownika.", - }, - }, - "required": ["location", "format"], - }, - ) - ) - ], - messages=[ - UserMessage(content="Jaka jest dzisiaj pogoda w Paryżu"), - ], - model=model_name, - ) -) -tokens, text = tokenized.tokens, tokenized.text - -# Policz liczbę tokenów -print(len(tokens)) -``` - -```python -# Importuj potrzebne pakiety: -from mistral_common.protocol.instruct.messages import ( - UserMessage, -) -from mistral_common.protocol.instruct.request import ChatCompletionRequest -from mistral_common.protocol.instruct.tool_calls import ( - Function, - Tool, -) -from mistral_common.tokens.tokenizers.mistral import MistralTokenizer - -# Załaduj tokenizer Mistral - -model_name = "mistral-large-latest" - -tokenizer = MistralTokenizer.from_model(model_name) - -# Tokenizuj listę wiadomości -tokenized = tokenizer.encode_chat_completion( - ChatCompletionRequest( - tools=[ - Tool( - function=Function( - name="get_current_weather", - description="Pobierz aktualną pogodę", - parameters={ - "type": "object", - "properties": { - "location": { - "type": "string", - "description": "Miasto i stan, np. San Francisco, CA", - }, - "format": { - "type": "string", - "enum": ["celsius", "fahrenheit"], - "description": "Jednostka temperatury do użycia. Wywnioskuj to z lokalizacji użytkownika.", - }, - }, - "required": ["location", "format"], - }, - ) - ) - ], - messages=[ - UserMessage(content="Jaka jest dzisiaj pogoda w Paryżu"), - ], - model=model_name, - ) -) -tokens, text = tokenized.tokens, tokenized.text - -# Policz liczbę tokenów -print(len(tokens)) -``` - -## Nauka się tu nie kończy, kontynuuj Podróż - -Po ukończeniu tej lekcji sprawdź naszą [Kolekcję Nauki o Generatywnej AI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst), aby dalej podnosić swoją wiedzę o Generatywnej AI! diff --git a/21-meta/translations/ko/README.md b/21-meta/translations/ko/README.md deleted file mode 100644 index f9fc01dbbf..0000000000 --- a/21-meta/translations/ko/README.md +++ /dev/null @@ -1,177 +0,0 @@ -# Meta 패밀리 모델로 빌드하기 - -## 소개 - -이 강의에서는 다음 내용을 다룰 예정입니다. -1. 두가지 주요 메타 패밀리 모델 : Llama 3.1과 Llama 3.2 탐색 -2. 각 모델의 사용 사례와 시나리오 이해 -3. 각 모델의 고유한 기능을 보여주는 예제 코드 - -# Meta 패밀리 모델 - - 이 강의에서는 Meta 패밀리와 "Llama Herd"의 두가지 모델인 Llama 3.1과 Llama 3.2에 대해 알아보겠습니다. - - 이 모델들은 다양한 변형 버전으로 제공되며, GitHub 모델 마켓플레이스에서 사용할 수 있습니다. GitHub 모델을 통해 [AI 모델을 사용하여 프로토타입](https://docs.github.com/en/github-models/prototyping-with-ai-models?WT.mc_id=academic-105485-koreyst)을 만드는 자세한 내용은 다음과 같습니다. - - -모델 변형: -- Llama 3.1 - 70B Instruct -- Llama 3.1 - 405B Instruct -- Llama 3.2 - 11B Vision Instruct -- Llama 3.2 - 90B Vision Instruct - -Llama 3 모델도 GitHub 모델에 제공되지만, 이 강의에서는 다루지 않습니다. - -*참고: Llama 3는 깃허브 모델에서도 사용할 수 있지만 이 레슨에서는 다루지 않습니다.* - - -## Llama 3.1 - -4050억 개의 파라미터를 가진 Llama 3.1은 오픈 소스 대규모 언어 모델(LLM) 카테고리에 속합니다. - -이 모델은 이전 버전인 Llama 3보다 다음의 향상된 기능을 제공합니다: - -- 더 큰 컨텍스트 윈도우 : 8천 토큰에서 12만 8천 토큰으로 확대 -- 더 많은 최대 출력 토큰 수 : 2048에서 4096으로 증가 -- 향상된 다국어 지원 : 학습에 사용된 토큰 수 증가 - -이로 인해 Llama 3.1은 다음과 같은 복잡한 생성 AI 애플리케이션에서 더 효과적으로 활용될 수 있습니다. - -- 네이티브 함수 호출: LLM 워크플로우 외부의 외부 도구 및 함수 호출 기능 제공 -- 향상된 RAG 성능: 더 큰 컨텍스트 윈도우 덕분에 성능이 향상됨 -- 합성 데이터 생성: 파인튜닝과 같은 작업을 위한 효율적인 데이터를 생성할 수 있는 기능 - -#### native 함수 호출 - -Llama 3.1은 함수나 도구 호출을 더 효과적으로 수행하도록 미세 조정되었습니다. 또한 사용자 프롬프트에 따라 모델이 필요할 때 자동으로 사용할 수 있는 두 가지 내장 도구가 있습니다. 이러한 도구는 다음과 같습니다: - -- **Brave Search** - 날씨와 같은 최신 정보를 얻기 위해 웹 검색 수행 -- **Wolfram Alpha** - 복잡한 수학 계산을 수행하여 사용자가 직접 함수를 작성할 필요가 없음 - -여러분은 LLM에서 호출할 수 있는 사용자 지정 도구를 직접 만들 수도 있습니다. - -### 아래의 코드 예제에서는: - -- 시스템 프롬프트에 사용할 수 있는 도구들 (brave_search, wolfram_alpha)을 정의합니다. -- 특정 도시의 날씨를 묻는 사용자 프롬프트를 보냅니다. -- LLM은 Brave Search 도구 호출을 통해 응답하며, 다음과 같이 보입니다: `<|python_tag|>brave_search.call(query="Stockholm weather")` - -*참고: 이 예제는 도구 호출만 수행하며, 실제 결과를 얻으려면 Brave API 페이지에서 무료 계정을 생성하고 함수를 정의해야 합니다.* - -```python -import os -from azure.ai.inference import ChatCompletionsClient -from azure.ai.inference.models import AssistantMessage, SystemMessage, UserMessage -from azure.core.credentials import AzureKeyCredential - -token = os.environ["GITHUB_TOKEN"] -endpoint = "https://models.inference.ai.azure.com" -model_name = "meta-llama-3.1-405b-instruct" - -client = ChatCompletionsClient( - endpoint=endpoint, - credential=AzureKeyCredential(token), -) - - -tool_prompt=f""" -<|begin_of_text|><|start_header_id|>system<|end_header_id|> - -Environment: ipython -Tools: brave_search, wolfram_alpha -Cutting Knowledge Date: December 2023 -Today Date: 23 July 2024 - -You are a helpful assistant<|eot_id|> -""" - -messages = [ - SystemMessage(content=tool_prompt), - UserMessage(content="What is the weather in Stockholm?"), - -] - -response = client.complete(messages=messages, model=model_name) - -print(response.choices[0].message.content) -``` - -## Llama 3.2 - -대규모 언어 모델(LLM)임에도 불구하고, Llama 3.1에는 멀티모달리티라는 한계가 있습니다. 즉, 이미지와 같은 다양한 유형의 입력을 프롬프트로 받아들이고 이에 응답합니다. 이 기능은 Llama 3.2의 주요 기능 중 하나입니다. Llama 3.2의 기능은 다음과 같습니다: - -- 멀티모달리티: 텍스트뿐만 아니라 이미지 프롬프트도 평가할 수 있는 기능 -- 작은 크기부터 중간 크기까지의 변형(11B 및 90B): 유연한 배포 옵션 제공 -- 텍스트 전용 변형(1B 및 3B): 에지/모바일 장치에서 모델을 배포할 수 있으며 저지연성을 제공 - -멀티모달 지원은 오픈 소스 모델의 세계에서 큰 진전을 의미합니다. 아래 코드 예제는 이미지와 텍스트 프롬프트를 모두 사용하여 Llama 3.2 90B에서 이미지를 분석하는 예제입니다. - - -### Multimodal Support with Llama 3.2 - -```python -import os -from azure.ai.inference import ChatCompletionsClient -from azure.ai.inference.models import ( - SystemMessage, - UserMessage, - TextContentItem, - ImageContentItem, - ImageUrl, - ImageDetailLevel, -) -from azure.core.credentials import AzureKeyCredential - -token = os.environ["GITHUB_TOKEN"] -endpoint = "https://models.inference.ai.azure.com" -model_name = "Llama-3.2-90B-Vision-Instruct" - -client = ChatCompletionsClient( - endpoint=endpoint, - credential=AzureKeyCredential(token), -) - -response = client.complete( - messages=[ - SystemMessage( - content="You are a helpful assistant that describes images in details." - ), - UserMessage( - content=[ - TextContentItem(text="What's in this image?"), - ImageContentItem( - image_url=ImageUrl.load( - image_file="sample.jpg", - image_format="jpg", - detail=ImageDetailLevel.LOW) - ), - ], - ), - ], - model=model_name, -) - -print(response.choices[0].message.content) -``` -## 배움은 끝나지 않습니다. 계속 나아갑시다! -이번 강의를 마치고 나서, [생성형 AI 학습 모음집](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst)을 확인하여, 계속해서 생성형 AI의 지식을 쌓아갑시다. - - - - - - - - - - - - - - - - - - - - diff --git a/21-meta/translations/pl/README.md b/21-meta/translations/pl/README.md deleted file mode 100644 index c4535d2833..0000000000 --- a/21-meta/translations/pl/README.md +++ /dev/null @@ -1,154 +0,0 @@ -# Budowanie z modelami rodziny Meta - -## Wprowadzenie - -Ta lekcja obejmie: - -- Odkrywanie dwóch głównych modeli rodziny Meta - Llama 3.1 i Llama 3.2 -- Zrozumienie przypadków użycia i scenariuszy dla każdego modelu -- Przykład kodu pokazujący unikalne cechy każdego modelu - -## Rodzina Modeli Meta - -W tej lekcji omówimy 2 modele z rodziny Meta lub "Stada Llama" - Llama 3.1 i Llama 3.2 - -Modele te występują w różnych wariantach i są dostępne na rynku modeli GitHub. Oto więcej szczegółów na temat używania modeli GitHub do [prototypowania z modelami AI](https://docs.github.com/en/github-models/prototyping-with-ai-models?WT.mc_id=academic-105485-koreyst). - -Warianty modeli: - -- Llama 3.1 - 70B Instruct -- Llama 3.1 - 405B Instruct -- Llama 3.2 - 11B Vision Instruct -- Llama 3.2 - 90B Vision Instruct - -_Uwaga: Llama 3 jest również dostępna na GitHub Models, ale nie zostanie omówiona w tej lekcji_ - -## Llama 3.1 - -Mając 405 miliardów parametrów, Llama 3.1 mieści się w kategorii otwartych modeli LLM. - -Model ten jest ulepszeniem wcześniejszej wersji Llama 3, oferując: - -- Większe okno kontekstowe - 128k tokenów vs 8k tokenów -- Większą maksymalną liczbę tokenów wyjściowych - 4096 vs 2048 -- Lepsze wsparcie wielojęzyczne - dzięki zwiększeniu liczby tokenów treningowych - -Umożliwia to Llama 3.1 obsługę bardziej złożonych przypadków użycia podczas tworzenia aplikacji GenAI, w tym: - -- Natywne wywoływanie funkcji - możliwość wywoływania zewnętrznych narzędzi i funkcji poza przepływem pracy LLM -- Lepsza wydajność RAG - dzięki większemu oknu kontekstowemu -- Generowanie danych syntetycznych - możliwość tworzenia efektywnych danych do zadań takich jak dostrajanie - -### Natywne wywoływanie funkcji - -Llama 3.1 została dostrojona, aby być bardziej efektywna w wywoływaniu funkcji lub narzędzi. Posiada również dwa wbudowane narzędzia, które model może zidentyfikować jako potrzebne do użycia na podstawie promptu użytkownika. Te narzędzia to: - -- **Brave Search** - Może być używane do uzyskiwania aktualnych informacji, takich jak pogoda, poprzez wyszukiwanie w sieci -- **Wolfram Alpha** - Może być używane do bardziej złożonych obliczeń matematycznych, więc pisanie własnych funkcji nie jest wymagane. - -Możesz również tworzyć własne niestandardowe narzędzia, które LLM może wywoływać. - -W poniższym przykładzie kodu: - -- Definiujemy dostępne narzędzia (brave_search, wolfram_alpha) w prompcie systemowym. -- Wysyłamy prompt użytkownika, który pyta o pogodę w określonym mieście. -- LLM odpowie wywołaniem narzędzia Brave Search, które będzie wyglądać tak: `<|python_tag|>brave_search.call(query="Stockholm weather")` - -\*Uwaga: Ten przykład tylko wykonuje wywołanie narzędzia, jeśli chcesz uzyskać wyniki, musisz utworzyć darmowe konto na stronie Brave API i zdefiniować samą funkcję` - -```python -import os -from azure.ai.inference import ChatCompletionsClient -from azure.ai.inference.models import AssistantMessage, SystemMessage, UserMessage -from azure.core.credentials import AzureKeyCredential - -token = os.environ["GITHUB_TOKEN"] -endpoint = "https://models.inference.ai.azure.com" -model_name = "meta-llama-3.1-405b-instruct" - -client = ChatCompletionsClient( - endpoint=endpoint, - credential=AzureKeyCredential(token), -) - -tool_prompt=f""" -<|begin_of_text|><|start_header_id|>system<|end_header_id|> - -Środowisko: ipython -Narzędzia: brave_search, wolfram_alpha -Data odcięcia wiedzy: Grudzień 2023 -Dzisiejsza data: 23 Lipiec 2024 - -Jesteś pomocnym asystentem<|eot_id|> -""" - -messages = [ - SystemMessage(content=tool_prompt), - UserMessage(content="Jaka jest pogoda w Sztokholmie?"), -] - -response = client.complete(messages=messages, model=model_name) - -print(response.choices[0].message.content) -``` - -## Llama 3.2 - -Mimo że jest to LLM, jednym z ograniczeń Llama 3.1 jest multimodalność. Oznacza to zdolność do używania różnych typów danych wejściowych, takich jak obrazy, jako prompty i dostarczania odpowiedzi. Ta zdolność jest jedną z głównych cech Llama 3.2. Cechy te obejmują również: - -- Multimodalność - ma zdolność do oceny zarówno promptów tekstowych, jak i obrazowych -- Warianty o małym i średnim rozmiarze (11B i 90B) - zapewnia to elastyczne opcje wdrażania -- Warianty tylko tekstowe (1B i 3B) - pozwala to na wdrażanie modelu na urządzeniach brzegowych/mobilnych i zapewnia niskie opóźnienia - -Wsparcie multimodalne stanowi duży krok w świecie otwartych modeli. Poniższy przykład kodu przyjmuje zarówno obraz, jak i prompt tekstowy, aby uzyskać analizę obrazu z Llama 3.2 90B. - -### Wsparcie Multimodalne z Llama 3.2 - -```python -import os -from azure.ai.inference import ChatCompletionsClient -from azure.ai.inference.models import ( - SystemMessage, - UserMessage, - TextContentItem, - ImageContentItem, - ImageUrl, - ImageDetailLevel, -) -from azure.core.credentials import AzureKeyCredential - -token = os.environ["GITHUB_TOKEN"] -endpoint = "https://models.inference.ai.azure.com" -model_name = "Llama-3.2-90B-Vision-Instruct" - -client = ChatCompletionsClient( - endpoint=endpoint, - credential=AzureKeyCredential(token), -) - -response = client.complete( - messages=[ - SystemMessage( - content="Jesteś pomocnym asystentem, który szczegółowo opisuje obrazy." - ), - UserMessage( - content=[ - TextContentItem(text="Co jest na tym obrazie?"), - ImageContentItem( - image_url=ImageUrl.load( - image_file="sample.jpg", - image_format="jpg", - detail=ImageDetailLevel.LOW) - ), - ], - ), - ], - model=model_name, -) - -print(response.choices[0].message.content) -``` - -## Nauka się tu nie kończy, kontynuuj Podróż - -Po ukończeniu tej lekcji sprawdź naszą [Kolekcję Nauki o Generatywnej AI](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst), aby dalej podnosić swoją wiedzę o Generatywnej AI! diff --git a/README.md b/README.md index 50ecc2455e..5a0d5196da 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,12 @@ [![](https://dcbadge.limes.pink/api/server/ByRwuEEgH4)](https://aka.ms/genai-discord?WT.mc_id=academic-105485-koreyst) +### 🌐 Multi-Language Support + +#### Supported via GitHub Action (Automated & Always Up-to-Date) + +[French](./translations/fr/README.md) | [Spanish](./translations/es/README.md) | [German](./translations/de/README.md) | [Russian](./translations/ru/README.md) | [Arabic](./translations/ar/README.md) | [Persian (Farsi)](./translations/fa/README.md) | [Urdu](./translations/ur/README.md) | [Chinese (Simplified)](./translations/zh/README.md) | [Chinese (Traditional, Macau)](./translations/mo/README.md) | [Chinese (Traditional, Hong Kong)](./translations/hk/README.md) | [Chinese (Traditional, Taiwan)](./translations/tw/README.md) | [Japanese](./translations/ja/README.md) | [Korean](./translations/ko/README.md) | [Hindi](./translations/hi/README.md) | [Bengali](./translations/bn/README.md) | [Marathi](./translations/mr/README.md) | [Nepali](./translations/ne/README.md) | [Punjabi (Gurmukhi)](./translations/pa/README.md) | [Portuguese (Portugal)](./translations/pt/README.md) | [Portuguese (Brazil)](./translations/br/README.md) | [Italian](./translations/it/README.md) | [Polish](./translations/pl/README.md) | [Turkish](./translations/tr/README.md) | [Greek](./translations/el/README.md) | [Thai](./translations/th/README.md) | [Swedish](./translations/sv/README.md) | [Danish](./translations/da/README.md) | [Norwegian](./translations/no/README.md) | [Finnish](./translations/fi/README.md) | [Dutch](./translations/nl/README.md) | [Hebrew](./translations/he/README.md) | [Vietnamese](./translations/vi/README.md) | [Indonesian](./translations/id/README.md) | [Malay](./translations/ms/README.md) | [Tagalog (Filipino)](./translations/tl/README.md) | [Swahili](./translations/sw/README.md) | [Hungarian](./translations/hu/README.md) | [Czech](./translations/cs/README.md) | [Slovak](./translations/sk/README.md) | [Romanian](./translations/ro/README.md) | [Bulgarian](./translations/bg/README.md) | [Serbian (Cyrillic)](./translations/sr/README.md) | [Croatian](./translations/hr/README.md) | [Slovenian](./translations/sl/README.md) + # Generative AI for Beginners (Version 3) - A Course Learn the fundamentals of building Generative AI applications with our 21-lesson comprehensive course by Microsoft Cloud Advocates. diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.ar.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.ar.png new file mode 100644 index 0000000000..d3aaed8985 Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.ar.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.bg.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.bg.png new file mode 100644 index 0000000000..038cfbc18c Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.bg.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.bn.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.bn.png new file mode 100644 index 0000000000..0d177ff591 Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.bn.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.br.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.br.png new file mode 100644 index 0000000000..46db325e03 Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.br.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.cs.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.cs.png new file mode 100644 index 0000000000..76bbd80f5c Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.cs.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.da.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.da.png new file mode 100644 index 0000000000..84686360e0 Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.da.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.de.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.de.png new file mode 100644 index 0000000000..c04e969d26 Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.de.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.el.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.el.png new file mode 100644 index 0000000000..a68c9cd0f7 Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.el.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.en.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.en.png new file mode 100644 index 0000000000..25dd7ef805 Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.en.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.es.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.es.png new file mode 100644 index 0000000000..f0acdb80be Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.es.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.fa.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.fa.png new file mode 100644 index 0000000000..4914741558 Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.fa.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.fi.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.fi.png new file mode 100644 index 0000000000..0949307255 Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.fi.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.fr.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.fr.png new file mode 100644 index 0000000000..aebf070053 Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.fr.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.he.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.he.png new file mode 100644 index 0000000000..cd1dc06a5f Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.he.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.hi.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.hi.png new file mode 100644 index 0000000000..0af2fc5508 Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.hi.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.hk.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.hk.png new file mode 100644 index 0000000000..52bd1d2e5f Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.hk.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.hr.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.hr.png new file mode 100644 index 0000000000..8085e94f17 Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.hr.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.hu.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.hu.png new file mode 100644 index 0000000000..e741cc60eb Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.hu.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.id.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.id.png new file mode 100644 index 0000000000..58ebf08319 Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.id.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.it.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.it.png new file mode 100644 index 0000000000..991bb3edb6 Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.it.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.ja.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.ja.png new file mode 100644 index 0000000000..ead33c2fdf Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.ja.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.ko.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.ko.png new file mode 100644 index 0000000000..b0c68a0c0c Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.ko.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.mo.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.mo.png new file mode 100644 index 0000000000..5ae6f558a9 Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.mo.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.mr.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.mr.png new file mode 100644 index 0000000000..e0d683d5e1 Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.mr.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.ms.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.ms.png new file mode 100644 index 0000000000..a169a0aafa Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.ms.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.ne.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.ne.png new file mode 100644 index 0000000000..471877a100 Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.ne.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.nl.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.nl.png new file mode 100644 index 0000000000..b580d2c25c Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.nl.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.no.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.no.png new file mode 100644 index 0000000000..b686af6ee4 Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.no.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.pa.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.pa.png new file mode 100644 index 0000000000..08ba5c60a4 Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.pa.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.pl.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.pl.png new file mode 100644 index 0000000000..ac1177af7e Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.pl.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.pt.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.pt.png new file mode 100644 index 0000000000..f50426e025 Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.pt.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.ro.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.ro.png new file mode 100644 index 0000000000..d4640f26c3 Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.ro.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.ru.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.ru.png new file mode 100644 index 0000000000..8733525710 Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.ru.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.sk.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.sk.png new file mode 100644 index 0000000000..e94584ee91 Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.sk.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.sl.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.sl.png new file mode 100644 index 0000000000..4b4e846806 Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.sl.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.sr.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.sr.png new file mode 100644 index 0000000000..8ba728a9f2 Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.sr.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.sv.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.sv.png new file mode 100644 index 0000000000..8119cb79c2 Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.sv.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.sw.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.sw.png new file mode 100644 index 0000000000..1ee2fe4a02 Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.sw.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.th.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.th.png new file mode 100644 index 0000000000..cd411991e6 Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.th.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.tl.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.tl.png new file mode 100644 index 0000000000..0a155a02cd Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.tl.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.tr.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.tr.png new file mode 100644 index 0000000000..8b67ced3e8 Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.tr.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.tw.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.tw.png new file mode 100644 index 0000000000..0cfc5999f2 Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.tw.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.ur.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.ur.png new file mode 100644 index 0000000000..9edd3d3ebd Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.ur.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.vi.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.vi.png new file mode 100644 index 0000000000..c62076e816 Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.vi.png differ diff --git a/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.zh.png b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.zh.png new file mode 100644 index 0000000000..37d5094886 Binary files /dev/null and b/translated_images/01-lesson-banner.f4869237c4117400e7a80dd1e19ba2929e1491e5dbe494ad705533362f402e81.zh.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.ar.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.ar.png new file mode 100644 index 0000000000..7011c5f8a5 Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.ar.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.bg.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.bg.png new file mode 100644 index 0000000000..20f6336da3 Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.bg.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.bn.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.bn.png new file mode 100644 index 0000000000..5873fe96c8 Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.bn.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.br.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.br.png new file mode 100644 index 0000000000..d092238fda Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.br.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.cs.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.cs.png new file mode 100644 index 0000000000..680873688d Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.cs.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.da.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.da.png new file mode 100644 index 0000000000..13709912ab Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.da.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.de.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.de.png new file mode 100644 index 0000000000..c177c64357 Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.de.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.el.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.el.png new file mode 100644 index 0000000000..b83e92cb7a Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.el.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.en.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.en.png new file mode 100644 index 0000000000..fd3c618f25 Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.en.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.es.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.es.png new file mode 100644 index 0000000000..c4fa25cb6c Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.es.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.fa.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.fa.png new file mode 100644 index 0000000000..7eaa93768b Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.fa.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.fi.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.fi.png new file mode 100644 index 0000000000..0fa09793e1 Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.fi.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.fr.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.fr.png new file mode 100644 index 0000000000..b90bc53e62 Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.fr.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.he.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.he.png new file mode 100644 index 0000000000..f75a48e9c4 Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.he.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.hi.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.hi.png new file mode 100644 index 0000000000..b9251a1cc7 Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.hi.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.hk.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.hk.png new file mode 100644 index 0000000000..00076becaa Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.hk.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.hr.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.hr.png new file mode 100644 index 0000000000..0dff64310f Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.hr.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.hu.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.hu.png new file mode 100644 index 0000000000..7093672fc9 Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.hu.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.id.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.id.png new file mode 100644 index 0000000000..92bbb76ecd Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.id.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.it.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.it.png new file mode 100644 index 0000000000..bb62f5f56a Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.it.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.ja.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.ja.png new file mode 100644 index 0000000000..974a73cb70 Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.ja.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.ko.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.ko.png new file mode 100644 index 0000000000..5423fbadd2 Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.ko.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.mo.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.mo.png new file mode 100644 index 0000000000..f18daa031b Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.mo.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.mr.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.mr.png new file mode 100644 index 0000000000..86acc8c606 Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.mr.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.ms.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.ms.png new file mode 100644 index 0000000000..c0b0c20b2d Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.ms.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.ne.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.ne.png new file mode 100644 index 0000000000..dbdab8636b Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.ne.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.nl.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.nl.png new file mode 100644 index 0000000000..5a7dd59fab Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.nl.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.no.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.no.png new file mode 100644 index 0000000000..5127c1a33e Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.no.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.pa.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.pa.png new file mode 100644 index 0000000000..6b8c2c8828 Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.pa.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.pl.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.pl.png new file mode 100644 index 0000000000..4dbb5f31b2 Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.pl.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.pt.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.pt.png new file mode 100644 index 0000000000..2422bbc31a Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.pt.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.ro.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.ro.png new file mode 100644 index 0000000000..6cd2e55e90 Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.ro.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.ru.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.ru.png new file mode 100644 index 0000000000..9187b3989b Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.ru.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.sk.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.sk.png new file mode 100644 index 0000000000..f222121a7f Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.sk.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.sl.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.sl.png new file mode 100644 index 0000000000..e328403c23 Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.sl.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.sr.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.sr.png new file mode 100644 index 0000000000..20264a25d7 Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.sr.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.sv.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.sv.png new file mode 100644 index 0000000000..aef03d76a3 Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.sv.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.sw.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.sw.png new file mode 100644 index 0000000000..0479f69e6a Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.sw.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.th.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.th.png new file mode 100644 index 0000000000..b67bbfe2b4 Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.th.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.tl.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.tl.png new file mode 100644 index 0000000000..7aa01dab1f Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.tl.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.tr.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.tr.png new file mode 100644 index 0000000000..fe86e0ab52 Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.tr.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.tw.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.tw.png new file mode 100644 index 0000000000..3e5227584d Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.tw.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.ur.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.ur.png new file mode 100644 index 0000000000..803e2fd511 Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.ur.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.vi.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.vi.png new file mode 100644 index 0000000000..77da733b45 Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.vi.png differ diff --git a/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.zh.png b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.zh.png new file mode 100644 index 0000000000..7c6ac2385c Binary files /dev/null and b/translated_images/01-llmops-shift.82d7bf6eb2d98a01e35f234df654e9aa4ebec89792f274695a5da8dc3f388084.zh.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.ar.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.ar.png new file mode 100644 index 0000000000..3a72a40232 Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.ar.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.bg.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.bg.png new file mode 100644 index 0000000000..e81fc86f08 Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.bg.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.bn.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.bn.png new file mode 100644 index 0000000000..b5e0b3501d Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.bn.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.br.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.br.png new file mode 100644 index 0000000000..7882b0ffc4 Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.br.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.cs.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.cs.png new file mode 100644 index 0000000000..806ffb7cb9 Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.cs.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.da.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.da.png new file mode 100644 index 0000000000..6aa24fa482 Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.da.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.de.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.de.png new file mode 100644 index 0000000000..0e1f66abcf Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.de.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.el.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.el.png new file mode 100644 index 0000000000..ca9740db4e Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.el.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.en.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.en.png new file mode 100644 index 0000000000..ed13929665 Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.en.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.es.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.es.png new file mode 100644 index 0000000000..00b79708dd Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.es.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.fa.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.fa.png new file mode 100644 index 0000000000..0245ae289e Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.fa.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.fi.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.fi.png new file mode 100644 index 0000000000..ce8072b385 Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.fi.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.fr.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.fr.png new file mode 100644 index 0000000000..ef28282ba7 Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.fr.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.he.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.he.png new file mode 100644 index 0000000000..cb62fc592f Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.he.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.hi.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.hi.png new file mode 100644 index 0000000000..faa7ced99d Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.hi.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.hk.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.hk.png new file mode 100644 index 0000000000..cfa534701d Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.hk.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.hr.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.hr.png new file mode 100644 index 0000000000..58ad5f1a93 Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.hr.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.hu.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.hu.png new file mode 100644 index 0000000000..098b0ebfd2 Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.hu.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.id.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.id.png new file mode 100644 index 0000000000..f33bd1c239 Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.id.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.it.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.it.png new file mode 100644 index 0000000000..ab37106f13 Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.it.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.ja.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.ja.png new file mode 100644 index 0000000000..ccac4af42c Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.ja.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.ko.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.ko.png new file mode 100644 index 0000000000..5475b32b5c Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.ko.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.mo.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.mo.png new file mode 100644 index 0000000000..c5db29b6f8 Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.mo.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.mr.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.mr.png new file mode 100644 index 0000000000..cd319b4641 Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.mr.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.ms.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.ms.png new file mode 100644 index 0000000000..da0db00d98 Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.ms.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.ne.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.ne.png new file mode 100644 index 0000000000..f81a58aaea Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.ne.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.nl.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.nl.png new file mode 100644 index 0000000000..1aeff8a04c Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.nl.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.no.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.no.png new file mode 100644 index 0000000000..0e304829f9 Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.no.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.pa.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.pa.png new file mode 100644 index 0000000000..4a86768d2f Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.pa.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.pl.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.pl.png new file mode 100644 index 0000000000..93d1fe3da3 Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.pl.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.pt.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.pt.png new file mode 100644 index 0000000000..e8e4355f7e Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.pt.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.ro.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.ro.png new file mode 100644 index 0000000000..5475b32b5c Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.ro.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.ru.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.ru.png new file mode 100644 index 0000000000..923b153165 Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.ru.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.sk.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.sk.png new file mode 100644 index 0000000000..68cb0551fe Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.sk.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.sl.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.sl.png new file mode 100644 index 0000000000..3d5565212b Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.sl.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.sr.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.sr.png new file mode 100644 index 0000000000..ca8905f236 Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.sr.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.sv.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.sv.png new file mode 100644 index 0000000000..6991916dcb Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.sv.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.sw.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.sw.png new file mode 100644 index 0000000000..d1272145a0 Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.sw.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.th.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.th.png new file mode 100644 index 0000000000..e616988c1c Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.th.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.tl.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.tl.png new file mode 100644 index 0000000000..a7038371e0 Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.tl.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.tr.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.tr.png new file mode 100644 index 0000000000..3c55921da5 Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.tr.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.tw.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.tw.png new file mode 100644 index 0000000000..0961005070 Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.tw.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.ur.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.ur.png new file mode 100644 index 0000000000..16e222140e Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.ur.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.vi.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.vi.png new file mode 100644 index 0000000000..ed3cb9b6ce Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.vi.png differ diff --git a/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.zh.png b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.zh.png new file mode 100644 index 0000000000..0e36db6275 Binary files /dev/null and b/translated_images/02-lesson-banner.722fb0fdf701564d4479112ef4c4fa964c98dce0c241decbe12aae32e9fb4659.zh.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.ar.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.ar.png new file mode 100644 index 0000000000..e01aa3a107 Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.ar.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.bg.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.bg.png new file mode 100644 index 0000000000..7630d32ed0 Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.bg.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.bn.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.bn.png new file mode 100644 index 0000000000..07bc55572c Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.bn.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.br.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.br.png new file mode 100644 index 0000000000..5bfba211af Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.br.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.cs.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.cs.png new file mode 100644 index 0000000000..b924a3fcc6 Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.cs.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.da.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.da.png new file mode 100644 index 0000000000..5db8229a6a Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.da.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.de.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.de.png new file mode 100644 index 0000000000..b6c1a50c20 Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.de.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.el.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.el.png new file mode 100644 index 0000000000..343b6938eb Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.el.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.en.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.en.png new file mode 100644 index 0000000000..56583e00b2 Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.en.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.es.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.es.png new file mode 100644 index 0000000000..41034051f8 Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.es.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.fa.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.fa.png new file mode 100644 index 0000000000..ed935bc810 Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.fa.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.fi.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.fi.png new file mode 100644 index 0000000000..ab9fb31781 Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.fi.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.fr.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.fr.png new file mode 100644 index 0000000000..ef1279e2a5 Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.fr.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.he.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.he.png new file mode 100644 index 0000000000..373e105cba Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.he.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.hi.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.hi.png new file mode 100644 index 0000000000..34e751ff4b Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.hi.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.hk.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.hk.png new file mode 100644 index 0000000000..4765573bbb Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.hk.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.hr.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.hr.png new file mode 100644 index 0000000000..5a281df17d Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.hr.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.hu.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.hu.png new file mode 100644 index 0000000000..5f47eb63ae Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.hu.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.id.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.id.png new file mode 100644 index 0000000000..f92cb35f0d Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.id.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.it.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.it.png new file mode 100644 index 0000000000..df1ac5366e Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.it.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.ja.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.ja.png new file mode 100644 index 0000000000..edb74eeb9f Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.ja.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.ko.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.ko.png new file mode 100644 index 0000000000..dc68607f78 Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.ko.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.mo.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.mo.png new file mode 100644 index 0000000000..cfbf4ec514 Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.mo.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.mr.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.mr.png new file mode 100644 index 0000000000..eb270b8090 Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.mr.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.ms.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.ms.png new file mode 100644 index 0000000000..e28bfc4015 Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.ms.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.ne.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.ne.png new file mode 100644 index 0000000000..f460e72e00 Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.ne.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.nl.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.nl.png new file mode 100644 index 0000000000..148f4842f2 Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.nl.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.no.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.no.png new file mode 100644 index 0000000000..5597e78630 Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.no.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.pa.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.pa.png new file mode 100644 index 0000000000..df69bd9aa0 Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.pa.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.pl.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.pl.png new file mode 100644 index 0000000000..42aebb4f2f Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.pl.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.pt.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.pt.png new file mode 100644 index 0000000000..5f1fd59eed Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.pt.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.ro.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.ro.png new file mode 100644 index 0000000000..5a96ffaf26 Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.ro.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.ru.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.ru.png new file mode 100644 index 0000000000..42c992fba8 Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.ru.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.sk.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.sk.png new file mode 100644 index 0000000000..e2b8095086 Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.sk.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.sl.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.sl.png new file mode 100644 index 0000000000..cc646c0532 Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.sl.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.sr.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.sr.png new file mode 100644 index 0000000000..c982d80999 Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.sr.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.sv.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.sv.png new file mode 100644 index 0000000000..43a6b273b7 Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.sv.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.sw.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.sw.png new file mode 100644 index 0000000000..2c61c610e4 Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.sw.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.th.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.th.png new file mode 100644 index 0000000000..22c6e30a8c Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.th.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.tl.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.tl.png new file mode 100644 index 0000000000..00a2c09907 Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.tl.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.tr.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.tr.png new file mode 100644 index 0000000000..2cec1b5798 Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.tr.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.tw.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.tw.png new file mode 100644 index 0000000000..8869c13aa1 Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.tw.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.ur.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.ur.png new file mode 100644 index 0000000000..ec3b34c56e Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.ur.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.vi.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.vi.png new file mode 100644 index 0000000000..cf5f3f2815 Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.vi.png differ diff --git a/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.zh.png b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.zh.png new file mode 100644 index 0000000000..36b0620edb Binary files /dev/null and b/translated_images/02-llmops.287de964b5ce9577678b7f053efb3a3c92adf0852c882c5bae94c11b7563e4db.zh.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.ar.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.ar.png new file mode 100644 index 0000000000..b1ebfb7e65 Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.ar.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.bg.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.bg.png new file mode 100644 index 0000000000..7982d1787f Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.bg.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.bn.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.bn.png new file mode 100644 index 0000000000..1714828f3e Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.bn.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.br.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.br.png new file mode 100644 index 0000000000..ed5d1a7e05 Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.br.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.cs.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.cs.png new file mode 100644 index 0000000000..b63b14353c Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.cs.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.da.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.da.png new file mode 100644 index 0000000000..0023fb2d28 Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.da.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.de.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.de.png new file mode 100644 index 0000000000..74ad6fa3c6 Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.de.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.el.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.el.png new file mode 100644 index 0000000000..1ff80dac2f Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.el.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.en.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.en.png new file mode 100644 index 0000000000..c4b8e3de91 Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.en.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.es.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.es.png new file mode 100644 index 0000000000..6d92a79aac Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.es.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.fa.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.fa.png new file mode 100644 index 0000000000..cd5ca7a169 Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.fa.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.fi.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.fi.png new file mode 100644 index 0000000000..53d4ef503d Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.fi.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.fr.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.fr.png new file mode 100644 index 0000000000..0e51257717 Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.fr.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.he.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.he.png new file mode 100644 index 0000000000..a8ac06162f Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.he.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.hi.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.hi.png new file mode 100644 index 0000000000..36c097ad62 Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.hi.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.hk.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.hk.png new file mode 100644 index 0000000000..05cdad7e6a Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.hk.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.hr.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.hr.png new file mode 100644 index 0000000000..dd604157ec Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.hr.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.hu.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.hu.png new file mode 100644 index 0000000000..7058b1a24e Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.hu.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.id.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.id.png new file mode 100644 index 0000000000..fea3e66c2e Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.id.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.it.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.it.png new file mode 100644 index 0000000000..1767e42958 Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.it.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.ja.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.ja.png new file mode 100644 index 0000000000..96ba3fd2a9 Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.ja.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.ko.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.ko.png new file mode 100644 index 0000000000..829c1c8fba Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.ko.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.mo.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.mo.png new file mode 100644 index 0000000000..a810b70058 Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.mo.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.mr.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.mr.png new file mode 100644 index 0000000000..e90d76725d Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.mr.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.ms.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.ms.png new file mode 100644 index 0000000000..3e1f5cdac8 Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.ms.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.ne.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.ne.png new file mode 100644 index 0000000000..115c9c2b68 Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.ne.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.nl.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.nl.png new file mode 100644 index 0000000000..344b84d9df Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.nl.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.no.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.no.png new file mode 100644 index 0000000000..13e9e1f6cc Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.no.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.pa.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.pa.png new file mode 100644 index 0000000000..dbc9002479 Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.pa.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.pl.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.pl.png new file mode 100644 index 0000000000..80113022e7 Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.pl.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.pt.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.pt.png new file mode 100644 index 0000000000..d7a114b7be Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.pt.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.ro.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.ro.png new file mode 100644 index 0000000000..4c3d59a7c8 Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.ro.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.ru.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.ru.png new file mode 100644 index 0000000000..a54af7c7a5 Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.ru.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.sk.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.sk.png new file mode 100644 index 0000000000..b83462acff Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.sk.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.sl.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.sl.png new file mode 100644 index 0000000000..1d78a92efe Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.sl.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.sr.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.sr.png new file mode 100644 index 0000000000..d4f5cfa542 Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.sr.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.sv.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.sv.png new file mode 100644 index 0000000000..f2360ed3b9 Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.sv.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.sw.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.sw.png new file mode 100644 index 0000000000..4adf38ec37 Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.sw.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.th.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.th.png new file mode 100644 index 0000000000..4ad5045dad Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.th.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.tl.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.tl.png new file mode 100644 index 0000000000..79039a2fd1 Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.tl.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.tr.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.tr.png new file mode 100644 index 0000000000..ecd8d54780 Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.tr.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.tw.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.tw.png new file mode 100644 index 0000000000..91881867b1 Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.tw.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.ur.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.ur.png new file mode 100644 index 0000000000..0eddc3b73d Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.ur.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.vi.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.vi.png new file mode 100644 index 0000000000..01f579e41e Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.vi.png differ diff --git a/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.zh.png b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.zh.png new file mode 100644 index 0000000000..017e5841d9 Binary files /dev/null and b/translated_images/03-lesson-banner.63a265562d8a9f9230f5c636ab303a0137d11420177528f475b0a05c5f6a9ff9.zh.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.ar.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.ar.png new file mode 100644 index 0000000000..b839c87ce1 Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.ar.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.bg.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.bg.png new file mode 100644 index 0000000000..0f3daf9d2a Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.bg.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.bn.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.bn.png new file mode 100644 index 0000000000..2cd735576c Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.bn.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.br.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.br.png new file mode 100644 index 0000000000..9e5818d54a Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.br.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.cs.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.cs.png new file mode 100644 index 0000000000..1f6da9b569 Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.cs.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.da.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.da.png new file mode 100644 index 0000000000..2401183bb5 Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.da.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.de.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.de.png new file mode 100644 index 0000000000..a70016c200 Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.de.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.el.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.el.png new file mode 100644 index 0000000000..d0d656050b Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.el.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.en.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.en.png new file mode 100644 index 0000000000..60d135172e Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.en.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.es.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.es.png new file mode 100644 index 0000000000..e5cfca62d7 Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.es.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.fa.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.fa.png new file mode 100644 index 0000000000..6d23374738 Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.fa.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.fi.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.fi.png new file mode 100644 index 0000000000..72da1b73d2 Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.fi.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.fr.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.fr.png new file mode 100644 index 0000000000..143209a12c Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.fr.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.he.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.he.png new file mode 100644 index 0000000000..aa6c15c160 Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.he.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.hi.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.hi.png new file mode 100644 index 0000000000..388a81b7f8 Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.hi.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.hk.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.hk.png new file mode 100644 index 0000000000..c0094718b8 Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.hk.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.hr.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.hr.png new file mode 100644 index 0000000000..f2d4aa127e Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.hr.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.hu.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.hu.png new file mode 100644 index 0000000000..d300e09f1e Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.hu.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.id.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.id.png new file mode 100644 index 0000000000..58d14dcdce Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.id.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.it.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.it.png new file mode 100644 index 0000000000..c9dc66abdc Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.it.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.ja.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.ja.png new file mode 100644 index 0000000000..3405f91457 Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.ja.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.ko.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.ko.png new file mode 100644 index 0000000000..41ade3facf Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.ko.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.mo.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.mo.png new file mode 100644 index 0000000000..ed1d926473 Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.mo.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.mr.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.mr.png new file mode 100644 index 0000000000..c377c1a155 Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.mr.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.ms.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.ms.png new file mode 100644 index 0000000000..38244a2591 Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.ms.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.ne.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.ne.png new file mode 100644 index 0000000000..5ced8139cd Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.ne.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.nl.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.nl.png new file mode 100644 index 0000000000..175fc3026f Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.nl.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.no.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.no.png new file mode 100644 index 0000000000..ed0a318642 Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.no.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.pa.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.pa.png new file mode 100644 index 0000000000..2fc71d46ac Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.pa.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.pl.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.pl.png new file mode 100644 index 0000000000..48dee8792f Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.pl.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.pt.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.pt.png new file mode 100644 index 0000000000..e9d7ad9cdc Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.pt.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.ro.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.ro.png new file mode 100644 index 0000000000..b635f74673 Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.ro.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.ru.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.ru.png new file mode 100644 index 0000000000..6dbc6b4b34 Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.ru.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.sk.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.sk.png new file mode 100644 index 0000000000..462929e359 Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.sk.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.sl.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.sl.png new file mode 100644 index 0000000000..5651a9b9ab Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.sl.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.sr.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.sr.png new file mode 100644 index 0000000000..d42a7e5290 Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.sr.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.sv.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.sv.png new file mode 100644 index 0000000000..9d25b0b210 Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.sv.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.sw.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.sw.png new file mode 100644 index 0000000000..6ff58969d9 Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.sw.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.th.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.th.png new file mode 100644 index 0000000000..ce83424ff3 Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.th.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.tl.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.tl.png new file mode 100644 index 0000000000..0e25880699 Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.tl.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.tr.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.tr.png new file mode 100644 index 0000000000..bf5afdb1ac Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.tr.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.tw.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.tw.png new file mode 100644 index 0000000000..f329f35483 Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.tw.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.ur.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.ur.png new file mode 100644 index 0000000000..ec24a9d53b Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.ur.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.vi.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.vi.png new file mode 100644 index 0000000000..57c4ee99e1 Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.vi.png differ diff --git a/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.zh.png b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.zh.png new file mode 100644 index 0000000000..ddc1731891 Binary files /dev/null and b/translated_images/03-llm-stage-flows.f3b87c210c1fe37084a7b7408877ff1688e2dc565694789820ec259e76d4ed05.zh.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.ar.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.ar.png new file mode 100644 index 0000000000..fca216ba17 Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.ar.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.bg.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.bg.png new file mode 100644 index 0000000000..e3bfa3cce1 Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.bg.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.bn.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.bn.png new file mode 100644 index 0000000000..2142f1f514 Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.bn.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.br.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.br.png new file mode 100644 index 0000000000..201661c6a3 Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.br.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.cs.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.cs.png new file mode 100644 index 0000000000..ece130f349 Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.cs.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.da.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.da.png new file mode 100644 index 0000000000..47e873e938 Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.da.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.de.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.de.png new file mode 100644 index 0000000000..52e06a1f30 Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.de.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.el.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.el.png new file mode 100644 index 0000000000..3fd1de6f85 Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.el.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.en.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.en.png new file mode 100644 index 0000000000..70e18bf4e5 Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.en.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.es.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.es.png new file mode 100644 index 0000000000..78f3470bff Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.es.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.fa.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.fa.png new file mode 100644 index 0000000000..3de2f3faac Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.fa.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.fi.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.fi.png new file mode 100644 index 0000000000..439c936751 Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.fi.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.fr.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.fr.png new file mode 100644 index 0000000000..a85dc00809 Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.fr.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.he.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.he.png new file mode 100644 index 0000000000..60d4800854 Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.he.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.hi.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.hi.png new file mode 100644 index 0000000000..7947d0a6cc Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.hi.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.hk.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.hk.png new file mode 100644 index 0000000000..a707159574 Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.hk.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.hr.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.hr.png new file mode 100644 index 0000000000..5f81b55f0f Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.hr.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.hu.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.hu.png new file mode 100644 index 0000000000..f40ab3f4f5 Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.hu.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.id.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.id.png new file mode 100644 index 0000000000..7d03c47907 Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.id.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.it.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.it.png new file mode 100644 index 0000000000..d6ca1df2b1 Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.it.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.ja.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.ja.png new file mode 100644 index 0000000000..8f5e5941b3 Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.ja.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.ko.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.ko.png new file mode 100644 index 0000000000..113f1df707 Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.ko.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.mo.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.mo.png new file mode 100644 index 0000000000..438d35c335 Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.mo.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.mr.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.mr.png new file mode 100644 index 0000000000..0601b8858b Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.mr.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.ms.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.ms.png new file mode 100644 index 0000000000..8a25bb6f6a Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.ms.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.ne.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.ne.png new file mode 100644 index 0000000000..67be9057f2 Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.ne.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.nl.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.nl.png new file mode 100644 index 0000000000..1f697f8993 Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.nl.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.no.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.no.png new file mode 100644 index 0000000000..51dcb0d6b4 Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.no.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.pa.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.pa.png new file mode 100644 index 0000000000..47da9dd62c Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.pa.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.pl.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.pl.png new file mode 100644 index 0000000000..e5e567a30c Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.pl.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.pt.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.pt.png new file mode 100644 index 0000000000..3e44e3a44e Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.pt.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.ro.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.ro.png new file mode 100644 index 0000000000..8dcfa744b1 Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.ro.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.ru.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.ru.png new file mode 100644 index 0000000000..edd2e1ef41 Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.ru.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.sk.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.sk.png new file mode 100644 index 0000000000..bec06a306c Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.sk.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.sl.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.sl.png new file mode 100644 index 0000000000..ab7152e19b Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.sl.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.sr.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.sr.png new file mode 100644 index 0000000000..967a2a26ef Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.sr.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.sv.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.sv.png new file mode 100644 index 0000000000..9dceb17779 Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.sv.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.sw.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.sw.png new file mode 100644 index 0000000000..1129d27e07 Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.sw.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.th.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.th.png new file mode 100644 index 0000000000..00c2be0de4 Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.th.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.tl.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.tl.png new file mode 100644 index 0000000000..43393ae19d Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.tl.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.tr.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.tr.png new file mode 100644 index 0000000000..641bbf4630 Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.tr.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.tw.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.tw.png new file mode 100644 index 0000000000..3f2075c6e3 Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.tw.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.ur.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.ur.png new file mode 100644 index 0000000000..12cd250978 Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.ur.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.vi.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.vi.png new file mode 100644 index 0000000000..41c7d658e8 Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.vi.png differ diff --git a/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.zh.png b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.zh.png new file mode 100644 index 0000000000..4956e7a142 Binary files /dev/null and b/translated_images/04-azure-ai-platform.bf903e8cdf00f73896d804bd8e6bea62f5280498c998271bd5629c1efa8b466f.zh.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.ar.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.ar.png new file mode 100644 index 0000000000..dd6a9ad16e Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.ar.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.bg.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.bg.png new file mode 100644 index 0000000000..78e2f2838b Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.bg.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.bn.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.bn.png new file mode 100644 index 0000000000..36d807854f Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.bn.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.br.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.br.png new file mode 100644 index 0000000000..4d364654b2 Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.br.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.cs.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.cs.png new file mode 100644 index 0000000000..1cae74e96e Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.cs.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.da.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.da.png new file mode 100644 index 0000000000..1950a13385 Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.da.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.de.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.de.png new file mode 100644 index 0000000000..41beefe459 Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.de.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.el.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.el.png new file mode 100644 index 0000000000..56ef9d4d9f Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.el.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.en.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.en.png new file mode 100644 index 0000000000..b03a6aeeed Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.en.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.es.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.es.png new file mode 100644 index 0000000000..1c72bc413a Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.es.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.fa.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.fa.png new file mode 100644 index 0000000000..46b85749a2 Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.fa.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.fi.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.fi.png new file mode 100644 index 0000000000..18a7ccd949 Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.fi.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.fr.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.fr.png new file mode 100644 index 0000000000..aec8f04884 Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.fr.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.he.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.he.png new file mode 100644 index 0000000000..a772243768 Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.he.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.hi.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.hi.png new file mode 100644 index 0000000000..a105d29cd2 Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.hi.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.hk.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.hk.png new file mode 100644 index 0000000000..53c4318972 Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.hk.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.hr.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.hr.png new file mode 100644 index 0000000000..e05fe3e2ba Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.hr.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.hu.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.hu.png new file mode 100644 index 0000000000..ae017bfd29 Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.hu.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.id.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.id.png new file mode 100644 index 0000000000..9a6bd376b9 Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.id.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.it.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.it.png new file mode 100644 index 0000000000..d41195e500 Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.it.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.ja.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.ja.png new file mode 100644 index 0000000000..0113683e9c Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.ja.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.ko.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.ko.png new file mode 100644 index 0000000000..9c8bb5dd82 Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.ko.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.mo.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.mo.png new file mode 100644 index 0000000000..b2985230c5 Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.mo.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.mr.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.mr.png new file mode 100644 index 0000000000..5d23820dd5 Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.mr.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.ms.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.ms.png new file mode 100644 index 0000000000..12d61ea754 Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.ms.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.ne.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.ne.png new file mode 100644 index 0000000000..ebdedf9918 Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.ne.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.nl.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.nl.png new file mode 100644 index 0000000000..ffb9db35f6 Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.nl.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.no.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.no.png new file mode 100644 index 0000000000..e9b67c7ec7 Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.no.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.pa.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.pa.png new file mode 100644 index 0000000000..88437719a6 Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.pa.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.pl.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.pl.png new file mode 100644 index 0000000000..9a58c6a820 Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.pl.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.pt.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.pt.png new file mode 100644 index 0000000000..76a15420aa Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.pt.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.ro.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.ro.png new file mode 100644 index 0000000000..48aa184685 Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.ro.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.ru.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.ru.png new file mode 100644 index 0000000000..eba13d9f1d Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.ru.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.sk.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.sk.png new file mode 100644 index 0000000000..1535e277e4 Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.sk.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.sl.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.sl.png new file mode 100644 index 0000000000..b51dfa8452 Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.sl.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.sr.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.sr.png new file mode 100644 index 0000000000..70fe4d26b2 Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.sr.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.sv.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.sv.png new file mode 100644 index 0000000000..f4cefdffee Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.sv.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.sw.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.sw.png new file mode 100644 index 0000000000..8b939a3073 Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.sw.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.th.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.th.png new file mode 100644 index 0000000000..c83838f616 Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.th.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.tl.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.tl.png new file mode 100644 index 0000000000..6735185ed8 Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.tl.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.tr.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.tr.png new file mode 100644 index 0000000000..57e0a4f841 Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.tr.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.tw.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.tw.png new file mode 100644 index 0000000000..73ab3aca61 Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.tw.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.ur.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.ur.png new file mode 100644 index 0000000000..cc4f21a11a Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.ur.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.vi.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.vi.png new file mode 100644 index 0000000000..00a8d51ff7 Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.vi.png differ diff --git a/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.zh.png b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.zh.png new file mode 100644 index 0000000000..2152ff2af9 Binary files /dev/null and b/translated_images/04-fabrication-aoai.82448164e682513f908c0b3f2d488c85b39a26d212d815db23827d936b2ffc1e.zh.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.ar.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.ar.png new file mode 100644 index 0000000000..246850e9ee Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.ar.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.bg.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.bg.png new file mode 100644 index 0000000000..bc5f19c2be Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.bg.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.bn.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.bn.png new file mode 100644 index 0000000000..ade14bc018 Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.bn.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.br.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.br.png new file mode 100644 index 0000000000..9a5df2aa4b Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.br.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.cs.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.cs.png new file mode 100644 index 0000000000..810c80ae2c Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.cs.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.da.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.da.png new file mode 100644 index 0000000000..26cb684764 Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.da.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.de.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.de.png new file mode 100644 index 0000000000..d009e73de8 Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.de.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.el.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.el.png new file mode 100644 index 0000000000..31a4619698 Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.el.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.en.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.en.png new file mode 100644 index 0000000000..84540865d5 Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.en.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.es.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.es.png new file mode 100644 index 0000000000..f2f8f21f38 Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.es.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.fa.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.fa.png new file mode 100644 index 0000000000..97fc656087 Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.fa.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.fi.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.fi.png new file mode 100644 index 0000000000..495fe63e10 Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.fi.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.fr.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.fr.png new file mode 100644 index 0000000000..0f917a972f Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.fr.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.he.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.he.png new file mode 100644 index 0000000000..878149b526 Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.he.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.hi.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.hi.png new file mode 100644 index 0000000000..273f2ba818 Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.hi.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.hk.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.hk.png new file mode 100644 index 0000000000..374a755cc7 Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.hk.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.hr.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.hr.png new file mode 100644 index 0000000000..819b1236b8 Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.hr.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.hu.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.hu.png new file mode 100644 index 0000000000..57e170fa6e Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.hu.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.id.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.id.png new file mode 100644 index 0000000000..609b5e4bab Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.id.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.it.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.it.png new file mode 100644 index 0000000000..3fd467fe28 Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.it.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.ja.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.ja.png new file mode 100644 index 0000000000..cf23cd1023 Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.ja.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.ko.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.ko.png new file mode 100644 index 0000000000..13a0cba30c Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.ko.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.mo.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.mo.png new file mode 100644 index 0000000000..97c497126e Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.mo.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.mr.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.mr.png new file mode 100644 index 0000000000..7499527adb Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.mr.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.ms.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.ms.png new file mode 100644 index 0000000000..59fd85a908 Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.ms.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.ne.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.ne.png new file mode 100644 index 0000000000..e23e656d51 Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.ne.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.nl.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.nl.png new file mode 100644 index 0000000000..ffb6e8e696 Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.nl.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.no.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.no.png new file mode 100644 index 0000000000..fc82c64829 Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.no.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.pa.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.pa.png new file mode 100644 index 0000000000..e61ae89197 Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.pa.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.pl.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.pl.png new file mode 100644 index 0000000000..4ba0da4ad3 Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.pl.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.pt.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.pt.png new file mode 100644 index 0000000000..db6f395460 Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.pt.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.ro.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.ro.png new file mode 100644 index 0000000000..58e2daa260 Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.ro.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.ru.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.ru.png new file mode 100644 index 0000000000..dd14e73d97 Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.ru.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.sk.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.sk.png new file mode 100644 index 0000000000..0747e56c8d Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.sk.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.sl.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.sl.png new file mode 100644 index 0000000000..d80b731b38 Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.sl.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.sr.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.sr.png new file mode 100644 index 0000000000..7d01bad89f Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.sr.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.sv.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.sv.png new file mode 100644 index 0000000000..6af051c4bf Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.sv.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.sw.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.sw.png new file mode 100644 index 0000000000..c5c0fbe739 Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.sw.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.th.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.th.png new file mode 100644 index 0000000000..74d387e3f6 Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.th.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.tl.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.tl.png new file mode 100644 index 0000000000..3d61069009 Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.tl.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.tr.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.tr.png new file mode 100644 index 0000000000..8410fd55c5 Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.tr.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.tw.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.tw.png new file mode 100644 index 0000000000..3393d8e82b Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.tw.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.ur.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.ur.png new file mode 100644 index 0000000000..3f5852a160 Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.ur.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.vi.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.vi.png new file mode 100644 index 0000000000..71c777ee90 Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.vi.png differ diff --git a/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.zh.png b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.zh.png new file mode 100644 index 0000000000..86885163d9 Binary files /dev/null and b/translated_images/04-fabrication-huggingchat.8853755d11d0d5c2ad2810b82ab34aae5f2857032d24d378e92bf9024cb4c18f.zh.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.ar.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.ar.png new file mode 100644 index 0000000000..cc7fec7197 Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.ar.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.bg.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.bg.png new file mode 100644 index 0000000000..aed48ac954 Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.bg.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.bn.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.bn.png new file mode 100644 index 0000000000..7a5b466845 Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.bn.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.br.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.br.png new file mode 100644 index 0000000000..e0204c8892 Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.br.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.cs.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.cs.png new file mode 100644 index 0000000000..17a3701a9c Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.cs.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.da.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.da.png new file mode 100644 index 0000000000..2c255f18fa Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.da.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.de.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.de.png new file mode 100644 index 0000000000..5d2b661a3a Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.de.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.el.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.el.png new file mode 100644 index 0000000000..ed67f2e9e6 Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.el.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.en.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.en.png new file mode 100644 index 0000000000..5e1964b73f Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.en.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.es.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.es.png new file mode 100644 index 0000000000..33ce825c15 Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.es.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.fa.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.fa.png new file mode 100644 index 0000000000..f91dba279f Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.fa.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.fi.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.fi.png new file mode 100644 index 0000000000..70b8485719 Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.fi.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.fr.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.fr.png new file mode 100644 index 0000000000..7f0f819307 Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.fr.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.he.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.he.png new file mode 100644 index 0000000000..a682fc8042 Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.he.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.hi.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.hi.png new file mode 100644 index 0000000000..d390fff7f7 Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.hi.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.hk.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.hk.png new file mode 100644 index 0000000000..80434c4f7f Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.hk.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.hr.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.hr.png new file mode 100644 index 0000000000..51721a8beb Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.hr.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.hu.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.hu.png new file mode 100644 index 0000000000..5a8a742b41 Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.hu.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.id.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.id.png new file mode 100644 index 0000000000..96cd4fb75c Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.id.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.it.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.it.png new file mode 100644 index 0000000000..a2e00abeb4 Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.it.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.ja.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.ja.png new file mode 100644 index 0000000000..d2ee4b2167 Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.ja.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.ko.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.ko.png new file mode 100644 index 0000000000..3faf4cbfa3 Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.ko.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.mo.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.mo.png new file mode 100644 index 0000000000..a1fa81dffd Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.mo.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.mr.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.mr.png new file mode 100644 index 0000000000..7c2ec7dd78 Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.mr.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.ms.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.ms.png new file mode 100644 index 0000000000..284cec3109 Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.ms.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.ne.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.ne.png new file mode 100644 index 0000000000..b909787444 Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.ne.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.nl.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.nl.png new file mode 100644 index 0000000000..ee9cc8e3a2 Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.nl.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.no.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.no.png new file mode 100644 index 0000000000..fa3ebb02aa Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.no.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.pa.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.pa.png new file mode 100644 index 0000000000..bd0876cbe6 Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.pa.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.pl.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.pl.png new file mode 100644 index 0000000000..99541ba9b5 Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.pl.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.pt.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.pt.png new file mode 100644 index 0000000000..9c2c80e8ac Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.pt.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.ro.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.ro.png new file mode 100644 index 0000000000..9221b73aab Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.ro.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.ru.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.ru.png new file mode 100644 index 0000000000..61f9e9df3c Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.ru.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.sk.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.sk.png new file mode 100644 index 0000000000..157c8d9d85 Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.sk.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.sl.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.sl.png new file mode 100644 index 0000000000..ffb72d2544 Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.sl.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.sr.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.sr.png new file mode 100644 index 0000000000..bd10ff9b64 Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.sr.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.sv.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.sv.png new file mode 100644 index 0000000000..ae8fde14b4 Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.sv.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.sw.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.sw.png new file mode 100644 index 0000000000..5e737e31fa Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.sw.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.th.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.th.png new file mode 100644 index 0000000000..28f0560b89 Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.th.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.tl.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.tl.png new file mode 100644 index 0000000000..c2027ee724 Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.tl.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.tr.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.tr.png new file mode 100644 index 0000000000..913ff15319 Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.tr.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.tw.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.tw.png new file mode 100644 index 0000000000..d9ecb9b304 Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.tw.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.ur.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.ur.png new file mode 100644 index 0000000000..e6307dcf0d Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.ur.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.vi.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.vi.png new file mode 100644 index 0000000000..8cdd5880c0 Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.vi.png differ diff --git a/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.zh.png b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.zh.png new file mode 100644 index 0000000000..4ffec0c527 Binary files /dev/null and b/translated_images/04-fabrication-oai.e35ad6fd0155734878764fb3a88eccb35a25fa2fb8a78e38599b7bb057f6576b.zh.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.ar.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.ar.png new file mode 100644 index 0000000000..65a6e821fd Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.ar.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.bg.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.bg.png new file mode 100644 index 0000000000..a79963afb5 Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.bg.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.bn.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.bn.png new file mode 100644 index 0000000000..6251e3f1bd Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.bn.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.br.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.br.png new file mode 100644 index 0000000000..b9577dded3 Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.br.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.cs.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.cs.png new file mode 100644 index 0000000000..8eac26d5b7 Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.cs.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.da.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.da.png new file mode 100644 index 0000000000..1184159239 Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.da.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.de.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.de.png new file mode 100644 index 0000000000..24acfd92b8 Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.de.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.el.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.el.png new file mode 100644 index 0000000000..62518657bd Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.el.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.en.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.en.png new file mode 100644 index 0000000000..2d3be2205b Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.en.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.es.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.es.png new file mode 100644 index 0000000000..d78eb3bc58 Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.es.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.fa.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.fa.png new file mode 100644 index 0000000000..5c9b4484d9 Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.fa.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.fi.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.fi.png new file mode 100644 index 0000000000..648707e6de Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.fi.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.fr.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.fr.png new file mode 100644 index 0000000000..13ec03f68e Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.fr.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.he.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.he.png new file mode 100644 index 0000000000..3aeed184c1 Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.he.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.hi.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.hi.png new file mode 100644 index 0000000000..214c328d00 Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.hi.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.hk.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.hk.png new file mode 100644 index 0000000000..3a983e7c84 Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.hk.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.hr.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.hr.png new file mode 100644 index 0000000000..0885cf725f Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.hr.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.hu.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.hu.png new file mode 100644 index 0000000000..384469a91c Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.hu.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.id.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.id.png new file mode 100644 index 0000000000..b0d76699a8 Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.id.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.it.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.it.png new file mode 100644 index 0000000000..f4c4e91db1 Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.it.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.ja.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.ja.png new file mode 100644 index 0000000000..cccafd3cf0 Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.ja.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.ko.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.ko.png new file mode 100644 index 0000000000..c55968cc5a Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.ko.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.mo.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.mo.png new file mode 100644 index 0000000000..e9f4ff8cac Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.mo.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.mr.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.mr.png new file mode 100644 index 0000000000..e375455925 Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.mr.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.ms.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.ms.png new file mode 100644 index 0000000000..de4c99423a Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.ms.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.ne.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.ne.png new file mode 100644 index 0000000000..f687d78c7a Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.ne.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.nl.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.nl.png new file mode 100644 index 0000000000..3831ae33eb Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.nl.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.no.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.no.png new file mode 100644 index 0000000000..b4596266e7 Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.no.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.pa.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.pa.png new file mode 100644 index 0000000000..43cd50e765 Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.pa.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.pl.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.pl.png new file mode 100644 index 0000000000..b16c8f971e Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.pl.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.pt.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.pt.png new file mode 100644 index 0000000000..d6f6202040 Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.pt.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.ro.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.ro.png new file mode 100644 index 0000000000..cf656feb2e Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.ro.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.ru.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.ru.png new file mode 100644 index 0000000000..a82e8d2f02 Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.ru.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.sk.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.sk.png new file mode 100644 index 0000000000..47aed6847d Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.sk.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.sl.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.sl.png new file mode 100644 index 0000000000..eadddbe47b Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.sl.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.sr.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.sr.png new file mode 100644 index 0000000000..12c2ace68f Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.sr.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.sv.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.sv.png new file mode 100644 index 0000000000..c351c42e8a Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.sv.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.sw.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.sw.png new file mode 100644 index 0000000000..dabd4637d3 Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.sw.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.th.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.th.png new file mode 100644 index 0000000000..6394ba2b4f Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.th.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.tl.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.tl.png new file mode 100644 index 0000000000..191dd2f405 Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.tl.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.tr.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.tr.png new file mode 100644 index 0000000000..890232a8e6 Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.tr.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.tw.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.tw.png new file mode 100644 index 0000000000..cebc1434c9 Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.tw.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.ur.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.ur.png new file mode 100644 index 0000000000..bdd9f43e9a Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.ur.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.vi.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.vi.png new file mode 100644 index 0000000000..e73e6204ab Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.vi.png differ diff --git a/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.zh.png b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.zh.png new file mode 100644 index 0000000000..8b07930d19 Binary files /dev/null and b/translated_images/04-lesson-banner.f64061ef44d50999c6846fda5469005407a7b261e5d85b5357b7180f7f8f2d90.zh.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.ar.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.ar.png new file mode 100644 index 0000000000..638c1b3b32 Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.ar.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.bg.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.bg.png new file mode 100644 index 0000000000..b3c2ac89e4 Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.bg.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.bn.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.bn.png new file mode 100644 index 0000000000..a894b89e66 Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.bn.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.br.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.br.png new file mode 100644 index 0000000000..ca50609aff Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.br.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.cs.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.cs.png new file mode 100644 index 0000000000..c863b0df6c Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.cs.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.da.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.da.png new file mode 100644 index 0000000000..c4447383a0 Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.da.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.de.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.de.png new file mode 100644 index 0000000000..b3f1ad8da2 Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.de.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.el.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.el.png new file mode 100644 index 0000000000..9d9e7fbb54 Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.el.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.en.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.en.png new file mode 100644 index 0000000000..7d782fbbe3 Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.en.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.es.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.es.png new file mode 100644 index 0000000000..8fa2b37228 Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.es.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.fa.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.fa.png new file mode 100644 index 0000000000..1f6262bb36 Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.fa.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.fi.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.fi.png new file mode 100644 index 0000000000..8a16ac8aed Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.fi.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.fr.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.fr.png new file mode 100644 index 0000000000..e130db718d Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.fr.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.he.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.he.png new file mode 100644 index 0000000000..909e56b74e Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.he.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.hi.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.hi.png new file mode 100644 index 0000000000..6e8591f4ea Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.hi.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.hk.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.hk.png new file mode 100644 index 0000000000..0a6028be1f Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.hk.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.hr.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.hr.png new file mode 100644 index 0000000000..bcaa8e3fcb Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.hr.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.hu.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.hu.png new file mode 100644 index 0000000000..4871e24e95 Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.hu.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.id.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.id.png new file mode 100644 index 0000000000..6f0bbd0b1d Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.id.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.it.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.it.png new file mode 100644 index 0000000000..9d2cdc2bf4 Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.it.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.ja.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.ja.png new file mode 100644 index 0000000000..62c89bd6aa Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.ja.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.ko.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.ko.png new file mode 100644 index 0000000000..e39366ec44 Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.ko.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.mo.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.mo.png new file mode 100644 index 0000000000..5e986db3a9 Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.mo.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.mr.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.mr.png new file mode 100644 index 0000000000..b454d46780 Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.mr.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.ms.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.ms.png new file mode 100644 index 0000000000..a9b3227f64 Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.ms.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.ne.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.ne.png new file mode 100644 index 0000000000..1ab16d6891 Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.ne.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.nl.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.nl.png new file mode 100644 index 0000000000..4a4a3eca6c Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.nl.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.no.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.no.png new file mode 100644 index 0000000000..e22588f28f Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.no.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.pa.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.pa.png new file mode 100644 index 0000000000..b1edd49cf7 Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.pa.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.pl.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.pl.png new file mode 100644 index 0000000000..7cee6af8c9 Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.pl.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.pt.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.pt.png new file mode 100644 index 0000000000..23c7672fc3 Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.pt.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.ro.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.ro.png new file mode 100644 index 0000000000..32c2cfc01f Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.ro.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.ru.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.ru.png new file mode 100644 index 0000000000..c094bf112a Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.ru.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.sk.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.sk.png new file mode 100644 index 0000000000..fdf50e5b7d Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.sk.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.sl.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.sl.png new file mode 100644 index 0000000000..8f9619d929 Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.sl.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.sr.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.sr.png new file mode 100644 index 0000000000..6852d90aa7 Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.sr.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.sv.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.sv.png new file mode 100644 index 0000000000..c67ad00409 Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.sv.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.sw.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.sw.png new file mode 100644 index 0000000000..9c35b7a334 Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.sw.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.th.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.th.png new file mode 100644 index 0000000000..8e38c4ecc6 Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.th.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.tl.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.tl.png new file mode 100644 index 0000000000..2685967355 Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.tl.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.tr.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.tr.png new file mode 100644 index 0000000000..33ff6ce731 Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.tr.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.tw.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.tw.png new file mode 100644 index 0000000000..f5cded326d Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.tw.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.ur.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.ur.png new file mode 100644 index 0000000000..d5983fe0c3 Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.ur.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.vi.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.vi.png new file mode 100644 index 0000000000..f86f5ffcc9 Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.vi.png differ diff --git a/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.zh.png b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.zh.png new file mode 100644 index 0000000000..9cbe96f7b6 Binary files /dev/null and b/translated_images/04-playground-chat-base.c295eb95eaec74eba11348b3e75384eac5b76171798d53c21daf13c27a92ea53.zh.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.ar.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.ar.png new file mode 100644 index 0000000000..4a227214e2 Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.ar.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.bg.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.bg.png new file mode 100644 index 0000000000..f396c5bb99 Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.bg.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.bn.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.bn.png new file mode 100644 index 0000000000..17577c3bbd Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.bn.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.br.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.br.png new file mode 100644 index 0000000000..135e9c6091 Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.br.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.cs.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.cs.png new file mode 100644 index 0000000000..8f3394cf9f Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.cs.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.da.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.da.png new file mode 100644 index 0000000000..6aec4ffcd7 Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.da.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.de.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.de.png new file mode 100644 index 0000000000..8b93cecbea Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.de.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.el.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.el.png new file mode 100644 index 0000000000..17b9977c26 Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.el.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.en.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.en.png new file mode 100644 index 0000000000..771072aacc Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.en.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.es.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.es.png new file mode 100644 index 0000000000..445da12f21 Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.es.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.fa.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.fa.png new file mode 100644 index 0000000000..d8d2ee70e6 Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.fa.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.fi.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.fi.png new file mode 100644 index 0000000000..b5c3ed5b53 Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.fi.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.fr.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.fr.png new file mode 100644 index 0000000000..3e2bc815bb Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.fr.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.he.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.he.png new file mode 100644 index 0000000000..dded59ebd0 Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.he.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.hi.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.hi.png new file mode 100644 index 0000000000..77200c38c5 Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.hi.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.hk.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.hk.png new file mode 100644 index 0000000000..e1b0a3f689 Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.hk.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.hr.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.hr.png new file mode 100644 index 0000000000..393c249efc Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.hr.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.hu.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.hu.png new file mode 100644 index 0000000000..35ca9a94f3 Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.hu.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.id.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.id.png new file mode 100644 index 0000000000..7ef6a9a226 Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.id.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.it.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.it.png new file mode 100644 index 0000000000..d3088a3015 Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.it.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.ja.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.ja.png new file mode 100644 index 0000000000..cdc472bb67 Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.ja.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.ko.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.ko.png new file mode 100644 index 0000000000..39560d63b7 Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.ko.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.mo.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.mo.png new file mode 100644 index 0000000000..cb06b9484a Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.mo.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.mr.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.mr.png new file mode 100644 index 0000000000..23e5623438 Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.mr.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.ms.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.ms.png new file mode 100644 index 0000000000..0dcbfe3ce1 Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.ms.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.ne.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.ne.png new file mode 100644 index 0000000000..ea700ffa4d Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.ne.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.nl.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.nl.png new file mode 100644 index 0000000000..0bb29a12ec Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.nl.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.no.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.no.png new file mode 100644 index 0000000000..585e38099f Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.no.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.pa.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.pa.png new file mode 100644 index 0000000000..4d7bb5cc84 Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.pa.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.pl.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.pl.png new file mode 100644 index 0000000000..c5ba44ab5d Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.pl.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.pt.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.pt.png new file mode 100644 index 0000000000..c564e71c01 Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.pt.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.ro.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.ro.png new file mode 100644 index 0000000000..64dfe491ad Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.ro.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.ru.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.ru.png new file mode 100644 index 0000000000..9c273a34a7 Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.ru.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.sk.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.sk.png new file mode 100644 index 0000000000..005028d9d8 Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.sk.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.sl.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.sl.png new file mode 100644 index 0000000000..c98b96a688 Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.sl.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.sr.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.sr.png new file mode 100644 index 0000000000..8dab94e400 Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.sr.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.sv.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.sv.png new file mode 100644 index 0000000000..c58db37604 Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.sv.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.sw.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.sw.png new file mode 100644 index 0000000000..85617a3081 Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.sw.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.th.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.th.png new file mode 100644 index 0000000000..cce77d4002 Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.th.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.tl.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.tl.png new file mode 100644 index 0000000000..7e645d8f95 Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.tl.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.tr.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.tr.png new file mode 100644 index 0000000000..047f7037ef Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.tr.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.tw.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.tw.png new file mode 100644 index 0000000000..6b0aa2e988 Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.tw.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.ur.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.ur.png new file mode 100644 index 0000000000..7f86f1565d Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.ur.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.vi.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.vi.png new file mode 100644 index 0000000000..cfc76fef37 Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.vi.png differ diff --git a/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.zh.png b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.zh.png new file mode 100644 index 0000000000..50c316f255 Binary files /dev/null and b/translated_images/04-playground-chat-instructions.80241ce6da683f143c5520bcf582c9d84405c5e9839919fb93bfa652c5480d40.zh.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.ar.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.ar.png new file mode 100644 index 0000000000..01f19d7137 Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.ar.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.bg.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.bg.png new file mode 100644 index 0000000000..16493dca7e Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.bg.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.bn.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.bn.png new file mode 100644 index 0000000000..40f16a89eb Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.bn.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.br.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.br.png new file mode 100644 index 0000000000..4f36048a2b Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.br.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.cs.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.cs.png new file mode 100644 index 0000000000..43eeedc0f4 Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.cs.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.da.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.da.png new file mode 100644 index 0000000000..c7eb4c32f5 Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.da.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.de.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.de.png new file mode 100644 index 0000000000..16fa5063c6 Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.de.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.el.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.el.png new file mode 100644 index 0000000000..1beadfb4f2 Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.el.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.en.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.en.png new file mode 100644 index 0000000000..b3bc4108c4 Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.en.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.es.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.es.png new file mode 100644 index 0000000000..0a75626678 Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.es.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.fa.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.fa.png new file mode 100644 index 0000000000..fe11d4bf6a Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.fa.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.fi.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.fi.png new file mode 100644 index 0000000000..422a88d592 Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.fi.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.fr.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.fr.png new file mode 100644 index 0000000000..e51b294824 Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.fr.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.he.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.he.png new file mode 100644 index 0000000000..5c26a29d88 Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.he.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.hi.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.hi.png new file mode 100644 index 0000000000..9bf6ad441a Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.hi.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.hk.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.hk.png new file mode 100644 index 0000000000..ae96eed8f8 Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.hk.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.hr.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.hr.png new file mode 100644 index 0000000000..f53af6de6c Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.hr.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.hu.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.hu.png new file mode 100644 index 0000000000..14ecec99bc Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.hu.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.id.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.id.png new file mode 100644 index 0000000000..5eeba8af94 Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.id.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.it.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.it.png new file mode 100644 index 0000000000..af6681a464 Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.it.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.ja.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.ja.png new file mode 100644 index 0000000000..f8761d3e55 Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.ja.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.ko.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.ko.png new file mode 100644 index 0000000000..4bd4ca457c Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.ko.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.mo.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.mo.png new file mode 100644 index 0000000000..70cb7957a2 Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.mo.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.mr.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.mr.png new file mode 100644 index 0000000000..8198126387 Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.mr.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.ms.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.ms.png new file mode 100644 index 0000000000..6014a0892f Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.ms.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.ne.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.ne.png new file mode 100644 index 0000000000..d12d277b67 Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.ne.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.nl.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.nl.png new file mode 100644 index 0000000000..83d077271f Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.nl.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.no.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.no.png new file mode 100644 index 0000000000..588f560584 Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.no.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.pa.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.pa.png new file mode 100644 index 0000000000..ab4f12364f Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.pa.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.pl.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.pl.png new file mode 100644 index 0000000000..05d8bbf1ec Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.pl.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.pt.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.pt.png new file mode 100644 index 0000000000..055c165d80 Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.pt.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.ro.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.ro.png new file mode 100644 index 0000000000..17c95b6f6c Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.ro.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.ru.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.ru.png new file mode 100644 index 0000000000..d1bcc76245 Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.ru.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.sk.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.sk.png new file mode 100644 index 0000000000..5a81de51cc Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.sk.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.sl.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.sl.png new file mode 100644 index 0000000000..b8986452ff Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.sl.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.sr.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.sr.png new file mode 100644 index 0000000000..1c2e434f5a Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.sr.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.sv.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.sv.png new file mode 100644 index 0000000000..b0461e7515 Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.sv.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.sw.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.sw.png new file mode 100644 index 0000000000..a767f6c402 Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.sw.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.th.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.th.png new file mode 100644 index 0000000000..1e058b6fd9 Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.th.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.tl.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.tl.png new file mode 100644 index 0000000000..a90e0df0cd Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.tl.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.tr.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.tr.png new file mode 100644 index 0000000000..5d99b4e149 Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.tr.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.tw.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.tw.png new file mode 100644 index 0000000000..a9f844116b Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.tw.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.ur.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.ur.png new file mode 100644 index 0000000000..a348022b03 Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.ur.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.vi.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.vi.png new file mode 100644 index 0000000000..1a6b921f30 Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.vi.png differ diff --git a/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.zh.png b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.zh.png new file mode 100644 index 0000000000..238782ed0f Binary files /dev/null and b/translated_images/04-prompt-engineering-sketchnote.8dbab7f651157e020376d7ca98043d4b6170c7d9e641de05e98df2d4431463c9.zh.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.ar.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.ar.png new file mode 100644 index 0000000000..e19042a274 Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.ar.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.bg.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.bg.png new file mode 100644 index 0000000000..93183ca1ab Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.bg.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.bn.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.bn.png new file mode 100644 index 0000000000..55fc26681e Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.bn.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.br.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.br.png new file mode 100644 index 0000000000..df90feb4a3 Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.br.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.cs.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.cs.png new file mode 100644 index 0000000000..7caa102ab4 Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.cs.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.da.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.da.png new file mode 100644 index 0000000000..d8e1444d9f Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.da.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.de.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.de.png new file mode 100644 index 0000000000..d4ac7d79fe Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.de.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.el.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.el.png new file mode 100644 index 0000000000..f2f98ee56c Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.el.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.en.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.en.png new file mode 100644 index 0000000000..34b776a8b9 Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.en.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.es.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.es.png new file mode 100644 index 0000000000..9c29e2ca01 Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.es.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.fa.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.fa.png new file mode 100644 index 0000000000..6d51c13aa8 Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.fa.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.fi.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.fi.png new file mode 100644 index 0000000000..f5f9627beb Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.fi.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.fr.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.fr.png new file mode 100644 index 0000000000..c68d12f995 Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.fr.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.he.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.he.png new file mode 100644 index 0000000000..2bd0ead2d3 Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.he.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.hi.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.hi.png new file mode 100644 index 0000000000..54bb47aa28 Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.hi.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.hk.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.hk.png new file mode 100644 index 0000000000..93cb4ddf95 Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.hk.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.hr.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.hr.png new file mode 100644 index 0000000000..59510a5c88 Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.hr.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.hu.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.hu.png new file mode 100644 index 0000000000..d9bd8726fe Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.hu.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.id.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.id.png new file mode 100644 index 0000000000..aa0803b658 Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.id.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.it.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.it.png new file mode 100644 index 0000000000..7a8d720fe2 Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.it.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.ja.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.ja.png new file mode 100644 index 0000000000..8eb8da1288 Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.ja.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.ko.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.ko.png new file mode 100644 index 0000000000..3d4ace0f97 Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.ko.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.mo.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.mo.png new file mode 100644 index 0000000000..8aa80f4b69 Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.mo.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.mr.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.mr.png new file mode 100644 index 0000000000..16f63222b7 Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.mr.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.ms.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.ms.png new file mode 100644 index 0000000000..b272225ea5 Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.ms.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.ne.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.ne.png new file mode 100644 index 0000000000..7a43d020d1 Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.ne.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.nl.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.nl.png new file mode 100644 index 0000000000..7d0c46a02b Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.nl.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.no.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.no.png new file mode 100644 index 0000000000..3684c50658 Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.no.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.pa.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.pa.png new file mode 100644 index 0000000000..a2b96c9042 Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.pa.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.pl.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.pl.png new file mode 100644 index 0000000000..85a2d13e16 Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.pl.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.pt.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.pt.png new file mode 100644 index 0000000000..90e9e3ea3f Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.pt.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.ro.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.ro.png new file mode 100644 index 0000000000..b7f8efb33a Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.ro.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.ru.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.ru.png new file mode 100644 index 0000000000..c3e4d1d3a7 Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.ru.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.sk.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.sk.png new file mode 100644 index 0000000000..8afc4cf898 Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.sk.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.sl.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.sl.png new file mode 100644 index 0000000000..35636bebe1 Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.sl.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.sr.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.sr.png new file mode 100644 index 0000000000..e3a3741876 Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.sr.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.sv.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.sv.png new file mode 100644 index 0000000000..644016fcc2 Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.sv.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.sw.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.sw.png new file mode 100644 index 0000000000..66e84af6dd Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.sw.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.th.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.th.png new file mode 100644 index 0000000000..17c3cf2ea8 Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.th.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.tl.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.tl.png new file mode 100644 index 0000000000..2e204a9065 Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.tl.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.tr.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.tr.png new file mode 100644 index 0000000000..33a1f0feac Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.tr.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.tw.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.tw.png new file mode 100644 index 0000000000..37dc529d5f Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.tw.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.ur.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.ur.png new file mode 100644 index 0000000000..9da4ae0cad Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.ur.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.vi.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.vi.png new file mode 100644 index 0000000000..a790f5905a Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.vi.png differ diff --git a/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.zh.png b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.zh.png new file mode 100644 index 0000000000..de7391021d Binary files /dev/null and b/translated_images/04-tokenizer-example.3841c6bd3dc240509f1b22e061052662a57f0dda019c99c5d14903d2d6cd00d2.zh.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.ar.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.ar.png new file mode 100644 index 0000000000..5f575746aa Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.ar.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.bg.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.bg.png new file mode 100644 index 0000000000..b9a7bcc115 Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.bg.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.bn.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.bn.png new file mode 100644 index 0000000000..ccd26d0f51 Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.bn.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.br.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.br.png new file mode 100644 index 0000000000..ef7afd90ce Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.br.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.cs.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.cs.png new file mode 100644 index 0000000000..fd22b64c15 Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.cs.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.da.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.da.png new file mode 100644 index 0000000000..2e19598872 Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.da.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.de.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.de.png new file mode 100644 index 0000000000..264482ea62 Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.de.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.el.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.el.png new file mode 100644 index 0000000000..b5043ef348 Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.el.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.en.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.en.png new file mode 100644 index 0000000000..1e1904066c Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.en.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.es.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.es.png new file mode 100644 index 0000000000..c3faa488b2 Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.es.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.fa.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.fa.png new file mode 100644 index 0000000000..0bb82ac485 Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.fa.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.fi.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.fi.png new file mode 100644 index 0000000000..c1c61647c1 Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.fi.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.fr.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.fr.png new file mode 100644 index 0000000000..f7d11ed627 Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.fr.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.he.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.he.png new file mode 100644 index 0000000000..c0e89a0f27 Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.he.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.hi.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.hi.png new file mode 100644 index 0000000000..fbe9cade05 Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.hi.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.hk.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.hk.png new file mode 100644 index 0000000000..c3d4aa3763 Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.hk.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.hr.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.hr.png new file mode 100644 index 0000000000..bedfe98b54 Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.hr.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.hu.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.hu.png new file mode 100644 index 0000000000..2867732fd5 Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.hu.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.id.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.id.png new file mode 100644 index 0000000000..85cb6a6285 Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.id.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.it.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.it.png new file mode 100644 index 0000000000..22140bb028 Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.it.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.ja.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.ja.png new file mode 100644 index 0000000000..fb61041fea Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.ja.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.ko.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.ko.png new file mode 100644 index 0000000000..468dd3da3c Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.ko.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.mo.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.mo.png new file mode 100644 index 0000000000..b407ca4f86 Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.mo.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.mr.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.mr.png new file mode 100644 index 0000000000..9512af0807 Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.mr.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.ms.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.ms.png new file mode 100644 index 0000000000..3e51f7651d Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.ms.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.ne.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.ne.png new file mode 100644 index 0000000000..7b1572880a Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.ne.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.nl.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.nl.png new file mode 100644 index 0000000000..f89ade77cb Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.nl.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.no.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.no.png new file mode 100644 index 0000000000..142f40786a Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.no.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.pa.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.pa.png new file mode 100644 index 0000000000..0003f11989 Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.pa.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.pl.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.pl.png new file mode 100644 index 0000000000..152fd4d5ed Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.pl.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.pt.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.pt.png new file mode 100644 index 0000000000..c0035276cc Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.pt.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.ro.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.ro.png new file mode 100644 index 0000000000..d39e876991 Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.ro.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.ru.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.ru.png new file mode 100644 index 0000000000..480c121a1d Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.ru.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.sk.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.sk.png new file mode 100644 index 0000000000..00d40d2440 Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.sk.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.sl.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.sl.png new file mode 100644 index 0000000000..bbb156b0d9 Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.sl.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.sr.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.sr.png new file mode 100644 index 0000000000..8aace78866 Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.sr.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.sv.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.sv.png new file mode 100644 index 0000000000..6d3bfb0a4a Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.sv.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.sw.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.sw.png new file mode 100644 index 0000000000..c2071b7b3c Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.sw.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.th.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.th.png new file mode 100644 index 0000000000..fbeec6acc9 Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.th.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.tl.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.tl.png new file mode 100644 index 0000000000..439297527d Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.tl.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.tr.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.tr.png new file mode 100644 index 0000000000..48af12f5b3 Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.tr.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.tw.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.tw.png new file mode 100644 index 0000000000..e4583479fa Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.tw.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.ur.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.ur.png new file mode 100644 index 0000000000..799de7fdc8 Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.ur.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.vi.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.vi.png new file mode 100644 index 0000000000..9e3e801703 Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.vi.png differ diff --git a/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.zh.png b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.zh.png new file mode 100644 index 0000000000..24ea413dfc Binary files /dev/null and b/translated_images/05-lesson-banner.4e2a5ec487ed3c79e224703ec968f9502a3136ca337bb4ef38f145d7ffd76619.zh.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.ar.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.ar.png new file mode 100644 index 0000000000..9149b19d18 Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.ar.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.bg.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.bg.png new file mode 100644 index 0000000000..110a644d3f Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.bg.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.bn.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.bn.png new file mode 100644 index 0000000000..61a1d928b7 Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.bn.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.br.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.br.png new file mode 100644 index 0000000000..a7bf58534b Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.br.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.cs.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.cs.png new file mode 100644 index 0000000000..020f3e1de2 Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.cs.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.da.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.da.png new file mode 100644 index 0000000000..f69fca6bcd Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.da.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.de.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.de.png new file mode 100644 index 0000000000..1f243d4b09 Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.de.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.el.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.el.png new file mode 100644 index 0000000000..fc34273837 Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.el.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.en.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.en.png new file mode 100644 index 0000000000..123f03e4d8 Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.en.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.es.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.es.png new file mode 100644 index 0000000000..bac5c4ee54 Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.es.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.fa.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.fa.png new file mode 100644 index 0000000000..49fb83f6b7 Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.fa.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.fi.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.fi.png new file mode 100644 index 0000000000..6c366cac75 Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.fi.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.fr.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.fr.png new file mode 100644 index 0000000000..e73318d39d Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.fr.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.he.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.he.png new file mode 100644 index 0000000000..2df3631c4b Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.he.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.hi.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.hi.png new file mode 100644 index 0000000000..06b2a7dae1 Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.hi.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.hk.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.hk.png new file mode 100644 index 0000000000..59cfea5573 Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.hk.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.hr.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.hr.png new file mode 100644 index 0000000000..54fdbd366d Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.hr.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.hu.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.hu.png new file mode 100644 index 0000000000..1cfb79a0c1 Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.hu.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.id.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.id.png new file mode 100644 index 0000000000..20d9a20a8a Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.id.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.it.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.it.png new file mode 100644 index 0000000000..78c5d7719a Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.it.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.ja.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.ja.png new file mode 100644 index 0000000000..e0b1d0b2be Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.ja.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.ko.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.ko.png new file mode 100644 index 0000000000..3e36d48727 Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.ko.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.mo.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.mo.png new file mode 100644 index 0000000000..48f08eb464 Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.mo.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.mr.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.mr.png new file mode 100644 index 0000000000..c903d8fe7e Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.mr.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.ms.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.ms.png new file mode 100644 index 0000000000..631adb286a Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.ms.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.ne.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.ne.png new file mode 100644 index 0000000000..0ba5a7fb82 Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.ne.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.nl.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.nl.png new file mode 100644 index 0000000000..45ce25c150 Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.nl.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.no.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.no.png new file mode 100644 index 0000000000..63ed75d900 Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.no.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.pa.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.pa.png new file mode 100644 index 0000000000..dc8ed77ef2 Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.pa.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.pl.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.pl.png new file mode 100644 index 0000000000..f5cdb56916 Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.pl.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.pt.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.pt.png new file mode 100644 index 0000000000..66435bf2b6 Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.pt.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.ro.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.ro.png new file mode 100644 index 0000000000..b69170ba4b Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.ro.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.ru.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.ru.png new file mode 100644 index 0000000000..c1d0aa0ada Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.ru.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.sk.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.sk.png new file mode 100644 index 0000000000..a540b39a84 Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.sk.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.sl.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.sl.png new file mode 100644 index 0000000000..3a193056c7 Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.sl.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.sr.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.sr.png new file mode 100644 index 0000000000..c6b81a3842 Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.sr.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.sv.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.sv.png new file mode 100644 index 0000000000..9fc51e375b Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.sv.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.sw.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.sw.png new file mode 100644 index 0000000000..6ccf40b034 Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.sw.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.th.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.th.png new file mode 100644 index 0000000000..17d58d45b3 Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.th.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.tl.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.tl.png new file mode 100644 index 0000000000..0ffec7ad53 Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.tl.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.tr.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.tr.png new file mode 100644 index 0000000000..5901a11f65 Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.tr.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.tw.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.tw.png new file mode 100644 index 0000000000..2a52116ff0 Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.tw.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.ur.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.ur.png new file mode 100644 index 0000000000..128d2a8780 Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.ur.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.vi.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.vi.png new file mode 100644 index 0000000000..8e76a7c908 Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.vi.png differ diff --git a/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.zh.png b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.zh.png new file mode 100644 index 0000000000..99ccbeeebe Binary files /dev/null and b/translated_images/05-llm-azure-ai-prompt.dc29c0d74b1dd939f7c6cbf28b1fee54b9a846ba04d4068c40134e2627cb7232.zh.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.ar.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.ar.png new file mode 100644 index 0000000000..70750219c1 Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.ar.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.bg.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.bg.png new file mode 100644 index 0000000000..f9e59602ae Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.bg.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.bn.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.bn.png new file mode 100644 index 0000000000..30f5170d20 Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.bn.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.br.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.br.png new file mode 100644 index 0000000000..d2066b9ef3 Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.br.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.cs.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.cs.png new file mode 100644 index 0000000000..0d276a85a3 Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.cs.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.da.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.da.png new file mode 100644 index 0000000000..e9afbade44 Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.da.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.de.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.de.png new file mode 100644 index 0000000000..da329bda21 Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.de.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.el.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.el.png new file mode 100644 index 0000000000..b0c970e3f3 Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.el.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.en.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.en.png new file mode 100644 index 0000000000..11862ff04d Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.en.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.es.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.es.png new file mode 100644 index 0000000000..7bc0432782 Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.es.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.fa.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.fa.png new file mode 100644 index 0000000000..cd67a90238 Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.fa.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.fi.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.fi.png new file mode 100644 index 0000000000..9a855cc4fe Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.fi.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.fr.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.fr.png new file mode 100644 index 0000000000..d037864e90 Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.fr.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.he.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.he.png new file mode 100644 index 0000000000..f545929bf2 Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.he.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.hi.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.hi.png new file mode 100644 index 0000000000..b07d5b9542 Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.hi.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.hk.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.hk.png new file mode 100644 index 0000000000..2083d0398d Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.hk.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.hr.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.hr.png new file mode 100644 index 0000000000..2a95a713b2 Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.hr.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.hu.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.hu.png new file mode 100644 index 0000000000..eeeb330419 Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.hu.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.id.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.id.png new file mode 100644 index 0000000000..c61f193747 Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.id.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.it.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.it.png new file mode 100644 index 0000000000..0bd8b346fb Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.it.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.ja.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.ja.png new file mode 100644 index 0000000000..bef9587352 Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.ja.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.ko.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.ko.png new file mode 100644 index 0000000000..7b412ffbaa Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.ko.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.mo.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.mo.png new file mode 100644 index 0000000000..44ede030f6 Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.mo.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.mr.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.mr.png new file mode 100644 index 0000000000..04fb1eb070 Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.mr.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.ms.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.ms.png new file mode 100644 index 0000000000..e10faaf395 Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.ms.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.ne.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.ne.png new file mode 100644 index 0000000000..34dec6a18e Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.ne.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.nl.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.nl.png new file mode 100644 index 0000000000..0254fb54ca Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.nl.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.no.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.no.png new file mode 100644 index 0000000000..55f2378ac4 Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.no.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.pa.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.pa.png new file mode 100644 index 0000000000..ae90932c58 Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.pa.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.pl.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.pl.png new file mode 100644 index 0000000000..3776bc61ab Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.pl.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.pt.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.pt.png new file mode 100644 index 0000000000..752b382fb0 Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.pt.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.ro.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.ro.png new file mode 100644 index 0000000000..34a478313f Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.ro.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.ru.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.ru.png new file mode 100644 index 0000000000..6f004a7b1d Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.ru.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.sk.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.sk.png new file mode 100644 index 0000000000..dc5cdd5364 Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.sk.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.sl.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.sl.png new file mode 100644 index 0000000000..2c8072cdf7 Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.sl.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.sr.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.sr.png new file mode 100644 index 0000000000..cb98b2fd88 Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.sr.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.sv.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.sv.png new file mode 100644 index 0000000000..bd45126c4f Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.sv.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.sw.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.sw.png new file mode 100644 index 0000000000..ebacf3f2db Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.sw.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.th.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.th.png new file mode 100644 index 0000000000..c9d08c69a2 Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.th.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.tl.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.tl.png new file mode 100644 index 0000000000..84fceabeba Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.tl.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.tr.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.tr.png new file mode 100644 index 0000000000..f399230f36 Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.tr.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.tw.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.tw.png new file mode 100644 index 0000000000..054d69f658 Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.tw.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.ur.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.ur.png new file mode 100644 index 0000000000..5913f07c74 Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.ur.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.vi.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.vi.png new file mode 100644 index 0000000000..a96bcf7859 Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.vi.png differ diff --git a/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.zh.png b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.zh.png new file mode 100644 index 0000000000..3bc0cf6fc2 Binary files /dev/null and b/translated_images/06-lesson-banner.90d8a665630e46b2990412d7c7d3d43c30f2441c95c0ee93e0763fb252734e83.zh.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.ar.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.ar.png new file mode 100644 index 0000000000..804773f54a Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.ar.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.bg.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.bg.png new file mode 100644 index 0000000000..754e9ba56b Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.bg.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.bn.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.bn.png new file mode 100644 index 0000000000..a563b4b714 Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.bn.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.br.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.br.png new file mode 100644 index 0000000000..d941f52b57 Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.br.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.cs.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.cs.png new file mode 100644 index 0000000000..a15e3f4b64 Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.cs.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.da.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.da.png new file mode 100644 index 0000000000..ffc57f6dce Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.da.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.de.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.de.png new file mode 100644 index 0000000000..1fb19cb736 Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.de.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.el.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.el.png new file mode 100644 index 0000000000..b41ce82198 Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.el.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.en.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.en.png new file mode 100644 index 0000000000..06629b671b Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.en.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.es.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.es.png new file mode 100644 index 0000000000..3d6bb1c87e Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.es.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.fa.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.fa.png new file mode 100644 index 0000000000..844131e825 Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.fa.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.fi.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.fi.png new file mode 100644 index 0000000000..fb593cd624 Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.fi.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.fr.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.fr.png new file mode 100644 index 0000000000..200dc3fc24 Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.fr.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.he.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.he.png new file mode 100644 index 0000000000..0bdcf5d91f Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.he.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.hi.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.hi.png new file mode 100644 index 0000000000..144ed250a2 Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.hi.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.hk.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.hk.png new file mode 100644 index 0000000000..163aed0239 Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.hk.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.hr.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.hr.png new file mode 100644 index 0000000000..0c88d3bb5a Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.hr.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.hu.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.hu.png new file mode 100644 index 0000000000..421e3bad5c Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.hu.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.id.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.id.png new file mode 100644 index 0000000000..fbb507a8e4 Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.id.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.it.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.it.png new file mode 100644 index 0000000000..41df49e011 Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.it.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.ja.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.ja.png new file mode 100644 index 0000000000..71427b1d6a Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.ja.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.ko.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.ko.png new file mode 100644 index 0000000000..27b910af77 Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.ko.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.mo.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.mo.png new file mode 100644 index 0000000000..d4cdce6367 Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.mo.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.mr.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.mr.png new file mode 100644 index 0000000000..b6b24f7f98 Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.mr.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.ms.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.ms.png new file mode 100644 index 0000000000..61b5803937 Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.ms.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.ne.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.ne.png new file mode 100644 index 0000000000..efcbbc15bd Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.ne.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.nl.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.nl.png new file mode 100644 index 0000000000..4d756ff447 Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.nl.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.no.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.no.png new file mode 100644 index 0000000000..3bea2b2589 Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.no.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.pa.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.pa.png new file mode 100644 index 0000000000..84e6781968 Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.pa.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.pl.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.pl.png new file mode 100644 index 0000000000..a0ae821926 Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.pl.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.pt.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.pt.png new file mode 100644 index 0000000000..1731843b9e Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.pt.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.ro.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.ro.png new file mode 100644 index 0000000000..95c75d11c1 Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.ro.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.ru.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.ru.png new file mode 100644 index 0000000000..aabef29184 Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.ru.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.sk.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.sk.png new file mode 100644 index 0000000000..69968b2e2c Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.sk.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.sl.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.sl.png new file mode 100644 index 0000000000..ea89e159b4 Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.sl.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.sr.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.sr.png new file mode 100644 index 0000000000..24eaf47f05 Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.sr.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.sv.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.sv.png new file mode 100644 index 0000000000..108fe96597 Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.sv.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.sw.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.sw.png new file mode 100644 index 0000000000..5345e17ec8 Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.sw.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.th.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.th.png new file mode 100644 index 0000000000..bd57542b4e Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.th.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.tl.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.tl.png new file mode 100644 index 0000000000..86e9449d11 Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.tl.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.tr.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.tr.png new file mode 100644 index 0000000000..0bf9efd831 Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.tr.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.tw.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.tw.png new file mode 100644 index 0000000000..3f0e9f176f Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.tw.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.ur.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.ur.png new file mode 100644 index 0000000000..4d7c7932e9 Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.ur.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.vi.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.vi.png new file mode 100644 index 0000000000..cb3ec08294 Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.vi.png differ diff --git a/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.zh.png b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.zh.png new file mode 100644 index 0000000000..501a024004 Binary files /dev/null and b/translated_images/06-llm-promptflow.8f0a6fcbea793a042a3db89ca1db1aa8fd540526958c97b5e894748fb4a87edd.zh.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.ar.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.ar.png new file mode 100644 index 0000000000..6c3b180479 Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.ar.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.bg.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.bg.png new file mode 100644 index 0000000000..a137c7110d Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.bg.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.bn.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.bn.png new file mode 100644 index 0000000000..17168c7c1b Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.bn.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.br.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.br.png new file mode 100644 index 0000000000..a07b937943 Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.br.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.cs.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.cs.png new file mode 100644 index 0000000000..12bb9a6893 Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.cs.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.da.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.da.png new file mode 100644 index 0000000000..c6281ac137 Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.da.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.de.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.de.png new file mode 100644 index 0000000000..83d3ae9d33 Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.de.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.el.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.el.png new file mode 100644 index 0000000000..8676a97cb0 Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.el.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.en.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.en.png new file mode 100644 index 0000000000..412cbcd32e Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.en.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.es.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.es.png new file mode 100644 index 0000000000..da77b3cb1a Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.es.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.fa.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.fa.png new file mode 100644 index 0000000000..510908566e Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.fa.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.fi.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.fi.png new file mode 100644 index 0000000000..f2d9c21b35 Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.fi.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.fr.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.fr.png new file mode 100644 index 0000000000..7d4aebdbcc Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.fr.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.he.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.he.png new file mode 100644 index 0000000000..7487daf42e Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.he.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.hi.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.hi.png new file mode 100644 index 0000000000..cd2a2b99dc Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.hi.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.hk.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.hk.png new file mode 100644 index 0000000000..7b0f13a004 Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.hk.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.hr.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.hr.png new file mode 100644 index 0000000000..460446375c Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.hr.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.hu.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.hu.png new file mode 100644 index 0000000000..d4d4072bcf Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.hu.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.id.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.id.png new file mode 100644 index 0000000000..b6606182e1 Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.id.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.it.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.it.png new file mode 100644 index 0000000000..f55eca5d76 Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.it.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.ja.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.ja.png new file mode 100644 index 0000000000..081263780b Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.ja.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.ko.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.ko.png new file mode 100644 index 0000000000..4afd181aeb Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.ko.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.mo.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.mo.png new file mode 100644 index 0000000000..5c403863a3 Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.mo.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.mr.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.mr.png new file mode 100644 index 0000000000..30e1b33052 Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.mr.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.ms.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.ms.png new file mode 100644 index 0000000000..564cb78668 Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.ms.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.ne.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.ne.png new file mode 100644 index 0000000000..85269f0033 Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.ne.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.nl.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.nl.png new file mode 100644 index 0000000000..600683a27e Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.nl.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.no.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.no.png new file mode 100644 index 0000000000..08c62d5f0b Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.no.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.pa.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.pa.png new file mode 100644 index 0000000000..15d9fa8fd6 Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.pa.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.pl.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.pl.png new file mode 100644 index 0000000000..9164ff7739 Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.pl.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.pt.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.pt.png new file mode 100644 index 0000000000..6faff1be89 Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.pt.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.ro.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.ro.png new file mode 100644 index 0000000000..22c9e2e586 Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.ro.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.ru.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.ru.png new file mode 100644 index 0000000000..5b0b32b83f Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.ru.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.sk.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.sk.png new file mode 100644 index 0000000000..1508613200 Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.sk.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.sl.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.sl.png new file mode 100644 index 0000000000..18c82e5ba3 Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.sl.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.sr.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.sr.png new file mode 100644 index 0000000000..3731a839b5 Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.sr.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.sv.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.sv.png new file mode 100644 index 0000000000..0c209b018f Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.sv.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.sw.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.sw.png new file mode 100644 index 0000000000..e7f574f9a3 Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.sw.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.th.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.th.png new file mode 100644 index 0000000000..83470e0c18 Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.th.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.tl.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.tl.png new file mode 100644 index 0000000000..358d59a4d3 Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.tl.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.tr.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.tr.png new file mode 100644 index 0000000000..0672034a52 Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.tr.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.tw.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.tw.png new file mode 100644 index 0000000000..a127581999 Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.tw.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.ur.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.ur.png new file mode 100644 index 0000000000..ec4b874b23 Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.ur.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.vi.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.vi.png new file mode 100644 index 0000000000..8c363db4cf Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.vi.png differ diff --git a/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.zh.png b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.zh.png new file mode 100644 index 0000000000..dd8322b7ba Binary files /dev/null and b/translated_images/07-lesson-banner.0f61145112d724a50d32abfb0b1841777f3ecec301d6f96a0b7f9d6b0e4756b9.zh.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.ar.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.ar.png new file mode 100644 index 0000000000..83abf9a392 Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.ar.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.bg.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.bg.png new file mode 100644 index 0000000000..32f2b810ba Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.bg.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.bn.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.bn.png new file mode 100644 index 0000000000..18f321e5c1 Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.bn.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.br.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.br.png new file mode 100644 index 0000000000..00c105b2cf Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.br.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.cs.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.cs.png new file mode 100644 index 0000000000..2937ae7ce6 Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.cs.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.da.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.da.png new file mode 100644 index 0000000000..2d569693c1 Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.da.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.de.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.de.png new file mode 100644 index 0000000000..55a0abd65c Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.de.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.el.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.el.png new file mode 100644 index 0000000000..7242bc5f4a Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.el.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.en.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.en.png new file mode 100644 index 0000000000..cb0d00ff11 Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.en.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.es.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.es.png new file mode 100644 index 0000000000..4d16cec3cb Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.es.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.fa.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.fa.png new file mode 100644 index 0000000000..85300452f4 Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.fa.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.fi.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.fi.png new file mode 100644 index 0000000000..5d17f56f59 Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.fi.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.fr.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.fr.png new file mode 100644 index 0000000000..4eb8317037 Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.fr.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.he.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.he.png new file mode 100644 index 0000000000..d364408808 Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.he.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.hi.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.hi.png new file mode 100644 index 0000000000..245d01a20c Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.hi.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.hk.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.hk.png new file mode 100644 index 0000000000..f70cad94bd Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.hk.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.hr.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.hr.png new file mode 100644 index 0000000000..4e18ba1ed4 Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.hr.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.hu.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.hu.png new file mode 100644 index 0000000000..8c13cb8cd3 Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.hu.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.id.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.id.png new file mode 100644 index 0000000000..288277b878 Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.id.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.it.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.it.png new file mode 100644 index 0000000000..32d80296fe Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.it.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.ja.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.ja.png new file mode 100644 index 0000000000..09142ffd9c Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.ja.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.ko.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.ko.png new file mode 100644 index 0000000000..b023c77393 Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.ko.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.mo.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.mo.png new file mode 100644 index 0000000000..4f8bb4c39a Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.mo.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.mr.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.mr.png new file mode 100644 index 0000000000..6c56001a93 Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.mr.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.ms.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.ms.png new file mode 100644 index 0000000000..d4562a6d76 Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.ms.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.ne.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.ne.png new file mode 100644 index 0000000000..a7fd264b69 Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.ne.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.nl.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.nl.png new file mode 100644 index 0000000000..8b1321330f Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.nl.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.no.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.no.png new file mode 100644 index 0000000000..fa4104e730 Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.no.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.pa.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.pa.png new file mode 100644 index 0000000000..321a713921 Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.pa.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.pl.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.pl.png new file mode 100644 index 0000000000..a44f98e6a5 Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.pl.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.pt.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.pt.png new file mode 100644 index 0000000000..82f242dbfc Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.pt.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.ro.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.ro.png new file mode 100644 index 0000000000..56b1278923 Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.ro.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.ru.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.ru.png new file mode 100644 index 0000000000..4dabcb9a0b Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.ru.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.sk.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.sk.png new file mode 100644 index 0000000000..101755d030 Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.sk.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.sl.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.sl.png new file mode 100644 index 0000000000..c50b28a2d7 Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.sl.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.sr.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.sr.png new file mode 100644 index 0000000000..45e3bcb01c Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.sr.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.sv.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.sv.png new file mode 100644 index 0000000000..4e9e586030 Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.sv.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.sw.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.sw.png new file mode 100644 index 0000000000..7923658736 Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.sw.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.th.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.th.png new file mode 100644 index 0000000000..c044c5550e Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.th.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.tl.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.tl.png new file mode 100644 index 0000000000..287b42061b Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.tl.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.tr.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.tr.png new file mode 100644 index 0000000000..0b0d0edff6 Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.tr.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.tw.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.tw.png new file mode 100644 index 0000000000..8f0aefeb51 Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.tw.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.ur.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.ur.png new file mode 100644 index 0000000000..cab1813bb8 Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.ur.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.vi.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.vi.png new file mode 100644 index 0000000000..5f6faa0ec8 Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.vi.png differ diff --git a/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.zh.png b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.zh.png new file mode 100644 index 0000000000..657867aa9f Binary files /dev/null and b/translated_images/08-lesson-banner.358a98d5a1d7df54f5eaf5fd69392931ea660c923effa48ffb8384f5fa4ab172.zh.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.ar.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.ar.png new file mode 100644 index 0000000000..8ae0cccea3 Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.ar.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.bg.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.bg.png new file mode 100644 index 0000000000..84836171e5 Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.bg.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.bn.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.bn.png new file mode 100644 index 0000000000..9d51045bd7 Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.bn.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.br.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.br.png new file mode 100644 index 0000000000..c2256389d0 Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.br.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.cs.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.cs.png new file mode 100644 index 0000000000..37ed4101d4 Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.cs.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.da.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.da.png new file mode 100644 index 0000000000..330a6132d9 Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.da.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.de.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.de.png new file mode 100644 index 0000000000..e05020207a Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.de.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.el.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.el.png new file mode 100644 index 0000000000..965e7097a7 Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.el.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.en.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.en.png new file mode 100644 index 0000000000..84d982a4d6 Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.en.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.es.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.es.png new file mode 100644 index 0000000000..9da1e30be3 Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.es.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.fa.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.fa.png new file mode 100644 index 0000000000..1b9c3031c6 Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.fa.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.fi.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.fi.png new file mode 100644 index 0000000000..e46e297452 Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.fi.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.fr.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.fr.png new file mode 100644 index 0000000000..e707df50ee Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.fr.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.he.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.he.png new file mode 100644 index 0000000000..ce1d22ca9b Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.he.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.hi.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.hi.png new file mode 100644 index 0000000000..4bf36446a7 Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.hi.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.hk.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.hk.png new file mode 100644 index 0000000000..5cebc3f7c2 Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.hk.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.hr.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.hr.png new file mode 100644 index 0000000000..a005699469 Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.hr.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.hu.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.hu.png new file mode 100644 index 0000000000..91e520985b Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.hu.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.id.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.id.png new file mode 100644 index 0000000000..cad4a2cb60 Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.id.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.it.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.it.png new file mode 100644 index 0000000000..e8c808c4de Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.it.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.ja.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.ja.png new file mode 100644 index 0000000000..de34515467 Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.ja.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.ko.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.ko.png new file mode 100644 index 0000000000..a410c4b215 Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.ko.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.mo.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.mo.png new file mode 100644 index 0000000000..3d8427bbc1 Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.mo.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.mr.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.mr.png new file mode 100644 index 0000000000..59d5d4f8ad Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.mr.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.ms.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.ms.png new file mode 100644 index 0000000000..1fed6f9aec Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.ms.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.ne.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.ne.png new file mode 100644 index 0000000000..b85d328717 Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.ne.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.nl.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.nl.png new file mode 100644 index 0000000000..c7225403d6 Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.nl.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.no.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.no.png new file mode 100644 index 0000000000..e3431babac Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.no.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.pa.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.pa.png new file mode 100644 index 0000000000..539edb7c35 Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.pa.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.pl.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.pl.png new file mode 100644 index 0000000000..86efdfb018 Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.pl.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.pt.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.pt.png new file mode 100644 index 0000000000..15fd22f5e9 Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.pt.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.ro.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.ro.png new file mode 100644 index 0000000000..ecdb6ec118 Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.ro.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.ru.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.ru.png new file mode 100644 index 0000000000..3cc1af84e3 Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.ru.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.sk.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.sk.png new file mode 100644 index 0000000000..ac54e4c22d Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.sk.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.sl.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.sl.png new file mode 100644 index 0000000000..bfdb2c630e Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.sl.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.sr.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.sr.png new file mode 100644 index 0000000000..fc0c508640 Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.sr.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.sv.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.sv.png new file mode 100644 index 0000000000..7bcc1baa0e Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.sv.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.sw.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.sw.png new file mode 100644 index 0000000000..a827711e9f Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.sw.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.th.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.th.png new file mode 100644 index 0000000000..e1566f74f5 Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.th.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.tl.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.tl.png new file mode 100644 index 0000000000..5de43dd3d2 Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.tl.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.tr.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.tr.png new file mode 100644 index 0000000000..c47001949f Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.tr.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.tw.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.tw.png new file mode 100644 index 0000000000..b9e77d8707 Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.tw.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.ur.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.ur.png new file mode 100644 index 0000000000..5586363720 Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.ur.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.vi.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.vi.png new file mode 100644 index 0000000000..57eee5b89d Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.vi.png differ diff --git a/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.zh.png b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.zh.png new file mode 100644 index 0000000000..1bd525aec9 Binary files /dev/null and b/translated_images/09-lesson-banner.d0229c79fda6596b8a678478e20301b74964cb8161e0c2e4a7c203655c623330.zh.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.ar.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.ar.png new file mode 100644 index 0000000000..c698559247 Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.ar.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.bg.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.bg.png new file mode 100644 index 0000000000..288b4c7633 Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.bg.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.bn.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.bn.png new file mode 100644 index 0000000000..0ae56529f0 Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.bn.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.br.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.br.png new file mode 100644 index 0000000000..dda4ee64a7 Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.br.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.cs.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.cs.png new file mode 100644 index 0000000000..132f17d9fa Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.cs.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.da.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.da.png new file mode 100644 index 0000000000..ec647d03bb Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.da.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.de.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.de.png new file mode 100644 index 0000000000..ef08e044d8 Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.de.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.el.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.el.png new file mode 100644 index 0000000000..704846612c Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.el.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.en.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.en.png new file mode 100644 index 0000000000..066b64cd6d Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.en.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.es.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.es.png new file mode 100644 index 0000000000..5b2daa27e4 Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.es.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.fa.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.fa.png new file mode 100644 index 0000000000..9350b8b1a3 Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.fa.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.fi.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.fi.png new file mode 100644 index 0000000000..282a30c631 Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.fi.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.fr.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.fr.png new file mode 100644 index 0000000000..7df54b9e50 Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.fr.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.he.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.he.png new file mode 100644 index 0000000000..85c86ac0ec Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.he.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.hi.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.hi.png new file mode 100644 index 0000000000..803a814cde Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.hi.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.hk.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.hk.png new file mode 100644 index 0000000000..6e494e7640 Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.hk.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.hr.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.hr.png new file mode 100644 index 0000000000..d8523ef1da Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.hr.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.hu.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.hu.png new file mode 100644 index 0000000000..6857436ee3 Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.hu.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.id.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.id.png new file mode 100644 index 0000000000..32e1a7624a Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.id.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.it.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.it.png new file mode 100644 index 0000000000..4def955f5b Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.it.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.ja.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.ja.png new file mode 100644 index 0000000000..060bbab612 Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.ja.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.ko.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.ko.png new file mode 100644 index 0000000000..01ca92726e Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.ko.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.mo.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.mo.png new file mode 100644 index 0000000000..f13259b2a6 Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.mo.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.mr.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.mr.png new file mode 100644 index 0000000000..5d64d17884 Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.mr.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.ms.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.ms.png new file mode 100644 index 0000000000..bded8491e7 Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.ms.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.ne.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.ne.png new file mode 100644 index 0000000000..9d876e467f Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.ne.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.nl.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.nl.png new file mode 100644 index 0000000000..e400503608 Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.nl.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.no.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.no.png new file mode 100644 index 0000000000..85fd771dc0 Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.no.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.pa.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.pa.png new file mode 100644 index 0000000000..0f9eeb289c Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.pa.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.pl.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.pl.png new file mode 100644 index 0000000000..45f55284f4 Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.pl.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.pt.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.pt.png new file mode 100644 index 0000000000..351ef9f820 Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.pt.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.ro.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.ro.png new file mode 100644 index 0000000000..a50472f738 Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.ro.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.ru.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.ru.png new file mode 100644 index 0000000000..c95884a488 Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.ru.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.sk.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.sk.png new file mode 100644 index 0000000000..f9ee80c666 Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.sk.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.sl.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.sl.png new file mode 100644 index 0000000000..a4ea56329d Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.sl.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.sr.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.sr.png new file mode 100644 index 0000000000..714464b44c Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.sr.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.sv.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.sv.png new file mode 100644 index 0000000000..c16c2494cf Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.sv.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.sw.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.sw.png new file mode 100644 index 0000000000..c64a18589f Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.sw.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.th.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.th.png new file mode 100644 index 0000000000..239e013922 Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.th.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.tl.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.tl.png new file mode 100644 index 0000000000..70e743372e Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.tl.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.tr.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.tr.png new file mode 100644 index 0000000000..8b45ec3354 Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.tr.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.tw.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.tw.png new file mode 100644 index 0000000000..50a29e78fb Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.tw.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.ur.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.ur.png new file mode 100644 index 0000000000..6dab294cd2 Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.ur.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.vi.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.vi.png new file mode 100644 index 0000000000..b070d3cd45 Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.vi.png differ diff --git a/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.zh.png b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.zh.png new file mode 100644 index 0000000000..b9847a7d0f Binary files /dev/null and b/translated_images/10-lesson-banner.84b607fa749c0d53ffe98212c5c3b81292bb041d1aec07da8fd720e9c01b5718.zh.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.ar.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.ar.png new file mode 100644 index 0000000000..5f0fa64998 Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.ar.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.bg.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.bg.png new file mode 100644 index 0000000000..0a3ae2c5f0 Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.bg.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.bn.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.bn.png new file mode 100644 index 0000000000..98fb474911 Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.bn.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.br.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.br.png new file mode 100644 index 0000000000..0bcf2f7feb Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.br.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.cs.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.cs.png new file mode 100644 index 0000000000..02cb294010 Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.cs.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.da.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.da.png new file mode 100644 index 0000000000..393ae77449 Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.da.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.de.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.de.png new file mode 100644 index 0000000000..e6015fac52 Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.de.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.el.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.el.png new file mode 100644 index 0000000000..c252798a3c Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.el.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.en.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.en.png new file mode 100644 index 0000000000..d240421f07 Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.en.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.es.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.es.png new file mode 100644 index 0000000000..f23958a8bd Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.es.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.fa.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.fa.png new file mode 100644 index 0000000000..33532c473a Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.fa.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.fi.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.fi.png new file mode 100644 index 0000000000..9a6c02d149 Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.fi.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.fr.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.fr.png new file mode 100644 index 0000000000..203d49df4c Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.fr.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.he.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.he.png new file mode 100644 index 0000000000..1575a93fc9 Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.he.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.hi.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.hi.png new file mode 100644 index 0000000000..d1a93b69f3 Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.hi.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.hk.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.hk.png new file mode 100644 index 0000000000..c99c71115a Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.hk.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.hr.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.hr.png new file mode 100644 index 0000000000..678313ac40 Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.hr.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.hu.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.hu.png new file mode 100644 index 0000000000..99727bee43 Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.hu.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.id.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.id.png new file mode 100644 index 0000000000..ac5bc01fda Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.id.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.it.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.it.png new file mode 100644 index 0000000000..e21755ea35 Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.it.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.ja.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.ja.png new file mode 100644 index 0000000000..9a563cdd1d Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.ja.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.ko.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.ko.png new file mode 100644 index 0000000000..771f03f32e Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.ko.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.mo.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.mo.png new file mode 100644 index 0000000000..0ba5e6efb3 Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.mo.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.mr.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.mr.png new file mode 100644 index 0000000000..1334c45857 Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.mr.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.ms.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.ms.png new file mode 100644 index 0000000000..bb4a604c58 Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.ms.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.ne.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.ne.png new file mode 100644 index 0000000000..9c2ffe49e3 Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.ne.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.nl.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.nl.png new file mode 100644 index 0000000000..e46971bfae Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.nl.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.no.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.no.png new file mode 100644 index 0000000000..b2517fb20e Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.no.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.pa.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.pa.png new file mode 100644 index 0000000000..7d155abce2 Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.pa.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.pl.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.pl.png new file mode 100644 index 0000000000..a7d7041ef1 Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.pl.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.pt.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.pt.png new file mode 100644 index 0000000000..4d37227cb5 Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.pt.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.ro.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.ro.png new file mode 100644 index 0000000000..8355b03fa9 Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.ro.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.ru.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.ru.png new file mode 100644 index 0000000000..7e13a8d61a Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.ru.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.sk.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.sk.png new file mode 100644 index 0000000000..6019e1d2a0 Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.sk.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.sl.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.sl.png new file mode 100644 index 0000000000..5c99bb13de Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.sl.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.sr.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.sr.png new file mode 100644 index 0000000000..26061d2a44 Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.sr.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.sv.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.sv.png new file mode 100644 index 0000000000..e23ea27e15 Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.sv.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.sw.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.sw.png new file mode 100644 index 0000000000..a29a42be39 Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.sw.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.th.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.th.png new file mode 100644 index 0000000000..ae4575c3e2 Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.th.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.tl.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.tl.png new file mode 100644 index 0000000000..77bcc790b5 Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.tl.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.tr.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.tr.png new file mode 100644 index 0000000000..80ff5335c9 Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.tr.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.tw.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.tw.png new file mode 100644 index 0000000000..1ced05d34c Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.tw.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.ur.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.ur.png new file mode 100644 index 0000000000..7bcf684887 Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.ur.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.vi.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.vi.png new file mode 100644 index 0000000000..d6d0774c04 Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.vi.png differ diff --git a/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.zh.png b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.zh.png new file mode 100644 index 0000000000..83fce71cb2 Binary files /dev/null and b/translated_images/11-lesson-banner.5da178a9bf0c61125724b82872e87e5530d352453ec40cb59a13e27f9346c41e.zh.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.ar.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.ar.png new file mode 100644 index 0000000000..865c79c7e8 Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.ar.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.bg.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.bg.png new file mode 100644 index 0000000000..7521e3b8fa Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.bg.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.bn.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.bn.png new file mode 100644 index 0000000000..b456ad2dfd Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.bn.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.br.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.br.png new file mode 100644 index 0000000000..5146637b0b Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.br.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.cs.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.cs.png new file mode 100644 index 0000000000..726792ad09 Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.cs.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.da.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.da.png new file mode 100644 index 0000000000..de2baa82b0 Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.da.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.de.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.de.png new file mode 100644 index 0000000000..a3f0041bc6 Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.de.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.el.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.el.png new file mode 100644 index 0000000000..da257a7ebd Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.el.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.en.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.en.png new file mode 100644 index 0000000000..16637b9313 Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.en.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.es.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.es.png new file mode 100644 index 0000000000..c6d7421399 Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.es.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.fa.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.fa.png new file mode 100644 index 0000000000..1bb61189bf Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.fa.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.fi.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.fi.png new file mode 100644 index 0000000000..a2048f114c Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.fi.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.fr.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.fr.png new file mode 100644 index 0000000000..1c4a55e88a Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.fr.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.he.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.he.png new file mode 100644 index 0000000000..1d04df9462 Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.he.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.hi.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.hi.png new file mode 100644 index 0000000000..d74fe48825 Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.hi.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.hk.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.hk.png new file mode 100644 index 0000000000..794543a26e Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.hk.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.hr.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.hr.png new file mode 100644 index 0000000000..ed859db260 Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.hr.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.hu.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.hu.png new file mode 100644 index 0000000000..2fb1db33b0 Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.hu.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.id.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.id.png new file mode 100644 index 0000000000..8a3221cd66 Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.id.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.it.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.it.png new file mode 100644 index 0000000000..bdef6e97ee Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.it.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.ja.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.ja.png new file mode 100644 index 0000000000..a02100ccac Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.ja.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.ko.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.ko.png new file mode 100644 index 0000000000..7a4ae549d4 Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.ko.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.mo.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.mo.png new file mode 100644 index 0000000000..e39df611ce Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.mo.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.mr.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.mr.png new file mode 100644 index 0000000000..2679aa9993 Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.mr.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.ms.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.ms.png new file mode 100644 index 0000000000..d51d1d5a86 Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.ms.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.ne.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.ne.png new file mode 100644 index 0000000000..3250cb095f Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.ne.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.nl.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.nl.png new file mode 100644 index 0000000000..e71a80665b Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.nl.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.no.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.no.png new file mode 100644 index 0000000000..1f8f84f376 Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.no.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.pa.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.pa.png new file mode 100644 index 0000000000..bc7e4bf0e8 Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.pa.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.pl.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.pl.png new file mode 100644 index 0000000000..0cda8c64aa Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.pl.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.pt.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.pt.png new file mode 100644 index 0000000000..f9d2a6b6a2 Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.pt.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.ro.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.ro.png new file mode 100644 index 0000000000..d42eddff46 Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.ro.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.ru.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.ru.png new file mode 100644 index 0000000000..00820faeec Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.ru.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.sk.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.sk.png new file mode 100644 index 0000000000..2e6ecdfc82 Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.sk.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.sl.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.sl.png new file mode 100644 index 0000000000..d3ae089a46 Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.sl.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.sr.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.sr.png new file mode 100644 index 0000000000..e5639e17d4 Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.sr.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.sv.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.sv.png new file mode 100644 index 0000000000..07171e4f5f Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.sv.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.sw.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.sw.png new file mode 100644 index 0000000000..8c319dc9b1 Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.sw.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.th.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.th.png new file mode 100644 index 0000000000..e39d7f01cd Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.th.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.tl.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.tl.png new file mode 100644 index 0000000000..964ea20311 Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.tl.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.tr.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.tr.png new file mode 100644 index 0000000000..3d13510cd4 Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.tr.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.tw.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.tw.png new file mode 100644 index 0000000000..57d2c8e9ab Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.tw.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.ur.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.ur.png new file mode 100644 index 0000000000..e39d7f01cd Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.ur.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.vi.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.vi.png new file mode 100644 index 0000000000..74e66fbb2e Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.vi.png differ diff --git a/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.zh.png b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.zh.png new file mode 100644 index 0000000000..f5ec892ab9 Binary files /dev/null and b/translated_images/12-lesson-banner.f98188f63dee5f2a9016055c93c766061b9cb95b320bf29d4d2d67ada792572e.zh.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.ar.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.ar.png new file mode 100644 index 0000000000..34546bbfc0 Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.ar.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.bg.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.bg.png new file mode 100644 index 0000000000..8ea08fbf0e Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.bg.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.bn.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.bn.png new file mode 100644 index 0000000000..af42fe0deb Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.bn.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.br.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.br.png new file mode 100644 index 0000000000..1390030d85 Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.br.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.cs.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.cs.png new file mode 100644 index 0000000000..52bd86a5f0 Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.cs.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.da.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.da.png new file mode 100644 index 0000000000..8e3da577e2 Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.da.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.de.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.de.png new file mode 100644 index 0000000000..74394d88bd Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.de.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.el.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.el.png new file mode 100644 index 0000000000..c8c8e03a18 Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.el.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.en.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.en.png new file mode 100644 index 0000000000..d9010d6fb1 Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.en.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.es.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.es.png new file mode 100644 index 0000000000..cc03bfa659 Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.es.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.fa.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.fa.png new file mode 100644 index 0000000000..dc8aaf23d3 Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.fa.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.fi.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.fi.png new file mode 100644 index 0000000000..f64120dd34 Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.fi.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.fr.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.fr.png new file mode 100644 index 0000000000..2e88fad238 Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.fr.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.he.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.he.png new file mode 100644 index 0000000000..54406ca7cc Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.he.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.hi.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.hi.png new file mode 100644 index 0000000000..72929e508d Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.hi.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.hk.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.hk.png new file mode 100644 index 0000000000..c785190e81 Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.hk.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.hr.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.hr.png new file mode 100644 index 0000000000..d504f2be5a Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.hr.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.hu.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.hu.png new file mode 100644 index 0000000000..c45a431507 Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.hu.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.id.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.id.png new file mode 100644 index 0000000000..d8fd2e98a2 Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.id.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.it.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.it.png new file mode 100644 index 0000000000..0bb871f9b9 Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.it.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.ja.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.ja.png new file mode 100644 index 0000000000..adc9d4c968 Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.ja.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.ko.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.ko.png new file mode 100644 index 0000000000..72cf84ce2f Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.ko.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.mo.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.mo.png new file mode 100644 index 0000000000..702a6545a5 Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.mo.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.mr.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.mr.png new file mode 100644 index 0000000000..6a4a7e95c1 Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.mr.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.ms.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.ms.png new file mode 100644 index 0000000000..460f4599cc Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.ms.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.ne.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.ne.png new file mode 100644 index 0000000000..2770fde14a Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.ne.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.nl.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.nl.png new file mode 100644 index 0000000000..c9668c89e3 Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.nl.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.no.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.no.png new file mode 100644 index 0000000000..1a00018269 Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.no.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.pa.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.pa.png new file mode 100644 index 0000000000..d9e9b9db2f Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.pa.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.pl.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.pl.png new file mode 100644 index 0000000000..85f86fe907 Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.pl.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.pt.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.pt.png new file mode 100644 index 0000000000..be9a81338d Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.pt.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.ro.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.ro.png new file mode 100644 index 0000000000..c4255a74cc Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.ro.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.ru.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.ru.png new file mode 100644 index 0000000000..3301e89056 Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.ru.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.sk.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.sk.png new file mode 100644 index 0000000000..ee3a7d6da5 Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.sk.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.sl.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.sl.png new file mode 100644 index 0000000000..5e335e8c3a Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.sl.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.sr.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.sr.png new file mode 100644 index 0000000000..5de3425011 Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.sr.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.sv.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.sv.png new file mode 100644 index 0000000000..200265f0e2 Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.sv.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.sw.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.sw.png new file mode 100644 index 0000000000..72991f1a34 Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.sw.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.th.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.th.png new file mode 100644 index 0000000000..c3f6541a71 Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.th.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.tl.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.tl.png new file mode 100644 index 0000000000..2351a43aaa Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.tl.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.tr.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.tr.png new file mode 100644 index 0000000000..5090204829 Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.tr.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.tw.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.tw.png new file mode 100644 index 0000000000..3558056e27 Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.tw.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.ur.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.ur.png new file mode 100644 index 0000000000..8148d1be6f Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.ur.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.vi.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.vi.png new file mode 100644 index 0000000000..6db9c28368 Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.vi.png differ diff --git a/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.zh.png b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.zh.png new file mode 100644 index 0000000000..7fc2a61e5e Binary files /dev/null and b/translated_images/13-AI-red-team.5c111d3a4527e2918d94310bb99ff9d878a430efee64652523c46cb095f314cf.zh.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.ar.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.ar.png new file mode 100644 index 0000000000..7837db48b3 Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.ar.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.bg.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.bg.png new file mode 100644 index 0000000000..0ee07db299 Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.bg.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.bn.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.bn.png new file mode 100644 index 0000000000..31190759a1 Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.bn.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.br.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.br.png new file mode 100644 index 0000000000..3c41ce0e58 Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.br.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.cs.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.cs.png new file mode 100644 index 0000000000..7a4981551a Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.cs.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.da.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.da.png new file mode 100644 index 0000000000..2d4206f575 Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.da.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.de.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.de.png new file mode 100644 index 0000000000..233bb9f88d Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.de.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.el.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.el.png new file mode 100644 index 0000000000..a8ce9dcee4 Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.el.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.en.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.en.png new file mode 100644 index 0000000000..9fe0de020c Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.en.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.es.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.es.png new file mode 100644 index 0000000000..b930f8a362 Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.es.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.fa.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.fa.png new file mode 100644 index 0000000000..6c1668209d Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.fa.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.fi.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.fi.png new file mode 100644 index 0000000000..030590c614 Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.fi.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.fr.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.fr.png new file mode 100644 index 0000000000..0d6f572ab4 Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.fr.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.he.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.he.png new file mode 100644 index 0000000000..7cccedd65e Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.he.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.hi.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.hi.png new file mode 100644 index 0000000000..cd971f3446 Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.hi.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.hk.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.hk.png new file mode 100644 index 0000000000..ef65f42254 Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.hk.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.hr.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.hr.png new file mode 100644 index 0000000000..051def3c81 Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.hr.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.hu.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.hu.png new file mode 100644 index 0000000000..0989de49ff Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.hu.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.id.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.id.png new file mode 100644 index 0000000000..c451adefae Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.id.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.it.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.it.png new file mode 100644 index 0000000000..dfaf1c8697 Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.it.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.ja.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.ja.png new file mode 100644 index 0000000000..695e321f3f Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.ja.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.ko.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.ko.png new file mode 100644 index 0000000000..77269c954f Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.ko.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.mo.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.mo.png new file mode 100644 index 0000000000..553b538a74 Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.mo.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.mr.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.mr.png new file mode 100644 index 0000000000..bd1b4bf36e Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.mr.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.ms.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.ms.png new file mode 100644 index 0000000000..40af0692fc Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.ms.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.ne.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.ne.png new file mode 100644 index 0000000000..336e08e83b Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.ne.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.nl.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.nl.png new file mode 100644 index 0000000000..3e994bf14e Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.nl.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.no.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.no.png new file mode 100644 index 0000000000..f2953bb94e Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.no.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.pa.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.pa.png new file mode 100644 index 0000000000..37aa8b232a Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.pa.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.pl.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.pl.png new file mode 100644 index 0000000000..0c44ba7295 Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.pl.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.pt.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.pt.png new file mode 100644 index 0000000000..9b2f2d4f95 Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.pt.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.ro.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.ro.png new file mode 100644 index 0000000000..d48288b241 Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.ro.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.ru.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.ru.png new file mode 100644 index 0000000000..21d4c9fffc Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.ru.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.sk.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.sk.png new file mode 100644 index 0000000000..34e2c560cd Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.sk.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.sl.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.sl.png new file mode 100644 index 0000000000..350222efad Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.sl.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.sr.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.sr.png new file mode 100644 index 0000000000..06be869776 Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.sr.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.sv.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.sv.png new file mode 100644 index 0000000000..1cc1419305 Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.sv.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.sw.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.sw.png new file mode 100644 index 0000000000..fb8a619ccc Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.sw.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.th.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.th.png new file mode 100644 index 0000000000..0637ff3868 Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.th.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.tl.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.tl.png new file mode 100644 index 0000000000..d9377716f2 Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.tl.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.tr.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.tr.png new file mode 100644 index 0000000000..9d9cc42417 Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.tr.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.tw.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.tw.png new file mode 100644 index 0000000000..6ce0a13f62 Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.tw.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.ur.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.ur.png new file mode 100644 index 0000000000..3833c1cf6b Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.ur.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.vi.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.vi.png new file mode 100644 index 0000000000..9bdf9ce17d Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.vi.png differ diff --git a/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.zh.png b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.zh.png new file mode 100644 index 0000000000..e5ad32a86e Binary files /dev/null and b/translated_images/13-lesson-banner.c21a3a479f9ff14ad1f7c9b02bfe0d9a549b43497588334356f91073466a1283.zh.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.ar.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.ar.png new file mode 100644 index 0000000000..0460aa9007 Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.ar.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.bg.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.bg.png new file mode 100644 index 0000000000..f2c45271c5 Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.bg.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.bn.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.bn.png new file mode 100644 index 0000000000..29f86be1d0 Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.bn.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.br.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.br.png new file mode 100644 index 0000000000..5db32d3932 Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.br.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.cs.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.cs.png new file mode 100644 index 0000000000..ebb97ccd60 Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.cs.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.da.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.da.png new file mode 100644 index 0000000000..bfc549ccf1 Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.da.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.de.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.de.png new file mode 100644 index 0000000000..5c40d182fc Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.de.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.el.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.el.png new file mode 100644 index 0000000000..c6261c1b6a Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.el.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.en.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.en.png new file mode 100644 index 0000000000..9552b9ea33 Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.en.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.es.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.es.png new file mode 100644 index 0000000000..7b47c74b8b Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.es.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.fa.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.fa.png new file mode 100644 index 0000000000..d0fa18a253 Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.fa.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.fi.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.fi.png new file mode 100644 index 0000000000..fe1ad853ab Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.fi.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.fr.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.fr.png new file mode 100644 index 0000000000..98b8158977 Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.fr.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.he.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.he.png new file mode 100644 index 0000000000..1ccb8d3861 Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.he.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.hi.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.hi.png new file mode 100644 index 0000000000..39123b568a Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.hi.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.hk.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.hk.png new file mode 100644 index 0000000000..50d4931fd2 Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.hk.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.hr.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.hr.png new file mode 100644 index 0000000000..23c3fc944d Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.hr.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.hu.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.hu.png new file mode 100644 index 0000000000..f45341fa48 Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.hu.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.id.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.id.png new file mode 100644 index 0000000000..e33231d4d0 Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.id.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.it.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.it.png new file mode 100644 index 0000000000..f8c6071abe Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.it.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.ja.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.ja.png new file mode 100644 index 0000000000..2878ab0830 Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.ja.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.ko.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.ko.png new file mode 100644 index 0000000000..cf62fd1bec Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.ko.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.mo.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.mo.png new file mode 100644 index 0000000000..f87b7b4507 Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.mo.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.mr.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.mr.png new file mode 100644 index 0000000000..a2a9fb9089 Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.mr.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.ms.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.ms.png new file mode 100644 index 0000000000..d4e0195db9 Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.ms.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.ne.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.ne.png new file mode 100644 index 0000000000..7e8b638992 Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.ne.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.nl.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.nl.png new file mode 100644 index 0000000000..0475d0e4f8 Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.nl.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.no.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.no.png new file mode 100644 index 0000000000..2a7f7945d3 Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.no.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.pa.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.pa.png new file mode 100644 index 0000000000..158ca643c5 Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.pa.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.pl.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.pl.png new file mode 100644 index 0000000000..b69aac72c9 Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.pl.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.pt.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.pt.png new file mode 100644 index 0000000000..e6e96ecc80 Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.pt.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.ro.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.ro.png new file mode 100644 index 0000000000..879289d58f Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.ro.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.ru.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.ru.png new file mode 100644 index 0000000000..839d8ca603 Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.ru.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.sk.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.sk.png new file mode 100644 index 0000000000..7ff01c44fe Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.sk.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.sl.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.sl.png new file mode 100644 index 0000000000..e7b07bf0cc Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.sl.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.sr.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.sr.png new file mode 100644 index 0000000000..98d9cca880 Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.sr.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.sv.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.sv.png new file mode 100644 index 0000000000..72e21e5996 Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.sv.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.sw.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.sw.png new file mode 100644 index 0000000000..c8aa24b5e9 Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.sw.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.th.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.th.png new file mode 100644 index 0000000000..8470514e96 Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.th.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.tl.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.tl.png new file mode 100644 index 0000000000..5be6c53678 Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.tl.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.tr.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.tr.png new file mode 100644 index 0000000000..239d7f91cb Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.tr.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.tw.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.tw.png new file mode 100644 index 0000000000..afc3473eb1 Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.tw.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.ur.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.ur.png new file mode 100644 index 0000000000..fb6a9e6238 Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.ur.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.vi.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.vi.png new file mode 100644 index 0000000000..23eca78734 Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.vi.png differ diff --git a/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.zh.png b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.zh.png new file mode 100644 index 0000000000..1acf394180 Binary files /dev/null and b/translated_images/14-lesson-banner.0b85d0b37979269e80a18bb1e758e1ccca0a2195b426a0af666c8ad14aee60b0.zh.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.ar.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.ar.png new file mode 100644 index 0000000000..fa0123fd69 Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.ar.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.bg.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.bg.png new file mode 100644 index 0000000000..5037c92eba Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.bg.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.bn.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.bn.png new file mode 100644 index 0000000000..a2f2cfac6f Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.bn.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.br.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.br.png new file mode 100644 index 0000000000..54f7b00ee1 Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.br.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.cs.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.cs.png new file mode 100644 index 0000000000..b740ff25a5 Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.cs.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.da.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.da.png new file mode 100644 index 0000000000..524f9544f9 Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.da.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.de.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.de.png new file mode 100644 index 0000000000..fc5f3720a3 Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.de.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.el.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.el.png new file mode 100644 index 0000000000..97f8f939c8 Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.el.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.en.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.en.png new file mode 100644 index 0000000000..2e8bf794f7 Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.en.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.es.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.es.png new file mode 100644 index 0000000000..3fef92e1ac Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.es.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.fa.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.fa.png new file mode 100644 index 0000000000..572e924598 Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.fa.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.fi.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.fi.png new file mode 100644 index 0000000000..bbcb47ce40 Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.fi.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.fr.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.fr.png new file mode 100644 index 0000000000..6e911bea26 Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.fr.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.he.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.he.png new file mode 100644 index 0000000000..fe0e82674e Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.he.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.hi.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.hi.png new file mode 100644 index 0000000000..d0005588eb Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.hi.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.hk.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.hk.png new file mode 100644 index 0000000000..37c5a769a0 Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.hk.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.hr.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.hr.png new file mode 100644 index 0000000000..cc5b9265b9 Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.hr.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.hu.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.hu.png new file mode 100644 index 0000000000..f2d6227e8f Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.hu.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.id.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.id.png new file mode 100644 index 0000000000..5fd64113f8 Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.id.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.it.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.it.png new file mode 100644 index 0000000000..84a559a80a Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.it.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.ja.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.ja.png new file mode 100644 index 0000000000..62648cd297 Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.ja.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.ko.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.ko.png new file mode 100644 index 0000000000..5d3df603dd Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.ko.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.mo.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.mo.png new file mode 100644 index 0000000000..8691be89df Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.mo.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.mr.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.mr.png new file mode 100644 index 0000000000..670f4e9605 Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.mr.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.ms.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.ms.png new file mode 100644 index 0000000000..7a08f179dc Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.ms.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.ne.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.ne.png new file mode 100644 index 0000000000..938240f73d Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.ne.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.nl.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.nl.png new file mode 100644 index 0000000000..101afc1d9c Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.nl.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.no.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.no.png new file mode 100644 index 0000000000..c941d3b365 Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.no.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.pa.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.pa.png new file mode 100644 index 0000000000..e9ea7160aa Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.pa.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.pl.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.pl.png new file mode 100644 index 0000000000..3180b7417a Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.pl.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.pt.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.pt.png new file mode 100644 index 0000000000..bdd6c36689 Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.pt.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.ro.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.ro.png new file mode 100644 index 0000000000..3e38dcb3a2 Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.ro.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.ru.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.ru.png new file mode 100644 index 0000000000..0da596c4f6 Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.ru.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.sk.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.sk.png new file mode 100644 index 0000000000..22ece2ec3c Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.sk.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.sl.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.sl.png new file mode 100644 index 0000000000..b9f9b1d37d Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.sl.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.sr.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.sr.png new file mode 100644 index 0000000000..f704bdb203 Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.sr.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.sv.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.sv.png new file mode 100644 index 0000000000..da81af25eb Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.sv.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.sw.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.sw.png new file mode 100644 index 0000000000..cbd909eb2e Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.sw.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.th.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.th.png new file mode 100644 index 0000000000..28d88273d7 Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.th.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.tl.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.tl.png new file mode 100644 index 0000000000..c4293089fc Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.tl.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.tr.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.tr.png new file mode 100644 index 0000000000..68ef14dc06 Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.tr.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.tw.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.tw.png new file mode 100644 index 0000000000..0eb429d264 Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.tw.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.ur.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.ur.png new file mode 100644 index 0000000000..de397afd81 Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.ur.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.vi.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.vi.png new file mode 100644 index 0000000000..ab78f4b02b Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.vi.png differ diff --git a/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.zh.png b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.zh.png new file mode 100644 index 0000000000..6c79e2dc7e Binary files /dev/null and b/translated_images/15-lesson-banner.799d0cd2229970edb365f6667a4c7b3a0f526eb8698baa7d2e05c3bd49a5d83f.zh.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.ar.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.ar.png new file mode 100644 index 0000000000..b75d865f36 Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.ar.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.bg.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.bg.png new file mode 100644 index 0000000000..de6131e3c6 Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.bg.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.bn.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.bn.png new file mode 100644 index 0000000000..700d63acc0 Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.bn.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.br.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.br.png new file mode 100644 index 0000000000..6144111884 Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.br.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.cs.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.cs.png new file mode 100644 index 0000000000..3d6f97125f Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.cs.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.da.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.da.png new file mode 100644 index 0000000000..24027f4d59 Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.da.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.de.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.de.png new file mode 100644 index 0000000000..fb475aca85 Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.de.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.el.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.el.png new file mode 100644 index 0000000000..23036d1f2e Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.el.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.en.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.en.png new file mode 100644 index 0000000000..99b5ca768c Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.en.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.es.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.es.png new file mode 100644 index 0000000000..2a59cc9e14 Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.es.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.fa.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.fa.png new file mode 100644 index 0000000000..5c8f9bd129 Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.fa.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.fi.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.fi.png new file mode 100644 index 0000000000..593319838d Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.fi.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.fr.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.fr.png new file mode 100644 index 0000000000..df1f9085c3 Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.fr.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.he.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.he.png new file mode 100644 index 0000000000..817c60e5b6 Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.he.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.hi.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.hi.png new file mode 100644 index 0000000000..c46cf73b45 Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.hi.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.hk.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.hk.png new file mode 100644 index 0000000000..2bed4e8d42 Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.hk.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.hr.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.hr.png new file mode 100644 index 0000000000..dbdf8cc200 Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.hr.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.hu.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.hu.png new file mode 100644 index 0000000000..96c8a3d84a Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.hu.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.id.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.id.png new file mode 100644 index 0000000000..c7090f469b Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.id.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.it.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.it.png new file mode 100644 index 0000000000..f065bcaeb8 Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.it.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.ja.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.ja.png new file mode 100644 index 0000000000..fe437dac11 Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.ja.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.ko.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.ko.png new file mode 100644 index 0000000000..09bb6810cb Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.ko.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.mo.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.mo.png new file mode 100644 index 0000000000..013d8015a3 Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.mo.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.mr.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.mr.png new file mode 100644 index 0000000000..f59b114eda Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.mr.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.ms.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.ms.png new file mode 100644 index 0000000000..d8a32df355 Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.ms.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.ne.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.ne.png new file mode 100644 index 0000000000..1efead8ed8 Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.ne.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.nl.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.nl.png new file mode 100644 index 0000000000..b35ac0283c Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.nl.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.no.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.no.png new file mode 100644 index 0000000000..0ac9ec9139 Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.no.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.pa.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.pa.png new file mode 100644 index 0000000000..e2881fe029 Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.pa.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.pl.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.pl.png new file mode 100644 index 0000000000..dc2b5b5085 Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.pl.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.pt.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.pt.png new file mode 100644 index 0000000000..74dfba840b Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.pt.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.ro.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.ro.png new file mode 100644 index 0000000000..69a6efbb37 Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.ro.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.ru.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.ru.png new file mode 100644 index 0000000000..1b1cb031a8 Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.ru.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.sk.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.sk.png new file mode 100644 index 0000000000..6bf7455bf3 Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.sk.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.sl.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.sl.png new file mode 100644 index 0000000000..1bb7349140 Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.sl.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.sr.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.sr.png new file mode 100644 index 0000000000..1fd65515da Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.sr.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.sv.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.sv.png new file mode 100644 index 0000000000..810396fcff Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.sv.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.sw.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.sw.png new file mode 100644 index 0000000000..bf9616fbf1 Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.sw.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.th.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.th.png new file mode 100644 index 0000000000..ec4c47e109 Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.th.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.tl.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.tl.png new file mode 100644 index 0000000000..8e48cd29e4 Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.tl.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.tr.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.tr.png new file mode 100644 index 0000000000..60d49ac30e Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.tr.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.tw.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.tw.png new file mode 100644 index 0000000000..fdaaf7debf Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.tw.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.ur.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.ur.png new file mode 100644 index 0000000000..457ad0f0e7 Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.ur.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.vi.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.vi.png new file mode 100644 index 0000000000..d140a57647 Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.vi.png differ diff --git a/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.zh.png b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.zh.png new file mode 100644 index 0000000000..6eab041865 Binary files /dev/null and b/translated_images/16-lesson-banner.7b9ebf8cdea6669d74be8212360e99a5653b0cd3ec513f50f12693ffec984ff1.zh.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.ar.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.ar.png new file mode 100644 index 0000000000..44a5466772 Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.ar.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.bg.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.bg.png new file mode 100644 index 0000000000..acdf1f065d Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.bg.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.bn.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.bn.png new file mode 100644 index 0000000000..ccd5b3e8d9 Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.bn.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.br.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.br.png new file mode 100644 index 0000000000..66049153f3 Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.br.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.cs.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.cs.png new file mode 100644 index 0000000000..f62c145f05 Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.cs.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.da.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.da.png new file mode 100644 index 0000000000..28362e67e9 Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.da.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.de.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.de.png new file mode 100644 index 0000000000..e5dff0380f Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.de.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.el.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.el.png new file mode 100644 index 0000000000..304e40104b Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.el.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.en.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.en.png new file mode 100644 index 0000000000..b5eac3318c Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.en.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.es.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.es.png new file mode 100644 index 0000000000..e8c09a35df Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.es.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.fa.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.fa.png new file mode 100644 index 0000000000..20c5d465a8 Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.fa.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.fi.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.fi.png new file mode 100644 index 0000000000..be08d429aa Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.fi.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.fr.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.fr.png new file mode 100644 index 0000000000..78f7fd84c1 Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.fr.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.he.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.he.png new file mode 100644 index 0000000000..c9a09d6d50 Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.he.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.hi.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.hi.png new file mode 100644 index 0000000000..187ddc8ef6 Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.hi.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.hk.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.hk.png new file mode 100644 index 0000000000..ade51e8036 Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.hk.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.hr.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.hr.png new file mode 100644 index 0000000000..ddd3e524c8 Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.hr.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.hu.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.hu.png new file mode 100644 index 0000000000..3c3cf91ce7 Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.hu.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.id.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.id.png new file mode 100644 index 0000000000..8ed873425d Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.id.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.it.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.it.png new file mode 100644 index 0000000000..ae7869a11c Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.it.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.ja.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.ja.png new file mode 100644 index 0000000000..927ac79365 Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.ja.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.ko.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.ko.png new file mode 100644 index 0000000000..4f2912ad37 Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.ko.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.mo.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.mo.png new file mode 100644 index 0000000000..bbbdb3878a Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.mo.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.mr.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.mr.png new file mode 100644 index 0000000000..e1459b793e Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.mr.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.ms.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.ms.png new file mode 100644 index 0000000000..abca4fcde7 Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.ms.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.ne.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.ne.png new file mode 100644 index 0000000000..1aa182d919 Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.ne.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.nl.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.nl.png new file mode 100644 index 0000000000..78476424d4 Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.nl.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.no.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.no.png new file mode 100644 index 0000000000..e7e8147e41 Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.no.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.pa.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.pa.png new file mode 100644 index 0000000000..d601cdc995 Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.pa.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.pl.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.pl.png new file mode 100644 index 0000000000..9b26312166 Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.pl.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.pt.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.pt.png new file mode 100644 index 0000000000..66049153f3 Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.pt.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.ro.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.ro.png new file mode 100644 index 0000000000..ffb964918f Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.ro.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.ru.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.ru.png new file mode 100644 index 0000000000..03cb4f0ae9 Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.ru.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.sk.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.sk.png new file mode 100644 index 0000000000..c9518314ae Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.sk.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.sl.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.sl.png new file mode 100644 index 0000000000..8d7ba5613a Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.sl.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.sr.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.sr.png new file mode 100644 index 0000000000..e1cc9f628b Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.sr.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.sv.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.sv.png new file mode 100644 index 0000000000..1a890b6b09 Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.sv.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.sw.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.sw.png new file mode 100644 index 0000000000..91b6cb331e Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.sw.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.th.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.th.png new file mode 100644 index 0000000000..e610b69d68 Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.th.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.tl.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.tl.png new file mode 100644 index 0000000000..0f8642259a Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.tl.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.tr.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.tr.png new file mode 100644 index 0000000000..ee363e0a0d Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.tr.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.tw.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.tw.png new file mode 100644 index 0000000000..8ea18393e6 Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.tw.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.ur.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.ur.png new file mode 100644 index 0000000000..2a9098680c Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.ur.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.vi.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.vi.png new file mode 100644 index 0000000000..f01f314ec1 Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.vi.png differ diff --git a/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.zh.png b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.zh.png new file mode 100644 index 0000000000..8b629572de Binary files /dev/null and b/translated_images/17-lesson-banner.85938ffe06e157e1dfc9ae2fcf0de326892e71c463f62b397291ad54bd8e9602.zh.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.ar.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.ar.png new file mode 100644 index 0000000000..18e3ae2ccb Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.ar.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.bg.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.bg.png new file mode 100644 index 0000000000..0cee9da5f6 Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.bg.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.bn.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.bn.png new file mode 100644 index 0000000000..e9e3e2ecfd Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.bn.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.br.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.br.png new file mode 100644 index 0000000000..6f298c43ad Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.br.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.cs.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.cs.png new file mode 100644 index 0000000000..7b38d4f694 Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.cs.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.da.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.da.png new file mode 100644 index 0000000000..ac95d5eee6 Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.da.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.de.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.de.png new file mode 100644 index 0000000000..f000b30fbd Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.de.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.el.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.el.png new file mode 100644 index 0000000000..4d76fd0323 Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.el.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.en.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.en.png new file mode 100644 index 0000000000..9345688359 Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.en.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.es.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.es.png new file mode 100644 index 0000000000..5b692d930e Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.es.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.fa.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.fa.png new file mode 100644 index 0000000000..e6504df57a Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.fa.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.fi.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.fi.png new file mode 100644 index 0000000000..91e5ba5f21 Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.fi.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.fr.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.fr.png new file mode 100644 index 0000000000..f69b27ed0a Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.fr.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.he.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.he.png new file mode 100644 index 0000000000..f05593c8c0 Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.he.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.hi.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.hi.png new file mode 100644 index 0000000000..0f3e478689 Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.hi.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.hk.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.hk.png new file mode 100644 index 0000000000..025771ad4d Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.hk.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.hr.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.hr.png new file mode 100644 index 0000000000..ec6b2a912f Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.hr.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.hu.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.hu.png new file mode 100644 index 0000000000..2cbadc4a9c Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.hu.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.id.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.id.png new file mode 100644 index 0000000000..9e58f81dd4 Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.id.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.it.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.it.png new file mode 100644 index 0000000000..61ec753bb0 Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.it.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.ja.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.ja.png new file mode 100644 index 0000000000..e86bef1350 Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.ja.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.ko.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.ko.png new file mode 100644 index 0000000000..b35e11a98d Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.ko.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.mo.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.mo.png new file mode 100644 index 0000000000..b8952c7476 Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.mo.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.mr.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.mr.png new file mode 100644 index 0000000000..cfc93433c2 Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.mr.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.ms.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.ms.png new file mode 100644 index 0000000000..8f81ec2677 Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.ms.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.ne.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.ne.png new file mode 100644 index 0000000000..759489639c Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.ne.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.nl.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.nl.png new file mode 100644 index 0000000000..a538e79f52 Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.nl.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.no.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.no.png new file mode 100644 index 0000000000..716a0b49fe Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.no.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.pa.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.pa.png new file mode 100644 index 0000000000..b86155a38d Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.pa.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.pl.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.pl.png new file mode 100644 index 0000000000..057c9b2058 Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.pl.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.pt.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.pt.png new file mode 100644 index 0000000000..1d52fe4c07 Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.pt.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.ro.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.ro.png new file mode 100644 index 0000000000..207094cc6a Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.ro.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.ru.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.ru.png new file mode 100644 index 0000000000..41a51297a5 Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.ru.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.sk.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.sk.png new file mode 100644 index 0000000000..cbc2fe0446 Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.sk.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.sl.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.sl.png new file mode 100644 index 0000000000..0ae122f7bc Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.sl.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.sr.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.sr.png new file mode 100644 index 0000000000..be1acfba9f Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.sr.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.sv.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.sv.png new file mode 100644 index 0000000000..bda1b3cdf2 Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.sv.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.sw.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.sw.png new file mode 100644 index 0000000000..a6de325fe8 Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.sw.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.th.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.th.png new file mode 100644 index 0000000000..e0e41651d5 Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.th.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.tl.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.tl.png new file mode 100644 index 0000000000..c6997a7c43 Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.tl.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.tr.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.tr.png new file mode 100644 index 0000000000..9ef461ef20 Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.tr.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.tw.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.tw.png new file mode 100644 index 0000000000..a81d3bed0c Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.tw.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.ur.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.ur.png new file mode 100644 index 0000000000..c758e59349 Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.ur.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.vi.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.vi.png new file mode 100644 index 0000000000..1d2443302e Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.vi.png differ diff --git a/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.zh.png b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.zh.png new file mode 100644 index 0000000000..585ff8e6d1 Binary files /dev/null and b/translated_images/18-fine-tuning-sketchnote.92733966235199dd260184b1aae3a84b877c7496bc872d8e63ad6fa2dd96bafc.zh.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.ar.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.ar.png new file mode 100644 index 0000000000..239c581369 Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.ar.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.bg.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.bg.png new file mode 100644 index 0000000000..26f7db0ca0 Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.bg.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.bn.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.bn.png new file mode 100644 index 0000000000..9ff34eb874 Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.bn.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.br.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.br.png new file mode 100644 index 0000000000..e392c4f2a6 Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.br.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.cs.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.cs.png new file mode 100644 index 0000000000..5d1d883d00 Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.cs.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.da.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.da.png new file mode 100644 index 0000000000..58a1291e72 Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.da.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.de.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.de.png new file mode 100644 index 0000000000..0a302de326 Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.de.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.el.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.el.png new file mode 100644 index 0000000000..082fe07086 Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.el.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.en.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.en.png new file mode 100644 index 0000000000..16b7048164 Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.en.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.es.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.es.png new file mode 100644 index 0000000000..faaf47040c Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.es.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.fa.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.fa.png new file mode 100644 index 0000000000..2013f69339 Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.fa.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.fi.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.fi.png new file mode 100644 index 0000000000..e8c16f39db Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.fi.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.fr.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.fr.png new file mode 100644 index 0000000000..1564e9423d Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.fr.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.he.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.he.png new file mode 100644 index 0000000000..d6b0670e11 Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.he.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.hi.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.hi.png new file mode 100644 index 0000000000..e108de166a Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.hi.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.hk.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.hk.png new file mode 100644 index 0000000000..1d03df2096 Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.hk.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.hr.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.hr.png new file mode 100644 index 0000000000..9530ba2cbd Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.hr.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.hu.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.hu.png new file mode 100644 index 0000000000..5e186182ea Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.hu.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.id.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.id.png new file mode 100644 index 0000000000..5d75d8d5b1 Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.id.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.it.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.it.png new file mode 100644 index 0000000000..b3dc498d26 Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.it.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.ja.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.ja.png new file mode 100644 index 0000000000..c6e4a572eb Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.ja.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.ko.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.ko.png new file mode 100644 index 0000000000..9343cbd36f Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.ko.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.mo.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.mo.png new file mode 100644 index 0000000000..8858b7be93 Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.mo.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.mr.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.mr.png new file mode 100644 index 0000000000..d2e1f79c9c Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.mr.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.ms.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.ms.png new file mode 100644 index 0000000000..96412ec342 Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.ms.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.ne.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.ne.png new file mode 100644 index 0000000000..99f98263d8 Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.ne.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.nl.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.nl.png new file mode 100644 index 0000000000..1796983e73 Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.nl.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.no.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.no.png new file mode 100644 index 0000000000..2191921899 Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.no.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.pa.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.pa.png new file mode 100644 index 0000000000..63de3d480a Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.pa.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.pl.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.pl.png new file mode 100644 index 0000000000..c7e293f9b3 Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.pl.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.pt.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.pt.png new file mode 100644 index 0000000000..d75506fa11 Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.pt.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.ro.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.ro.png new file mode 100644 index 0000000000..e3fc20f87c Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.ro.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.ru.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.ru.png new file mode 100644 index 0000000000..86bcb12295 Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.ru.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.sk.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.sk.png new file mode 100644 index 0000000000..df56cc5b30 Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.sk.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.sl.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.sl.png new file mode 100644 index 0000000000..8befff5867 Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.sl.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.sr.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.sr.png new file mode 100644 index 0000000000..c0ef3cf75e Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.sr.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.sv.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.sv.png new file mode 100644 index 0000000000..7e4db9a90b Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.sv.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.sw.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.sw.png new file mode 100644 index 0000000000..4d74e334c1 Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.sw.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.th.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.th.png new file mode 100644 index 0000000000..8be55c7376 Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.th.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.tl.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.tl.png new file mode 100644 index 0000000000..4b6d3aff99 Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.tl.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.tr.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.tr.png new file mode 100644 index 0000000000..ad61cc8d0b Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.tr.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.tw.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.tw.png new file mode 100644 index 0000000000..bf0639dc9c Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.tw.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.ur.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.ur.png new file mode 100644 index 0000000000..73f6edaacf Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.ur.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.vi.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.vi.png new file mode 100644 index 0000000000..775ec2c6ef Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.vi.png differ diff --git a/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.zh.png b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.zh.png new file mode 100644 index 0000000000..e746dc3a73 Binary files /dev/null and b/translated_images/18-lesson-banner.8487555c3e3225eefc1dc84e72c8e00bce1ee76db867a080628fb0fbb04aa0d2.zh.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.ar.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.ar.png new file mode 100644 index 0000000000..a41e1a7335 Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.ar.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.bg.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.bg.png new file mode 100644 index 0000000000..2b2ecb771e Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.bg.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.bn.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.bn.png new file mode 100644 index 0000000000..a1d92d64cb Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.bn.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.br.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.br.png new file mode 100644 index 0000000000..a89d6a3170 Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.br.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.cs.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.cs.png new file mode 100644 index 0000000000..f2600c6111 Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.cs.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.da.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.da.png new file mode 100644 index 0000000000..d1c0173d4c Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.da.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.de.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.de.png new file mode 100644 index 0000000000..a82394bcc3 Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.de.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.el.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.el.png new file mode 100644 index 0000000000..5e2fbf9fbb Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.el.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.en.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.en.png new file mode 100644 index 0000000000..c3734a0ede Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.en.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.es.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.es.png new file mode 100644 index 0000000000..83e48ce6b9 Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.es.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.fa.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.fa.png new file mode 100644 index 0000000000..08733d3e66 Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.fa.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.fi.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.fi.png new file mode 100644 index 0000000000..e064428bd9 Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.fi.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.fr.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.fr.png new file mode 100644 index 0000000000..b1ac594387 Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.fr.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.he.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.he.png new file mode 100644 index 0000000000..7b73d4ae3b Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.he.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.hi.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.hi.png new file mode 100644 index 0000000000..9c2026e71e Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.hi.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.hk.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.hk.png new file mode 100644 index 0000000000..8cdca0b780 Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.hk.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.hr.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.hr.png new file mode 100644 index 0000000000..e305c30d5a Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.hr.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.hu.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.hu.png new file mode 100644 index 0000000000..372c4f4250 Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.hu.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.id.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.id.png new file mode 100644 index 0000000000..bf95cbde4b Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.id.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.it.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.it.png new file mode 100644 index 0000000000..767287131f Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.it.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.ja.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.ja.png new file mode 100644 index 0000000000..a7a57ba5dc Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.ja.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.ko.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.ko.png new file mode 100644 index 0000000000..cdaa7d9327 Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.ko.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.mo.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.mo.png new file mode 100644 index 0000000000..9277ac36ca Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.mo.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.mr.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.mr.png new file mode 100644 index 0000000000..3e4af90e77 Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.mr.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.ms.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.ms.png new file mode 100644 index 0000000000..561ba141bc Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.ms.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.ne.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.ne.png new file mode 100644 index 0000000000..0cefbb61b0 Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.ne.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.nl.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.nl.png new file mode 100644 index 0000000000..b34583e6e2 Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.nl.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.no.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.no.png new file mode 100644 index 0000000000..628ce23494 Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.no.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.pa.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.pa.png new file mode 100644 index 0000000000..ccd63a5be2 Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.pa.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.pl.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.pl.png new file mode 100644 index 0000000000..8e44f52e07 Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.pl.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.pt.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.pt.png new file mode 100644 index 0000000000..af74ab8cb8 Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.pt.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.ro.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.ro.png new file mode 100644 index 0000000000..ad4539a2e5 Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.ro.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.ru.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.ru.png new file mode 100644 index 0000000000..994b430b6c Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.ru.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.sk.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.sk.png new file mode 100644 index 0000000000..541868e88c Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.sk.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.sl.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.sl.png new file mode 100644 index 0000000000..2f5dae380d Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.sl.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.sr.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.sr.png new file mode 100644 index 0000000000..c497c80956 Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.sr.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.sv.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.sv.png new file mode 100644 index 0000000000..28ab721c11 Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.sv.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.sw.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.sw.png new file mode 100644 index 0000000000..af821575ac Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.sw.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.th.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.th.png new file mode 100644 index 0000000000..da9c554404 Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.th.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.tl.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.tl.png new file mode 100644 index 0000000000..8310867fd4 Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.tl.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.tr.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.tr.png new file mode 100644 index 0000000000..208c6ef921 Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.tr.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.tw.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.tw.png new file mode 100644 index 0000000000..7f772925ac Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.tw.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.ur.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.ur.png new file mode 100644 index 0000000000..918f013bb4 Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.ur.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.vi.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.vi.png new file mode 100644 index 0000000000..726162ba50 Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.vi.png differ diff --git a/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.zh.png b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.zh.png new file mode 100644 index 0000000000..0bef8ade5b Binary files /dev/null and b/translated_images/AI-diagram.cab4093fe39583ffc0d19c22eab2ef79aaf4ef307ea91ac18f97aa008abeb45c.zh.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.ar.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.ar.png new file mode 100644 index 0000000000..7faa38a86a Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.ar.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.bg.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.bg.png new file mode 100644 index 0000000000..9bbc6df720 Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.bg.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.bn.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.bn.png new file mode 100644 index 0000000000..c42f6ecea3 Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.bn.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.br.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.br.png new file mode 100644 index 0000000000..1f3917721c Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.br.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.cs.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.cs.png new file mode 100644 index 0000000000..9bd9cb3d58 Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.cs.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.da.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.da.png new file mode 100644 index 0000000000..ffb1202a1b Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.da.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.de.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.de.png new file mode 100644 index 0000000000..f08aab5084 Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.de.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.el.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.el.png new file mode 100644 index 0000000000..f11c40e89d Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.el.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.en.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.en.png new file mode 100644 index 0000000000..811917c091 Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.en.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.es.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.es.png new file mode 100644 index 0000000000..1e800de181 Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.es.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.fa.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.fa.png new file mode 100644 index 0000000000..5ae96b6259 Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.fa.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.fi.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.fi.png new file mode 100644 index 0000000000..650834a833 Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.fi.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.fr.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.fr.png new file mode 100644 index 0000000000..a071f1518a Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.fr.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.he.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.he.png new file mode 100644 index 0000000000..020ca34f58 Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.he.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.hi.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.hi.png new file mode 100644 index 0000000000..fa20c6f2c4 Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.hi.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.hk.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.hk.png new file mode 100644 index 0000000000..9468612444 Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.hk.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.hr.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.hr.png new file mode 100644 index 0000000000..e97bba2904 Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.hr.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.hu.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.hu.png new file mode 100644 index 0000000000..82b3f36371 Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.hu.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.id.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.id.png new file mode 100644 index 0000000000..d01d702724 Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.id.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.it.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.it.png new file mode 100644 index 0000000000..2e8dfb791d Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.it.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.ja.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.ja.png new file mode 100644 index 0000000000..9126f14d7b Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.ja.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.ko.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.ko.png new file mode 100644 index 0000000000..bc8840ed41 Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.ko.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.mo.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.mo.png new file mode 100644 index 0000000000..2718525c86 Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.mo.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.mr.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.mr.png new file mode 100644 index 0000000000..527cd9745a Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.mr.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.ms.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.ms.png new file mode 100644 index 0000000000..eb54e8fdd7 Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.ms.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.ne.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.ne.png new file mode 100644 index 0000000000..870a291a15 Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.ne.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.nl.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.nl.png new file mode 100644 index 0000000000..642705c2a4 Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.nl.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.no.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.no.png new file mode 100644 index 0000000000..6dd5819b16 Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.no.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.pa.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.pa.png new file mode 100644 index 0000000000..5a1a2e9787 Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.pa.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.pl.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.pl.png new file mode 100644 index 0000000000..f8a9ec1c00 Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.pl.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.pt.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.pt.png new file mode 100644 index 0000000000..4fb90898a1 Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.pt.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.ro.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.ro.png new file mode 100644 index 0000000000..06d64b661e Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.ro.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.ru.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.ru.png new file mode 100644 index 0000000000..4b1b133e60 Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.ru.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.sk.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.sk.png new file mode 100644 index 0000000000..c69fead406 Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.sk.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.sl.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.sl.png new file mode 100644 index 0000000000..72044d1dbb Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.sl.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.sr.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.sr.png new file mode 100644 index 0000000000..4e8e6e66a8 Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.sr.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.sv.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.sv.png new file mode 100644 index 0000000000..3cf1ccbf92 Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.sv.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.sw.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.sw.png new file mode 100644 index 0000000000..b9ebe5e37f Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.sw.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.th.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.th.png new file mode 100644 index 0000000000..d5438d7540 Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.th.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.tl.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.tl.png new file mode 100644 index 0000000000..501d2c610d Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.tl.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.tr.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.tr.png new file mode 100644 index 0000000000..255abf527b Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.tr.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.tw.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.tw.png new file mode 100644 index 0000000000..43c682373c Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.tw.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.ur.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.ur.png new file mode 100644 index 0000000000..125a03afbe Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.ur.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.vi.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.vi.png new file mode 100644 index 0000000000..0490cd4cd2 Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.vi.png differ diff --git a/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.zh.png b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.zh.png new file mode 100644 index 0000000000..347c7e70b8 Binary files /dev/null and b/translated_images/AzureAIStudioModelCatalog.e34ac207ac348d31e74246c4f91d10086444783b72bbee3658e0453918aa5d22.zh.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.ar.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.ar.png new file mode 100644 index 0000000000..26a13f23df Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.ar.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.bg.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.bg.png new file mode 100644 index 0000000000..97a14e0db1 Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.bg.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.bn.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.bn.png new file mode 100644 index 0000000000..4516c4429c Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.bn.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.br.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.br.png new file mode 100644 index 0000000000..6e4d00bae1 Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.br.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.cs.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.cs.png new file mode 100644 index 0000000000..e8fdf7e4b7 Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.cs.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.da.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.da.png new file mode 100644 index 0000000000..f69f517aa9 Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.da.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.de.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.de.png new file mode 100644 index 0000000000..87b36721ca Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.de.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.el.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.el.png new file mode 100644 index 0000000000..e3c310c431 Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.el.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.en.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.en.png new file mode 100644 index 0000000000..9a0c2c47a1 Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.en.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.es.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.es.png new file mode 100644 index 0000000000..a51983b9dc Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.es.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.fa.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.fa.png new file mode 100644 index 0000000000..3d52121ad9 Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.fa.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.fi.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.fi.png new file mode 100644 index 0000000000..6114d97a07 Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.fi.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.fr.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.fr.png new file mode 100644 index 0000000000..d18caa0999 Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.fr.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.he.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.he.png new file mode 100644 index 0000000000..5e2153b51e Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.he.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.hi.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.hi.png new file mode 100644 index 0000000000..f9cabc89ca Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.hi.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.hk.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.hk.png new file mode 100644 index 0000000000..7599bd9126 Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.hk.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.hr.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.hr.png new file mode 100644 index 0000000000..cd053aff01 Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.hr.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.hu.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.hu.png new file mode 100644 index 0000000000..86c57375cc Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.hu.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.id.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.id.png new file mode 100644 index 0000000000..cf36866d45 Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.id.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.it.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.it.png new file mode 100644 index 0000000000..3e7f7406aa Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.it.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.ja.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.ja.png new file mode 100644 index 0000000000..291f05e37d Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.ja.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.ko.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.ko.png new file mode 100644 index 0000000000..86eb0e02d6 Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.ko.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.mo.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.mo.png new file mode 100644 index 0000000000..d8b4c2883a Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.mo.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.mr.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.mr.png new file mode 100644 index 0000000000..60a92ba146 Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.mr.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.ms.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.ms.png new file mode 100644 index 0000000000..1cbcb4254d Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.ms.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.ne.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.ne.png new file mode 100644 index 0000000000..f01ae9bcd7 Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.ne.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.nl.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.nl.png new file mode 100644 index 0000000000..f5469d0988 Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.nl.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.no.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.no.png new file mode 100644 index 0000000000..2da0dc8768 Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.no.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.pa.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.pa.png new file mode 100644 index 0000000000..a6d4efa667 Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.pa.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.pl.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.pl.png new file mode 100644 index 0000000000..0520bc2f0b Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.pl.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.pt.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.pt.png new file mode 100644 index 0000000000..9c7d1801f7 Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.pt.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.ro.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.ro.png new file mode 100644 index 0000000000..8b2930140f Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.ro.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.ru.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.ru.png new file mode 100644 index 0000000000..10e7799e2c Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.ru.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.sk.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.sk.png new file mode 100644 index 0000000000..ab3e0848d0 Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.sk.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.sl.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.sl.png new file mode 100644 index 0000000000..514885d4a9 Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.sl.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.sr.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.sr.png new file mode 100644 index 0000000000..57b403e31a Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.sr.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.sv.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.sv.png new file mode 100644 index 0000000000..018d9e763a Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.sv.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.sw.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.sw.png new file mode 100644 index 0000000000..83c31bfea4 Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.sw.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.th.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.th.png new file mode 100644 index 0000000000..ff713a58dc Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.th.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.tl.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.tl.png new file mode 100644 index 0000000000..208d301f09 Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.tl.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.tr.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.tr.png new file mode 100644 index 0000000000..daaa051fb4 Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.tr.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.tw.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.tw.png new file mode 100644 index 0000000000..53e36bbf2f Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.tw.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.ur.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.ur.png new file mode 100644 index 0000000000..65771196eb Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.ur.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.vi.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.vi.png new file mode 100644 index 0000000000..1b9587deb4 Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.vi.png differ diff --git a/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.zh.png b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.zh.png new file mode 100644 index 0000000000..72bf5f2fd9 Binary files /dev/null and b/translated_images/Deploy.09224ecfe6a5ef47996fd0a44288772990139305451440c430662d43ac323ecd.zh.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.ar.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.ar.png new file mode 100644 index 0000000000..042f3f9f20 Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.ar.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.bg.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.bg.png new file mode 100644 index 0000000000..f9fb8e6fd5 Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.bg.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.bn.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.bn.png new file mode 100644 index 0000000000..080d361d72 Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.bn.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.br.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.br.png new file mode 100644 index 0000000000..248833191a Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.br.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.cs.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.cs.png new file mode 100644 index 0000000000..41f544d0a6 Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.cs.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.da.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.da.png new file mode 100644 index 0000000000..0ecfd179ca Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.da.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.de.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.de.png new file mode 100644 index 0000000000..52fcac4d54 Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.de.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.el.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.el.png new file mode 100644 index 0000000000..db0d52fb28 Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.el.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.en.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.en.png new file mode 100644 index 0000000000..95fdb57334 Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.en.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.es.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.es.png new file mode 100644 index 0000000000..6e4e80a91d Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.es.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.fa.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.fa.png new file mode 100644 index 0000000000..318a279e04 Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.fa.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.fi.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.fi.png new file mode 100644 index 0000000000..e3a36b231a Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.fi.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.fr.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.fr.png new file mode 100644 index 0000000000..4b5cb511a5 Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.fr.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.he.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.he.png new file mode 100644 index 0000000000..bfc01b965a Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.he.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.hi.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.hi.png new file mode 100644 index 0000000000..a4d9232f0c Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.hi.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.hk.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.hk.png new file mode 100644 index 0000000000..24e46fcfee Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.hk.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.hr.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.hr.png new file mode 100644 index 0000000000..4a10334fe4 Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.hr.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.hu.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.hu.png new file mode 100644 index 0000000000..ca5077bc29 Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.hu.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.id.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.id.png new file mode 100644 index 0000000000..6f3f5af167 Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.id.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.it.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.it.png new file mode 100644 index 0000000000..4a312683e8 Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.it.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.ja.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.ja.png new file mode 100644 index 0000000000..be5f86ef3b Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.ja.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.ko.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.ko.png new file mode 100644 index 0000000000..0e65d3a752 Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.ko.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.mo.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.mo.png new file mode 100644 index 0000000000..c85bca6744 Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.mo.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.mr.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.mr.png new file mode 100644 index 0000000000..83b54c5308 Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.mr.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.ms.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.ms.png new file mode 100644 index 0000000000..e23bfbfb87 Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.ms.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.ne.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.ne.png new file mode 100644 index 0000000000..35f68ce591 Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.ne.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.nl.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.nl.png new file mode 100644 index 0000000000..76a92f3852 Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.nl.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.no.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.no.png new file mode 100644 index 0000000000..5eb6396f55 Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.no.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.pa.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.pa.png new file mode 100644 index 0000000000..730c0989bd Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.pa.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.pl.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.pl.png new file mode 100644 index 0000000000..90107eca2e Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.pl.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.pt.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.pt.png new file mode 100644 index 0000000000..248833191a Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.pt.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.ro.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.ro.png new file mode 100644 index 0000000000..917242bc56 Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.ro.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.ru.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.ru.png new file mode 100644 index 0000000000..7bb6029bf9 Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.ru.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.sk.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.sk.png new file mode 100644 index 0000000000..b197cd192a Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.sk.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.sl.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.sl.png new file mode 100644 index 0000000000..a76fd0c2ca Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.sl.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.sr.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.sr.png new file mode 100644 index 0000000000..958740a0c1 Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.sr.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.sv.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.sv.png new file mode 100644 index 0000000000..fea469b9de Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.sv.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.sw.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.sw.png new file mode 100644 index 0000000000..bbf4f84dff Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.sw.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.th.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.th.png new file mode 100644 index 0000000000..2c8fad2473 Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.th.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.tl.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.tl.png new file mode 100644 index 0000000000..89b030727e Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.tl.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.tr.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.tr.png new file mode 100644 index 0000000000..3067a8647e Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.tr.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.tw.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.tw.png new file mode 100644 index 0000000000..c85bca6744 Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.tw.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.ur.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.ur.png new file mode 100644 index 0000000000..20b58119a3 Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.ur.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.vi.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.vi.png new file mode 100644 index 0000000000..4f93438db0 Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.vi.png differ diff --git a/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.zh.png b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.zh.png new file mode 100644 index 0000000000..4fb855aa1f Binary files /dev/null and b/translated_images/Embedding.fbf261f314681a51994056854fd928b69b253616bb313e68a9ce19a2b15c8768.zh.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.ar.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.ar.png new file mode 100644 index 0000000000..620d3ea714 Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.ar.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.bg.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.bg.png new file mode 100644 index 0000000000..3bb2ffe71b Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.bg.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.bn.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.bn.png new file mode 100644 index 0000000000..b2b89e6306 Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.bn.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.br.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.br.png new file mode 100644 index 0000000000..6708672b34 Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.br.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.cs.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.cs.png new file mode 100644 index 0000000000..fe7a75fce1 Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.cs.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.da.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.da.png new file mode 100644 index 0000000000..9e6f9b7d3e Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.da.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.de.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.de.png new file mode 100644 index 0000000000..076d640333 Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.de.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.el.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.el.png new file mode 100644 index 0000000000..c629048a40 Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.el.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.en.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.en.png new file mode 100644 index 0000000000..8e16bcdbe4 Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.en.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.es.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.es.png new file mode 100644 index 0000000000..7c7c160d03 Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.es.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.fa.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.fa.png new file mode 100644 index 0000000000..26ff7458b7 Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.fa.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.fi.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.fi.png new file mode 100644 index 0000000000..171a0b62de Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.fi.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.fr.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.fr.png new file mode 100644 index 0000000000..4dd991159c Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.fr.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.he.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.he.png new file mode 100644 index 0000000000..29edcb1a80 Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.he.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.hi.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.hi.png new file mode 100644 index 0000000000..96d76dc7f5 Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.hi.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.hk.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.hk.png new file mode 100644 index 0000000000..7dd9acc22c Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.hk.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.hr.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.hr.png new file mode 100644 index 0000000000..844c696895 Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.hr.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.hu.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.hu.png new file mode 100644 index 0000000000..fdbceb8271 Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.hu.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.id.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.id.png new file mode 100644 index 0000000000..e30a8ac0dd Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.id.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.it.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.it.png new file mode 100644 index 0000000000..c204838680 Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.it.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.ja.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.ja.png new file mode 100644 index 0000000000..6f7497f0e6 Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.ja.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.ko.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.ko.png new file mode 100644 index 0000000000..0845c027f6 Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.ko.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.mo.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.mo.png new file mode 100644 index 0000000000..4e2d5d3b9c Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.mo.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.mr.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.mr.png new file mode 100644 index 0000000000..9f311c0164 Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.mr.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.ms.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.ms.png new file mode 100644 index 0000000000..d11f5670ed Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.ms.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.ne.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.ne.png new file mode 100644 index 0000000000..5276be0012 Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.ne.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.nl.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.nl.png new file mode 100644 index 0000000000..bb372d4e08 Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.nl.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.no.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.no.png new file mode 100644 index 0000000000..8609825336 Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.no.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.pa.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.pa.png new file mode 100644 index 0000000000..a83609d2e9 Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.pa.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.pl.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.pl.png new file mode 100644 index 0000000000..7fa80cce16 Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.pl.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.pt.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.pt.png new file mode 100644 index 0000000000..bfcf781d0c Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.pt.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.ro.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.ro.png new file mode 100644 index 0000000000..eedb3c7896 Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.ro.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.ru.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.ru.png new file mode 100644 index 0000000000..183cfd9760 Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.ru.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.sk.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.sk.png new file mode 100644 index 0000000000..8dcbb11903 Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.sk.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.sl.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.sl.png new file mode 100644 index 0000000000..631abdfa79 Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.sl.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.sr.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.sr.png new file mode 100644 index 0000000000..dcf413a98b Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.sr.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.sv.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.sv.png new file mode 100644 index 0000000000..8805544dc3 Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.sv.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.sw.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.sw.png new file mode 100644 index 0000000000..2b2a4fdf06 Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.sw.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.th.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.th.png new file mode 100644 index 0000000000..b553b4563b Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.th.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.tl.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.tl.png new file mode 100644 index 0000000000..e760e52062 Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.tl.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.tr.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.tr.png new file mode 100644 index 0000000000..a3873991ae Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.tr.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.tw.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.tw.png new file mode 100644 index 0000000000..3b9db7088f Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.tw.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.ur.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.ur.png new file mode 100644 index 0000000000..b5aa7a665b Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.ur.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.vi.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.vi.png new file mode 100644 index 0000000000..5ada95268e Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.vi.png differ diff --git a/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.zh.png b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.zh.png new file mode 100644 index 0000000000..87c955707e Binary files /dev/null and b/translated_images/FineTuning.f93db4ecbdc85b4a20ff1198fb82f5e2daa3a1ee328733b17d603727db20f5c0.zh.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.ar.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.ar.png new file mode 100644 index 0000000000..b22e8f4cc7 Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.ar.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.bg.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.bg.png new file mode 100644 index 0000000000..10cf5f4a67 Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.bg.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.bn.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.bn.png new file mode 100644 index 0000000000..a50be691e7 Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.bn.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.br.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.br.png new file mode 100644 index 0000000000..78f518a398 Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.br.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.cs.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.cs.png new file mode 100644 index 0000000000..54a48b287a Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.cs.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.da.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.da.png new file mode 100644 index 0000000000..45df0f82c9 Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.da.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.de.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.de.png new file mode 100644 index 0000000000..7c71273e1d Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.de.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.el.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.el.png new file mode 100644 index 0000000000..fa0d786d88 Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.el.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.en.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.en.png new file mode 100644 index 0000000000..fb800168bd Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.en.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.es.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.es.png new file mode 100644 index 0000000000..e64ce8c4c1 Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.es.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.fa.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.fa.png new file mode 100644 index 0000000000..42fad0d56e Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.fa.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.fi.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.fi.png new file mode 100644 index 0000000000..25ce46f294 Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.fi.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.fr.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.fr.png new file mode 100644 index 0000000000..b170bec372 Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.fr.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.he.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.he.png new file mode 100644 index 0000000000..e265daa89b Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.he.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.hi.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.hi.png new file mode 100644 index 0000000000..691fc3735c Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.hi.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.hk.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.hk.png new file mode 100644 index 0000000000..e8b32ec3ee Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.hk.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.hr.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.hr.png new file mode 100644 index 0000000000..e2c36bfa09 Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.hr.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.hu.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.hu.png new file mode 100644 index 0000000000..e4162bf6f6 Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.hu.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.id.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.id.png new file mode 100644 index 0000000000..ecce6b8d5d Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.id.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.it.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.it.png new file mode 100644 index 0000000000..a3cccf5f67 Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.it.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.ja.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.ja.png new file mode 100644 index 0000000000..a2931f3e04 Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.ja.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.ko.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.ko.png new file mode 100644 index 0000000000..e0666e8db0 Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.ko.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.mo.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.mo.png new file mode 100644 index 0000000000..2f8c54b310 Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.mo.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.mr.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.mr.png new file mode 100644 index 0000000000..1220167844 Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.mr.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.ms.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.ms.png new file mode 100644 index 0000000000..71f5d6ca25 Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.ms.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.ne.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.ne.png new file mode 100644 index 0000000000..855dffc9d9 Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.ne.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.nl.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.nl.png new file mode 100644 index 0000000000..b88e9d4de0 Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.nl.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.no.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.no.png new file mode 100644 index 0000000000..9b2a57c16d Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.no.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.pa.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.pa.png new file mode 100644 index 0000000000..637f59c4ff Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.pa.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.pl.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.pl.png new file mode 100644 index 0000000000..fd178e6c92 Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.pl.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.pt.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.pt.png new file mode 100644 index 0000000000..c42bef159d Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.pt.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.ro.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.ro.png new file mode 100644 index 0000000000..af99300d62 Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.ro.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.ru.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.ru.png new file mode 100644 index 0000000000..caa79a27f7 Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.ru.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.sk.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.sk.png new file mode 100644 index 0000000000..c61d93ec76 Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.sk.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.sl.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.sl.png new file mode 100644 index 0000000000..d10794c664 Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.sl.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.sr.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.sr.png new file mode 100644 index 0000000000..4d7c70a4f3 Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.sr.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.sv.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.sv.png new file mode 100644 index 0000000000..52b17c9c4b Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.sv.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.sw.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.sw.png new file mode 100644 index 0000000000..5a3554c804 Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.sw.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.th.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.th.png new file mode 100644 index 0000000000..ae46278cce Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.th.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.tl.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.tl.png new file mode 100644 index 0000000000..1fe994380d Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.tl.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.tr.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.tr.png new file mode 100644 index 0000000000..8a1824b386 Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.tr.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.tw.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.tw.png new file mode 100644 index 0000000000..faf9f9805e Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.tw.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.ur.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.ur.png new file mode 100644 index 0000000000..b03f53ea3c Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.ur.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.vi.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.vi.png new file mode 100644 index 0000000000..9b8b8fbe47 Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.vi.png differ diff --git a/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.zh.png b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.zh.png new file mode 100644 index 0000000000..d7e6a2dfe0 Binary files /dev/null and b/translated_images/FoundationModel.1b89e9d94c6a60a9af557b1c0a10faa3a55c0cbc6bb357eb144512ab833d162c.zh.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.ar.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.ar.png new file mode 100644 index 0000000000..2e87062145 Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.ar.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.bg.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.bg.png new file mode 100644 index 0000000000..c0198196c7 Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.bg.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.bn.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.bn.png new file mode 100644 index 0000000000..69850c60b3 Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.bn.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.br.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.br.png new file mode 100644 index 0000000000..1dfd7b84c4 Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.br.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.cs.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.cs.png new file mode 100644 index 0000000000..72343c6292 Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.cs.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.da.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.da.png new file mode 100644 index 0000000000..66910eafa9 Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.da.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.de.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.de.png new file mode 100644 index 0000000000..2a7bbc309f Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.de.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.el.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.el.png new file mode 100644 index 0000000000..b1da770e3a Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.el.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.en.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.en.png new file mode 100644 index 0000000000..33cc7e13fe Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.en.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.es.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.es.png new file mode 100644 index 0000000000..068af1688f Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.es.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.fa.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.fa.png new file mode 100644 index 0000000000..caaeee8731 Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.fa.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.fi.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.fi.png new file mode 100644 index 0000000000..a15601d917 Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.fi.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.fr.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.fr.png new file mode 100644 index 0000000000..b36e0067bb Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.fr.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.he.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.he.png new file mode 100644 index 0000000000..3675f57f1f Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.he.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.hi.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.hi.png new file mode 100644 index 0000000000..72822e58f3 Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.hi.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.hk.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.hk.png new file mode 100644 index 0000000000..5c6ebbbeb8 Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.hk.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.hr.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.hr.png new file mode 100644 index 0000000000..16becaef6d Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.hr.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.hu.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.hu.png new file mode 100644 index 0000000000..81c17fd381 Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.hu.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.id.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.id.png new file mode 100644 index 0000000000..a43ff75da6 Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.id.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.it.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.it.png new file mode 100644 index 0000000000..949ff2cc70 Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.it.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.ja.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.ja.png new file mode 100644 index 0000000000..e8a72e8f9b Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.ja.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.ko.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.ko.png new file mode 100644 index 0000000000..fe4bc88c1c Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.ko.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.mo.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.mo.png new file mode 100644 index 0000000000..36c473abf3 Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.mo.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.mr.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.mr.png new file mode 100644 index 0000000000..558c767268 Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.mr.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.ms.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.ms.png new file mode 100644 index 0000000000..b5a131bd66 Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.ms.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.ne.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.ne.png new file mode 100644 index 0000000000..460bd2bf2b Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.ne.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.nl.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.nl.png new file mode 100644 index 0000000000..02946231aa Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.nl.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.no.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.no.png new file mode 100644 index 0000000000..5fd8612eab Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.no.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.pa.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.pa.png new file mode 100644 index 0000000000..c85ca9b052 Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.pa.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.pl.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.pl.png new file mode 100644 index 0000000000..5a89f6dbf8 Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.pl.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.pt.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.pt.png new file mode 100644 index 0000000000..a8270e9f2c Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.pt.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.ro.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.ro.png new file mode 100644 index 0000000000..3e1714d131 Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.ro.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.ru.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.ru.png new file mode 100644 index 0000000000..b49d6a1f51 Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.ru.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.sk.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.sk.png new file mode 100644 index 0000000000..0461a40878 Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.sk.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.sl.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.sl.png new file mode 100644 index 0000000000..a93b4b1d2c Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.sl.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.sr.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.sr.png new file mode 100644 index 0000000000..38658684b4 Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.sr.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.sv.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.sv.png new file mode 100644 index 0000000000..03b5360c6f Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.sv.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.sw.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.sw.png new file mode 100644 index 0000000000..34fedfaaf2 Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.sw.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.th.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.th.png new file mode 100644 index 0000000000..c220d32aba Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.th.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.tl.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.tl.png new file mode 100644 index 0000000000..edbe5cc7ed Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.tl.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.tr.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.tr.png new file mode 100644 index 0000000000..6222b63b10 Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.tr.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.tw.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.tw.png new file mode 100644 index 0000000000..7cd36ef1ef Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.tw.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.ur.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.ur.png new file mode 100644 index 0000000000..fe208bad26 Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.ur.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.vi.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.vi.png new file mode 100644 index 0000000000..52fcad85a7 Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.vi.png differ diff --git a/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.zh.png b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.zh.png new file mode 100644 index 0000000000..ae28addaaf Binary files /dev/null and b/translated_images/Function-Flow.01a723a374f79e5856d9915c39e16c59fa2a00c113698b22a28e616224f407e1.zh.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.ar.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.ar.png new file mode 100644 index 0000000000..8dca8fc6bf Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.ar.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.bg.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.bg.png new file mode 100644 index 0000000000..6c39e132b2 Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.bg.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.bn.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.bn.png new file mode 100644 index 0000000000..7ba8fb66ff Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.bn.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.br.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.br.png new file mode 100644 index 0000000000..5a255fc865 Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.br.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.cs.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.cs.png new file mode 100644 index 0000000000..8caefa6c02 Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.cs.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.da.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.da.png new file mode 100644 index 0000000000..206d1ae3f7 Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.da.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.de.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.de.png new file mode 100644 index 0000000000..6965f8ed03 Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.de.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.el.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.el.png new file mode 100644 index 0000000000..f51a1c7726 Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.el.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.en.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.en.png new file mode 100644 index 0000000000..0391b23aaa Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.en.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.es.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.es.png new file mode 100644 index 0000000000..335a07b490 Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.es.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.fa.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.fa.png new file mode 100644 index 0000000000..7768b594d9 Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.fa.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.fi.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.fi.png new file mode 100644 index 0000000000..7d1302647f Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.fi.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.fr.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.fr.png new file mode 100644 index 0000000000..fc5ac21cac Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.fr.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.he.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.he.png new file mode 100644 index 0000000000..bd54b1aa4b Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.he.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.hi.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.hi.png new file mode 100644 index 0000000000..02819c1de1 Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.hi.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.hk.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.hk.png new file mode 100644 index 0000000000..c1fc56a426 Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.hk.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.hr.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.hr.png new file mode 100644 index 0000000000..2becefa494 Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.hr.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.hu.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.hu.png new file mode 100644 index 0000000000..eb03c1b608 Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.hu.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.id.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.id.png new file mode 100644 index 0000000000..85a0d46239 Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.id.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.it.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.it.png new file mode 100644 index 0000000000..89eaeaaba3 Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.it.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.ja.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.ja.png new file mode 100644 index 0000000000..6e73cfa90e Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.ja.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.ko.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.ko.png new file mode 100644 index 0000000000..6da5b117ae Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.ko.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.mo.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.mo.png new file mode 100644 index 0000000000..08aa1ca6c2 Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.mo.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.mr.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.mr.png new file mode 100644 index 0000000000..860453e52e Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.mr.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.ms.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.ms.png new file mode 100644 index 0000000000..3e965974dd Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.ms.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.ne.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.ne.png new file mode 100644 index 0000000000..cc6d7fccfa Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.ne.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.nl.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.nl.png new file mode 100644 index 0000000000..57cea72047 Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.nl.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.no.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.no.png new file mode 100644 index 0000000000..7fce1a2dc6 Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.no.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.pa.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.pa.png new file mode 100644 index 0000000000..0876119b1e Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.pa.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.pl.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.pl.png new file mode 100644 index 0000000000..65ec4b8a82 Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.pl.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.pt.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.pt.png new file mode 100644 index 0000000000..1036f06d76 Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.pt.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.ro.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.ro.png new file mode 100644 index 0000000000..446c45adff Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.ro.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.ru.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.ru.png new file mode 100644 index 0000000000..5084abfab6 Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.ru.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.sk.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.sk.png new file mode 100644 index 0000000000..9f0eacb48f Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.sk.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.sl.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.sl.png new file mode 100644 index 0000000000..96ea146b0d Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.sl.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.sr.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.sr.png new file mode 100644 index 0000000000..307bca3323 Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.sr.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.sv.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.sv.png new file mode 100644 index 0000000000..f52ab78fcd Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.sv.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.sw.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.sw.png new file mode 100644 index 0000000000..86f2f52841 Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.sw.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.th.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.th.png new file mode 100644 index 0000000000..39d539cc92 Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.th.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.tl.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.tl.png new file mode 100644 index 0000000000..72bfe54232 Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.tl.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.tr.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.tr.png new file mode 100644 index 0000000000..0be66b48e6 Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.tr.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.tw.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.tw.png new file mode 100644 index 0000000000..77437d035c Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.tw.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.ur.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.ur.png new file mode 100644 index 0000000000..bb2c2244d7 Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.ur.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.vi.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.vi.png new file mode 100644 index 0000000000..21b0376b72 Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.vi.png differ diff --git a/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.zh.png b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.zh.png new file mode 100644 index 0000000000..5d56e6bdde Binary files /dev/null and b/translated_images/GithubModels-getstarted.c73306cb6a2c0af438114a74b22a37ccd1ae5f8a0ad623a1d356c15409e7c69c.zh.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.ar.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.ar.png new file mode 100644 index 0000000000..51f47c5cf2 Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.ar.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.bg.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.bg.png new file mode 100644 index 0000000000..79383ff13a Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.bg.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.bn.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.bn.png new file mode 100644 index 0000000000..ae187c21ea Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.bn.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.br.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.br.png new file mode 100644 index 0000000000..41cd5b525f Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.br.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.cs.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.cs.png new file mode 100644 index 0000000000..13b661ffef Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.cs.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.da.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.da.png new file mode 100644 index 0000000000..7b68d493fc Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.da.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.de.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.de.png new file mode 100644 index 0000000000..4a27b334c6 Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.de.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.el.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.el.png new file mode 100644 index 0000000000..e45338b3cb Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.el.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.en.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.en.png new file mode 100644 index 0000000000..9d73e09fc3 Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.en.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.es.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.es.png new file mode 100644 index 0000000000..263bf21efc Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.es.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.fa.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.fa.png new file mode 100644 index 0000000000..37e7565e4a Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.fa.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.fi.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.fi.png new file mode 100644 index 0000000000..d61044fe65 Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.fi.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.fr.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.fr.png new file mode 100644 index 0000000000..4196901f26 Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.fr.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.he.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.he.png new file mode 100644 index 0000000000..f0821f9ebc Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.he.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.hi.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.hi.png new file mode 100644 index 0000000000..8c1632bb22 Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.hi.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.hk.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.hk.png new file mode 100644 index 0000000000..03c6c0c3d7 Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.hk.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.hr.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.hr.png new file mode 100644 index 0000000000..da4c0ec8e9 Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.hr.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.hu.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.hu.png new file mode 100644 index 0000000000..c8cc7d4f46 Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.hu.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.id.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.id.png new file mode 100644 index 0000000000..cc18b1b637 Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.id.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.it.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.it.png new file mode 100644 index 0000000000..fb453989eb Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.it.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.ja.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.ja.png new file mode 100644 index 0000000000..935878cec5 Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.ja.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.ko.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.ko.png new file mode 100644 index 0000000000..af4a713d29 Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.ko.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.mo.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.mo.png new file mode 100644 index 0000000000..4a8c553de0 Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.mo.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.mr.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.mr.png new file mode 100644 index 0000000000..c8728e7aa7 Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.mr.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.ms.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.ms.png new file mode 100644 index 0000000000..f8860663ed Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.ms.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.ne.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.ne.png new file mode 100644 index 0000000000..a1f227cf45 Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.ne.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.nl.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.nl.png new file mode 100644 index 0000000000..3a39b38f1a Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.nl.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.no.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.no.png new file mode 100644 index 0000000000..8e6a294221 Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.no.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.pa.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.pa.png new file mode 100644 index 0000000000..80553e3d3c Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.pa.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.pl.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.pl.png new file mode 100644 index 0000000000..c2e03eab8e Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.pl.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.pt.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.pt.png new file mode 100644 index 0000000000..ca5f50c0fc Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.pt.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.ro.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.ro.png new file mode 100644 index 0000000000..a420212f59 Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.ro.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.ru.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.ru.png new file mode 100644 index 0000000000..e07022a882 Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.ru.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.sk.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.sk.png new file mode 100644 index 0000000000..273979ca72 Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.sk.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.sl.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.sl.png new file mode 100644 index 0000000000..c609b5b624 Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.sl.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.sr.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.sr.png new file mode 100644 index 0000000000..74e35dbe09 Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.sr.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.sv.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.sv.png new file mode 100644 index 0000000000..84a0cad40c Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.sv.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.sw.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.sw.png new file mode 100644 index 0000000000..8b9d04dbfb Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.sw.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.th.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.th.png new file mode 100644 index 0000000000..253771d541 Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.th.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.tl.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.tl.png new file mode 100644 index 0000000000..3fb76ec054 Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.tl.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.tr.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.tr.png new file mode 100644 index 0000000000..b65ae1821a Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.tr.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.tw.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.tw.png new file mode 100644 index 0000000000..56408f6325 Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.tw.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.ur.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.ur.png new file mode 100644 index 0000000000..f5d616be39 Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.ur.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.vi.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.vi.png new file mode 100644 index 0000000000..2c36a38228 Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.vi.png differ diff --git a/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.zh.png b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.zh.png new file mode 100644 index 0000000000..525b529d13 Binary files /dev/null and b/translated_images/GithubModels-modelcard.928c606375a7efabe276ee3c6bf35853f4fbebd8a8aee67e1c413c9063e1202d.zh.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.ar.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.ar.png new file mode 100644 index 0000000000..68e32d64d2 Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.ar.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.bg.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.bg.png new file mode 100644 index 0000000000..01532a4a4c Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.bg.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.bn.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.bn.png new file mode 100644 index 0000000000..0035da28d2 Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.bn.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.br.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.br.png new file mode 100644 index 0000000000..c39fd2d780 Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.br.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.cs.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.cs.png new file mode 100644 index 0000000000..b773f19e69 Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.cs.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.da.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.da.png new file mode 100644 index 0000000000..18d8bf5f34 Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.da.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.de.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.de.png new file mode 100644 index 0000000000..a5bece4689 Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.de.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.el.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.el.png new file mode 100644 index 0000000000..9707396628 Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.el.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.en.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.en.png new file mode 100644 index 0000000000..7c061da4e5 Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.en.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.es.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.es.png new file mode 100644 index 0000000000..84c1ee1193 Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.es.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.fa.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.fa.png new file mode 100644 index 0000000000..99c12af566 Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.fa.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.fi.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.fi.png new file mode 100644 index 0000000000..7239ce993a Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.fi.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.fr.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.fr.png new file mode 100644 index 0000000000..b27cfb7d94 Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.fr.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.he.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.he.png new file mode 100644 index 0000000000..bb6e74fa4b Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.he.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.hi.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.hi.png new file mode 100644 index 0000000000..c446c8d656 Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.hi.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.hk.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.hk.png new file mode 100644 index 0000000000..5ca060eb2a Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.hk.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.hr.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.hr.png new file mode 100644 index 0000000000..b4bb95aab7 Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.hr.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.hu.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.hu.png new file mode 100644 index 0000000000..454700af36 Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.hu.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.id.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.id.png new file mode 100644 index 0000000000..85ab284d8e Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.id.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.it.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.it.png new file mode 100644 index 0000000000..ebbfd3f880 Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.it.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.ja.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.ja.png new file mode 100644 index 0000000000..452236a6fc Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.ja.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.ko.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.ko.png new file mode 100644 index 0000000000..160a3095f3 Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.ko.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.mo.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.mo.png new file mode 100644 index 0000000000..077b53cad1 Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.mo.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.mr.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.mr.png new file mode 100644 index 0000000000..646262fe5e Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.mr.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.ms.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.ms.png new file mode 100644 index 0000000000..0886cc0193 Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.ms.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.ne.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.ne.png new file mode 100644 index 0000000000..2b324932b7 Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.ne.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.nl.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.nl.png new file mode 100644 index 0000000000..115f778545 Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.nl.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.no.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.no.png new file mode 100644 index 0000000000..10a4f6d34c Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.no.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.pa.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.pa.png new file mode 100644 index 0000000000..1520560d33 Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.pa.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.pl.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.pl.png new file mode 100644 index 0000000000..9c46f94168 Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.pl.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.pt.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.pt.png new file mode 100644 index 0000000000..9446f4c8f5 Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.pt.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.ro.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.ro.png new file mode 100644 index 0000000000..28880d0f50 Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.ro.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.ru.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.ru.png new file mode 100644 index 0000000000..853b3aeb32 Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.ru.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.sk.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.sk.png new file mode 100644 index 0000000000..4b0787295d Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.sk.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.sl.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.sl.png new file mode 100644 index 0000000000..300f23a041 Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.sl.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.sr.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.sr.png new file mode 100644 index 0000000000..578c57e07d Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.sr.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.sv.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.sv.png new file mode 100644 index 0000000000..a91dafb310 Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.sv.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.sw.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.sw.png new file mode 100644 index 0000000000..31fd2647b3 Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.sw.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.th.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.th.png new file mode 100644 index 0000000000..727aa524ab Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.th.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.tl.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.tl.png new file mode 100644 index 0000000000..528e42e9c5 Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.tl.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.tr.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.tr.png new file mode 100644 index 0000000000..5769e1438c Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.tr.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.tw.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.tw.png new file mode 100644 index 0000000000..d4e044864c Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.tw.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.ur.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.ur.png new file mode 100644 index 0000000000..23fb2c264c Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.ur.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.vi.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.vi.png new file mode 100644 index 0000000000..3efb5a428d Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.vi.png differ diff --git a/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.zh.png b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.zh.png new file mode 100644 index 0000000000..84363540cc Binary files /dev/null and b/translated_images/GithubModels-plagroundcode.7b7ffd1d55d817953d60cb2cceeb482a13eea86fcf3df7caf65bb3553a4cecfa.zh.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.ar.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.ar.png new file mode 100644 index 0000000000..2348abb491 Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.ar.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.bg.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.bg.png new file mode 100644 index 0000000000..e1d7cdad2c Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.bg.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.bn.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.bn.png new file mode 100644 index 0000000000..71ee856dcf Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.bn.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.br.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.br.png new file mode 100644 index 0000000000..04111a9475 Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.br.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.cs.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.cs.png new file mode 100644 index 0000000000..8b227d9257 Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.cs.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.da.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.da.png new file mode 100644 index 0000000000..5f35d9f734 Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.da.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.de.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.de.png new file mode 100644 index 0000000000..0fda1d161e Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.de.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.el.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.el.png new file mode 100644 index 0000000000..2ddb977fb3 Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.el.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.en.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.en.png new file mode 100644 index 0000000000..dc62319f99 Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.en.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.es.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.es.png new file mode 100644 index 0000000000..0ce094c707 Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.es.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.fa.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.fa.png new file mode 100644 index 0000000000..69ec996f87 Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.fa.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.fi.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.fi.png new file mode 100644 index 0000000000..b0e32347f9 Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.fi.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.fr.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.fr.png new file mode 100644 index 0000000000..5499e3c95f Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.fr.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.he.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.he.png new file mode 100644 index 0000000000..2ec039bf46 Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.he.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.hi.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.hi.png new file mode 100644 index 0000000000..091011b175 Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.hi.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.hk.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.hk.png new file mode 100644 index 0000000000..eed2634bde Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.hk.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.hr.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.hr.png new file mode 100644 index 0000000000..b25e4005be Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.hr.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.hu.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.hu.png new file mode 100644 index 0000000000..5d3a9e6450 Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.hu.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.id.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.id.png new file mode 100644 index 0000000000..4ab22102e2 Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.id.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.it.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.it.png new file mode 100644 index 0000000000..dc70069d64 Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.it.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.ja.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.ja.png new file mode 100644 index 0000000000..9a1a6f4e47 Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.ja.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.ko.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.ko.png new file mode 100644 index 0000000000..43508ca18d Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.ko.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.mo.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.mo.png new file mode 100644 index 0000000000..776f77deca Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.mo.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.mr.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.mr.png new file mode 100644 index 0000000000..d4512f0926 Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.mr.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.ms.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.ms.png new file mode 100644 index 0000000000..c04dc65ff3 Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.ms.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.ne.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.ne.png new file mode 100644 index 0000000000..24a40f6bf4 Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.ne.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.nl.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.nl.png new file mode 100644 index 0000000000..10b282aa52 Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.nl.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.no.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.no.png new file mode 100644 index 0000000000..65fee2e77e Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.no.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.pa.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.pa.png new file mode 100644 index 0000000000..7089c3eada Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.pa.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.pl.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.pl.png new file mode 100644 index 0000000000..6d0778ffb5 Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.pl.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.pt.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.pt.png new file mode 100644 index 0000000000..726e0e10e6 Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.pt.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.ro.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.ro.png new file mode 100644 index 0000000000..0667bedc87 Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.ro.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.ru.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.ru.png new file mode 100644 index 0000000000..0280569280 Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.ru.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.sk.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.sk.png new file mode 100644 index 0000000000..2ac058ce61 Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.sk.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.sl.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.sl.png new file mode 100644 index 0000000000..dbc858ee73 Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.sl.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.sr.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.sr.png new file mode 100644 index 0000000000..1ea6e2b72b Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.sr.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.sv.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.sv.png new file mode 100644 index 0000000000..af9770579e Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.sv.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.sw.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.sw.png new file mode 100644 index 0000000000..3d58586554 Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.sw.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.th.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.th.png new file mode 100644 index 0000000000..6032db0a33 Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.th.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.tl.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.tl.png new file mode 100644 index 0000000000..0d63e0156b Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.tl.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.tr.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.tr.png new file mode 100644 index 0000000000..5cb737aa26 Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.tr.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.tw.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.tw.png new file mode 100644 index 0000000000..49f84fc503 Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.tw.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.ur.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.ur.png new file mode 100644 index 0000000000..c9c0fdb90a Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.ur.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.vi.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.vi.png new file mode 100644 index 0000000000..716a20a6df Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.vi.png differ diff --git a/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.zh.png b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.zh.png new file mode 100644 index 0000000000..6666b85ba2 Binary files /dev/null and b/translated_images/GithubModelsMainScreen.7fd705b74cd5732cdc214c3b070f16866ec7b463f1fe29852f047ae3298f3539.zh.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.ar.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.ar.png new file mode 100644 index 0000000000..b0f27ac2d5 Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.ar.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.bg.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.bg.png new file mode 100644 index 0000000000..49c992117f Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.bg.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.bn.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.bn.png new file mode 100644 index 0000000000..8c3abb35be Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.bn.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.br.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.br.png new file mode 100644 index 0000000000..471dacd623 Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.br.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.cs.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.cs.png new file mode 100644 index 0000000000..81ad8517e2 Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.cs.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.da.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.da.png new file mode 100644 index 0000000000..88514396b6 Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.da.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.de.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.de.png new file mode 100644 index 0000000000..d3d7f5b5f7 Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.de.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.el.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.el.png new file mode 100644 index 0000000000..5374bb3afe Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.el.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.en.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.en.png new file mode 100644 index 0000000000..67b32ea399 Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.en.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.es.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.es.png new file mode 100644 index 0000000000..b181b414b6 Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.es.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.fa.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.fa.png new file mode 100644 index 0000000000..897cb0ae1d Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.fa.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.fi.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.fi.png new file mode 100644 index 0000000000..a036efcfdd Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.fi.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.fr.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.fr.png new file mode 100644 index 0000000000..33e59ec314 Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.fr.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.he.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.he.png new file mode 100644 index 0000000000..ba4aa03135 Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.he.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.hi.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.hi.png new file mode 100644 index 0000000000..54fb5f379d Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.hi.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.hk.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.hk.png new file mode 100644 index 0000000000..6d12e9f35f Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.hk.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.hr.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.hr.png new file mode 100644 index 0000000000..3a028612de Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.hr.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.hu.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.hu.png new file mode 100644 index 0000000000..ae0734670b Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.hu.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.id.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.id.png new file mode 100644 index 0000000000..6b6c197655 Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.id.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.it.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.it.png new file mode 100644 index 0000000000..77f18c5fcd Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.it.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.ja.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.ja.png new file mode 100644 index 0000000000..42ccab49d4 Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.ja.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.ko.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.ko.png new file mode 100644 index 0000000000..472c24e0e2 Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.ko.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.mo.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.mo.png new file mode 100644 index 0000000000..ea40dfa7af Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.mo.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.mr.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.mr.png new file mode 100644 index 0000000000..cf26794201 Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.mr.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.ms.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.ms.png new file mode 100644 index 0000000000..7765b2f3e8 Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.ms.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.ne.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.ne.png new file mode 100644 index 0000000000..a4e0582a87 Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.ne.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.nl.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.nl.png new file mode 100644 index 0000000000..31458fb55e Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.nl.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.no.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.no.png new file mode 100644 index 0000000000..0b4ff695bb Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.no.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.pa.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.pa.png new file mode 100644 index 0000000000..78836fe3d8 Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.pa.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.pl.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.pl.png new file mode 100644 index 0000000000..d630f1bc5f Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.pl.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.pt.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.pt.png new file mode 100644 index 0000000000..0626b6168c Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.pt.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.ro.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.ro.png new file mode 100644 index 0000000000..f9ffdeebd7 Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.ro.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.ru.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.ru.png new file mode 100644 index 0000000000..6a60fe6c5c Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.ru.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.sk.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.sk.png new file mode 100644 index 0000000000..8391f62b18 Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.sk.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.sl.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.sl.png new file mode 100644 index 0000000000..337a3c4b78 Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.sl.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.sr.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.sr.png new file mode 100644 index 0000000000..e8e2a3186b Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.sr.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.sv.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.sv.png new file mode 100644 index 0000000000..0762a2b022 Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.sv.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.sw.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.sw.png new file mode 100644 index 0000000000..9a68b8510e Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.sw.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.th.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.th.png new file mode 100644 index 0000000000..cf21263180 Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.th.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.tl.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.tl.png new file mode 100644 index 0000000000..191f041336 Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.tl.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.tr.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.tr.png new file mode 100644 index 0000000000..4743b9ea26 Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.tr.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.tw.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.tw.png new file mode 100644 index 0000000000..6577468ff7 Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.tw.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.ur.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.ur.png new file mode 100644 index 0000000000..b2fd2983ea Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.ur.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.vi.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.vi.png new file mode 100644 index 0000000000..e482cc19c1 Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.vi.png differ diff --git a/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.zh.png b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.zh.png new file mode 100644 index 0000000000..b719852f93 Binary files /dev/null and b/translated_images/Image.fffee8e361cc35ed409975f6fc85502ae3d20b8eb01273cd327294e26318a049.zh.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.ar.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.ar.png new file mode 100644 index 0000000000..4fdad28796 Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.ar.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.bg.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.bg.png new file mode 100644 index 0000000000..7a07add6af Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.bg.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.bn.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.bn.png new file mode 100644 index 0000000000..ab670e5241 Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.bn.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.br.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.br.png new file mode 100644 index 0000000000..fb4b2933e3 Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.br.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.cs.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.cs.png new file mode 100644 index 0000000000..fce642c7e1 Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.cs.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.da.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.da.png new file mode 100644 index 0000000000..4a0954c630 Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.da.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.de.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.de.png new file mode 100644 index 0000000000..091ac51c18 Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.de.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.el.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.el.png new file mode 100644 index 0000000000..dedc90b7a5 Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.el.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.en.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.en.png new file mode 100644 index 0000000000..ba538886e4 Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.en.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.es.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.es.png new file mode 100644 index 0000000000..7e23fe3517 Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.es.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.fa.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.fa.png new file mode 100644 index 0000000000..28876e39d5 Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.fa.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.fi.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.fi.png new file mode 100644 index 0000000000..86556c06f0 Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.fi.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.fr.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.fr.png new file mode 100644 index 0000000000..52f3a4b099 Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.fr.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.he.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.he.png new file mode 100644 index 0000000000..3f52f47cc1 Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.he.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.hi.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.hi.png new file mode 100644 index 0000000000..beacd71271 Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.hi.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.hk.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.hk.png new file mode 100644 index 0000000000..e0d49ebf01 Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.hk.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.hr.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.hr.png new file mode 100644 index 0000000000..d544cd87b3 Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.hr.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.hu.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.hu.png new file mode 100644 index 0000000000..b5777051ad Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.hu.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.id.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.id.png new file mode 100644 index 0000000000..5fef553ddd Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.id.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.it.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.it.png new file mode 100644 index 0000000000..362887d3a2 Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.it.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.ja.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.ja.png new file mode 100644 index 0000000000..76e514fdad Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.ja.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.ko.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.ko.png new file mode 100644 index 0000000000..1c03bbdeb1 Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.ko.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.mo.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.mo.png new file mode 100644 index 0000000000..81a914ea14 Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.mo.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.mr.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.mr.png new file mode 100644 index 0000000000..229516ccc3 Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.mr.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.ms.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.ms.png new file mode 100644 index 0000000000..1cb2cc3a4e Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.ms.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.ne.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.ne.png new file mode 100644 index 0000000000..08dd6645dc Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.ne.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.nl.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.nl.png new file mode 100644 index 0000000000..2de1ee379f Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.nl.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.no.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.no.png new file mode 100644 index 0000000000..f9a4ee3f38 Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.no.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.pa.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.pa.png new file mode 100644 index 0000000000..52b94c93f6 Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.pa.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.pl.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.pl.png new file mode 100644 index 0000000000..3715b19ada Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.pl.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.pt.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.pt.png new file mode 100644 index 0000000000..4a6b405348 Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.pt.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.ro.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.ro.png new file mode 100644 index 0000000000..de5c503f51 Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.ro.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.ru.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.ru.png new file mode 100644 index 0000000000..ee1e6add08 Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.ru.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.sk.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.sk.png new file mode 100644 index 0000000000..69e15c9c05 Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.sk.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.sl.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.sl.png new file mode 100644 index 0000000000..717d33e411 Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.sl.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.sr.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.sr.png new file mode 100644 index 0000000000..7cd5360b3c Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.sr.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.sv.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.sv.png new file mode 100644 index 0000000000..bf7855fbd3 Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.sv.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.sw.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.sw.png new file mode 100644 index 0000000000..65451c4334 Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.sw.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.th.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.th.png new file mode 100644 index 0000000000..5acd1ba798 Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.th.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.tl.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.tl.png new file mode 100644 index 0000000000..6f64980c78 Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.tl.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.tr.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.tr.png new file mode 100644 index 0000000000..7fa12f9610 Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.tr.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.tw.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.tw.png new file mode 100644 index 0000000000..42b40236f8 Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.tw.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.ur.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.ur.png new file mode 100644 index 0000000000..fdf1db4f2f Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.ur.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.vi.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.vi.png new file mode 100644 index 0000000000..5b6624ac25 Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.vi.png differ diff --git a/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.zh.png b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.zh.png new file mode 100644 index 0000000000..e4a6f431a9 Binary files /dev/null and b/translated_images/LLM-Flow.7df9f166be50aa324705f2ccddc04a27cfc7b87e57b1fbe65eb534059a3b8b66.zh.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.ar.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.ar.png new file mode 100644 index 0000000000..0548962b04 Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.ar.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.bg.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.bg.png new file mode 100644 index 0000000000..5e6be745f4 Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.bg.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.bn.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.bn.png new file mode 100644 index 0000000000..9e660749b4 Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.bn.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.br.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.br.png new file mode 100644 index 0000000000..7cd584bd95 Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.br.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.cs.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.cs.png new file mode 100644 index 0000000000..d4cb92130c Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.cs.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.da.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.da.png new file mode 100644 index 0000000000..c1700b4cb0 Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.da.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.de.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.de.png new file mode 100644 index 0000000000..7b133776bb Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.de.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.el.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.el.png new file mode 100644 index 0000000000..9e7fee7318 Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.el.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.en.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.en.png new file mode 100644 index 0000000000..51999ee922 Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.en.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.es.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.es.png new file mode 100644 index 0000000000..da8a8a7516 Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.es.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.fa.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.fa.png new file mode 100644 index 0000000000..d9014866a5 Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.fa.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.fi.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.fi.png new file mode 100644 index 0000000000..bf442f27b8 Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.fi.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.fr.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.fr.png new file mode 100644 index 0000000000..fb8da7c773 Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.fr.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.he.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.he.png new file mode 100644 index 0000000000..35d9ea8a7b Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.he.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.hi.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.hi.png new file mode 100644 index 0000000000..9d73650a42 Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.hi.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.hk.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.hk.png new file mode 100644 index 0000000000..d8a186b9d2 Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.hk.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.hr.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.hr.png new file mode 100644 index 0000000000..419ff08133 Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.hr.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.hu.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.hu.png new file mode 100644 index 0000000000..e39b4942ed Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.hu.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.id.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.id.png new file mode 100644 index 0000000000..e59fe2a0a7 Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.id.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.it.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.it.png new file mode 100644 index 0000000000..a878efee1a Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.it.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.ja.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.ja.png new file mode 100644 index 0000000000..e6f9758af5 Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.ja.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.ko.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.ko.png new file mode 100644 index 0000000000..caa0e50f5d Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.ko.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.mo.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.mo.png new file mode 100644 index 0000000000..f57554eb8b Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.mo.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.mr.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.mr.png new file mode 100644 index 0000000000..5430e5ef87 Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.mr.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.ms.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.ms.png new file mode 100644 index 0000000000..3458716dad Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.ms.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.ne.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.ne.png new file mode 100644 index 0000000000..2286578cec Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.ne.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.nl.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.nl.png new file mode 100644 index 0000000000..27fcd6f49b Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.nl.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.no.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.no.png new file mode 100644 index 0000000000..c23a561172 Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.no.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.pa.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.pa.png new file mode 100644 index 0000000000..73dd6d62df Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.pa.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.pl.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.pl.png new file mode 100644 index 0000000000..2aa2c65818 Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.pl.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.pt.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.pt.png new file mode 100644 index 0000000000..a9dbe48a1f Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.pt.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.ro.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.ro.png new file mode 100644 index 0000000000..ee60dda798 Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.ro.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.ru.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.ru.png new file mode 100644 index 0000000000..f690445547 Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.ru.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.sk.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.sk.png new file mode 100644 index 0000000000..af333dc5ab Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.sk.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.sl.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.sl.png new file mode 100644 index 0000000000..32f203359b Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.sl.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.sr.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.sr.png new file mode 100644 index 0000000000..88b35f62d6 Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.sr.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.sv.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.sv.png new file mode 100644 index 0000000000..87770ff1fc Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.sv.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.sw.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.sw.png new file mode 100644 index 0000000000..7218ff7135 Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.sw.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.th.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.th.png new file mode 100644 index 0000000000..bd293911fb Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.th.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.tl.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.tl.png new file mode 100644 index 0000000000..6921eaf839 Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.tl.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.tr.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.tr.png new file mode 100644 index 0000000000..55452951f1 Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.tr.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.tw.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.tw.png new file mode 100644 index 0000000000..2450006e5f Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.tw.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.ur.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.ur.png new file mode 100644 index 0000000000..89a93e472c Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.ur.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.vi.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.vi.png new file mode 100644 index 0000000000..af48df3746 Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.vi.png differ diff --git a/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.zh.png b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.zh.png new file mode 100644 index 0000000000..81a623f3f4 Binary files /dev/null and b/translated_images/Llama1.53aa7a5947a98d461151ab907e9f53fe830b1ea017af9f94a312659f9287ad5b.zh.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.ar.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.ar.png new file mode 100644 index 0000000000..503c6cfbe8 Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.ar.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.bg.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.bg.png new file mode 100644 index 0000000000..ab62eae536 Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.bg.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.bn.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.bn.png new file mode 100644 index 0000000000..f55e1a1bfe Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.bn.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.br.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.br.png new file mode 100644 index 0000000000..4b60435080 Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.br.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.cs.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.cs.png new file mode 100644 index 0000000000..94afed9520 Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.cs.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.da.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.da.png new file mode 100644 index 0000000000..159f17d22f Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.da.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.de.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.de.png new file mode 100644 index 0000000000..5f6a585649 Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.de.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.el.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.el.png new file mode 100644 index 0000000000..5d0072311d Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.el.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.en.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.en.png new file mode 100644 index 0000000000..96cdbb4210 Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.en.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.es.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.es.png new file mode 100644 index 0000000000..a934d3a411 Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.es.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.fa.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.fa.png new file mode 100644 index 0000000000..d102ba4080 Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.fa.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.fi.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.fi.png new file mode 100644 index 0000000000..d1e1b2d0e4 Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.fi.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.fr.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.fr.png new file mode 100644 index 0000000000..c002e32daf Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.fr.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.he.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.he.png new file mode 100644 index 0000000000..2a6e8d126b Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.he.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.hi.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.hi.png new file mode 100644 index 0000000000..1fa4039a36 Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.hi.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.hk.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.hk.png new file mode 100644 index 0000000000..829f8c48df Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.hk.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.hr.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.hr.png new file mode 100644 index 0000000000..5cd08b527c Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.hr.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.hu.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.hu.png new file mode 100644 index 0000000000..d6e7a55522 Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.hu.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.id.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.id.png new file mode 100644 index 0000000000..659e5d23d2 Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.id.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.it.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.it.png new file mode 100644 index 0000000000..1f4849c5b8 Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.it.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.ja.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.ja.png new file mode 100644 index 0000000000..3762e1ec27 Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.ja.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.ko.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.ko.png new file mode 100644 index 0000000000..870a3cf103 Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.ko.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.mo.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.mo.png new file mode 100644 index 0000000000..2f1e9a0123 Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.mo.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.mr.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.mr.png new file mode 100644 index 0000000000..8f8ec5a9f4 Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.mr.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.ms.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.ms.png new file mode 100644 index 0000000000..bfb222ac67 Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.ms.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.ne.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.ne.png new file mode 100644 index 0000000000..cce9667db2 Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.ne.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.nl.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.nl.png new file mode 100644 index 0000000000..36ba5a7bc6 Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.nl.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.no.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.no.png new file mode 100644 index 0000000000..00b6444384 Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.no.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.pa.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.pa.png new file mode 100644 index 0000000000..706bcba64e Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.pa.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.pl.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.pl.png new file mode 100644 index 0000000000..df17d61ba6 Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.pl.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.pt.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.pt.png new file mode 100644 index 0000000000..977d723ceb Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.pt.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.ro.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.ro.png new file mode 100644 index 0000000000..3c66d74fe2 Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.ro.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.ru.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.ru.png new file mode 100644 index 0000000000..bb8b3304d7 Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.ru.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.sk.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.sk.png new file mode 100644 index 0000000000..cd132fe892 Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.sk.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.sl.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.sl.png new file mode 100644 index 0000000000..9dc21a3ed4 Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.sl.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.sr.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.sr.png new file mode 100644 index 0000000000..d3b6e02ef0 Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.sr.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.sv.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.sv.png new file mode 100644 index 0000000000..2f3bf0fb48 Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.sv.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.sw.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.sw.png new file mode 100644 index 0000000000..532da2bc31 Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.sw.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.th.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.th.png new file mode 100644 index 0000000000..0d55ae9a30 Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.th.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.tl.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.tl.png new file mode 100644 index 0000000000..56dc7ebf18 Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.tl.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.tr.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.tr.png new file mode 100644 index 0000000000..d7e777d512 Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.tr.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.tw.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.tw.png new file mode 100644 index 0000000000..ac55e79975 Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.tw.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.ur.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.ur.png new file mode 100644 index 0000000000..7de74f8538 Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.ur.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.vi.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.vi.png new file mode 100644 index 0000000000..f468e42886 Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.vi.png differ diff --git a/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.zh.png b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.zh.png new file mode 100644 index 0000000000..9ced1d2248 Binary files /dev/null and b/translated_images/Llama2.a8016ed704c94d0b12b67f27094aa6416779b314bff84cca8c122c1e3244fa2e.zh.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.ar.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.ar.png new file mode 100644 index 0000000000..f2b8118d66 Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.ar.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.bg.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.bg.png new file mode 100644 index 0000000000..57465eab8f Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.bg.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.bn.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.bn.png new file mode 100644 index 0000000000..3a6bd44681 Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.bn.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.br.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.br.png new file mode 100644 index 0000000000..3f821de402 Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.br.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.cs.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.cs.png new file mode 100644 index 0000000000..e361e4892d Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.cs.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.da.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.da.png new file mode 100644 index 0000000000..cc7df6e2be Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.da.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.de.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.de.png new file mode 100644 index 0000000000..3c5248b22f Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.de.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.el.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.el.png new file mode 100644 index 0000000000..ff9a30ee5d Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.el.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.en.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.en.png new file mode 100644 index 0000000000..3a6b209951 Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.en.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.es.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.es.png new file mode 100644 index 0000000000..b88e2bc354 Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.es.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.fa.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.fa.png new file mode 100644 index 0000000000..d6477240e3 Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.fa.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.fi.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.fi.png new file mode 100644 index 0000000000..93cffb7841 Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.fi.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.fr.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.fr.png new file mode 100644 index 0000000000..e3caada4bd Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.fr.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.he.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.he.png new file mode 100644 index 0000000000..2abe472608 Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.he.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.hi.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.hi.png new file mode 100644 index 0000000000..779131f4f0 Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.hi.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.hk.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.hk.png new file mode 100644 index 0000000000..b395b841a0 Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.hk.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.hr.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.hr.png new file mode 100644 index 0000000000..09c00d8ad9 Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.hr.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.hu.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.hu.png new file mode 100644 index 0000000000..39c7e8b0c9 Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.hu.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.id.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.id.png new file mode 100644 index 0000000000..f9f18c115e Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.id.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.it.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.it.png new file mode 100644 index 0000000000..590da77e82 Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.it.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.ja.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.ja.png new file mode 100644 index 0000000000..d95cce334d Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.ja.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.ko.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.ko.png new file mode 100644 index 0000000000..a869055ad3 Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.ko.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.mo.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.mo.png new file mode 100644 index 0000000000..fb88e5d73d Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.mo.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.mr.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.mr.png new file mode 100644 index 0000000000..5c01785be7 Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.mr.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.ms.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.ms.png new file mode 100644 index 0000000000..88eb3c1654 Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.ms.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.ne.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.ne.png new file mode 100644 index 0000000000..a640ca835b Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.ne.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.nl.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.nl.png new file mode 100644 index 0000000000..1596bfe3b0 Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.nl.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.no.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.no.png new file mode 100644 index 0000000000..6d86fcf199 Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.no.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.pa.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.pa.png new file mode 100644 index 0000000000..18f2ac2215 Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.pa.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.pl.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.pl.png new file mode 100644 index 0000000000..5af69e968c Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.pl.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.pt.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.pt.png new file mode 100644 index 0000000000..b6316f8928 Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.pt.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.ro.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.ro.png new file mode 100644 index 0000000000..a9ca81ca1a Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.ro.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.ru.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.ru.png new file mode 100644 index 0000000000..d1134c12f4 Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.ru.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.sk.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.sk.png new file mode 100644 index 0000000000..5f11d5ac1b Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.sk.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.sl.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.sl.png new file mode 100644 index 0000000000..df5db6348d Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.sl.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.sr.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.sr.png new file mode 100644 index 0000000000..8fda5b0489 Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.sr.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.sv.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.sv.png new file mode 100644 index 0000000000..5b015148ee Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.sv.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.sw.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.sw.png new file mode 100644 index 0000000000..f74e3b3857 Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.sw.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.th.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.th.png new file mode 100644 index 0000000000..c2a5ab8577 Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.th.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.tl.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.tl.png new file mode 100644 index 0000000000..b80baf5b68 Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.tl.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.tr.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.tr.png new file mode 100644 index 0000000000..8bb3ba0183 Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.tr.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.tw.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.tw.png new file mode 100644 index 0000000000..30e0b77b60 Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.tw.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.ur.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.ur.png new file mode 100644 index 0000000000..c8f4e5ca98 Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.ur.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.vi.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.vi.png new file mode 100644 index 0000000000..271ca016e9 Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.vi.png differ diff --git a/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.zh.png b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.zh.png new file mode 100644 index 0000000000..73bc2c57fe Binary files /dev/null and b/translated_images/Llama3.561df49f066651c7d47489821abd85ea4a122da735b220c3c1ec3008e0ddaaf3.zh.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.ar.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.ar.png new file mode 100644 index 0000000000..e07adf6691 Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.ar.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.bg.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.bg.png new file mode 100644 index 0000000000..1298dc4b85 Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.bg.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.bn.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.bn.png new file mode 100644 index 0000000000..04d5cf8d5a Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.bn.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.br.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.br.png new file mode 100644 index 0000000000..b83b708a92 Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.br.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.cs.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.cs.png new file mode 100644 index 0000000000..12d87d329e Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.cs.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.da.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.da.png new file mode 100644 index 0000000000..978b7b606b Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.da.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.de.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.de.png new file mode 100644 index 0000000000..2c2fbef435 Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.de.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.el.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.el.png new file mode 100644 index 0000000000..75c61a14c2 Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.el.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.en.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.en.png new file mode 100644 index 0000000000..4a4ad19a66 Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.en.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.es.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.es.png new file mode 100644 index 0000000000..2b83918367 Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.es.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.fa.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.fa.png new file mode 100644 index 0000000000..65ed2569ea Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.fa.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.fi.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.fi.png new file mode 100644 index 0000000000..af2fff91db Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.fi.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.fr.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.fr.png new file mode 100644 index 0000000000..b8f6ab2e1d Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.fr.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.he.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.he.png new file mode 100644 index 0000000000..46956240fa Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.he.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.hi.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.hi.png new file mode 100644 index 0000000000..5c327ef1f4 Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.hi.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.hk.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.hk.png new file mode 100644 index 0000000000..8cd3f429db Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.hk.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.hr.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.hr.png new file mode 100644 index 0000000000..3972e58107 Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.hr.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.hu.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.hu.png new file mode 100644 index 0000000000..2830a78a83 Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.hu.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.id.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.id.png new file mode 100644 index 0000000000..874fe452a8 Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.id.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.it.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.it.png new file mode 100644 index 0000000000..1848b48f4f Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.it.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.ja.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.ja.png new file mode 100644 index 0000000000..0acf25dfab Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.ja.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.ko.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.ko.png new file mode 100644 index 0000000000..81c9eef51e Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.ko.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.mo.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.mo.png new file mode 100644 index 0000000000..2faf92266a Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.mo.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.mr.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.mr.png new file mode 100644 index 0000000000..03fe62dbd7 Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.mr.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.ms.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.ms.png new file mode 100644 index 0000000000..331671e4ec Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.ms.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.ne.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.ne.png new file mode 100644 index 0000000000..9c877d7ba7 Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.ne.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.nl.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.nl.png new file mode 100644 index 0000000000..d5f1ee188a Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.nl.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.no.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.no.png new file mode 100644 index 0000000000..165efe6461 Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.no.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.pa.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.pa.png new file mode 100644 index 0000000000..099c672f8e Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.pa.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.pl.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.pl.png new file mode 100644 index 0000000000..d471802a2f Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.pl.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.pt.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.pt.png new file mode 100644 index 0000000000..07b75abc18 Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.pt.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.ro.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.ro.png new file mode 100644 index 0000000000..2f1587beda Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.ro.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.ru.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.ru.png new file mode 100644 index 0000000000..b8168e5dff Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.ru.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.sk.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.sk.png new file mode 100644 index 0000000000..4b2b13d042 Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.sk.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.sl.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.sl.png new file mode 100644 index 0000000000..44a7a84949 Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.sl.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.sr.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.sr.png new file mode 100644 index 0000000000..c60451fec0 Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.sr.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.sv.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.sv.png new file mode 100644 index 0000000000..bfbcb8ee63 Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.sv.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.sw.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.sw.png new file mode 100644 index 0000000000..a20eb127ba Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.sw.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.th.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.th.png new file mode 100644 index 0000000000..81c5f0a6a9 Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.th.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.tl.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.tl.png new file mode 100644 index 0000000000..924662dca7 Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.tl.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.tr.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.tr.png new file mode 100644 index 0000000000..014af27fe7 Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.tr.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.tw.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.tw.png new file mode 100644 index 0000000000..f36925b9e2 Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.tw.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.ur.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.ur.png new file mode 100644 index 0000000000..7f1c811d1c Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.ur.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.vi.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.vi.png new file mode 100644 index 0000000000..8a0926160a Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.vi.png differ diff --git a/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.zh.png b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.zh.png new file mode 100644 index 0000000000..4500f9ef50 Binary files /dev/null and b/translated_images/Llama4.fb327c2a5864553d0d966a029e723b67e1dc301de61f9e53555233bb5d29e870.zh.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.ar.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.ar.png new file mode 100644 index 0000000000..548a048448 Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.ar.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.bg.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.bg.png new file mode 100644 index 0000000000..c53447aefe Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.bg.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.bn.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.bn.png new file mode 100644 index 0000000000..26d5899430 Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.bn.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.br.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.br.png new file mode 100644 index 0000000000..22a4b2c868 Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.br.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.cs.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.cs.png new file mode 100644 index 0000000000..41c9a01722 Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.cs.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.da.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.da.png new file mode 100644 index 0000000000..3dce729ed4 Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.da.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.de.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.de.png new file mode 100644 index 0000000000..dfd5234965 Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.de.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.el.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.el.png new file mode 100644 index 0000000000..def910a0a1 Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.el.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.en.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.en.png new file mode 100644 index 0000000000..855ad8a8cb Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.en.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.es.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.es.png new file mode 100644 index 0000000000..ebd239b464 Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.es.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.fa.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.fa.png new file mode 100644 index 0000000000..fdb7b87b23 Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.fa.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.fi.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.fi.png new file mode 100644 index 0000000000..cc3ae2a67e Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.fi.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.fr.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.fr.png new file mode 100644 index 0000000000..37250af382 Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.fr.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.he.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.he.png new file mode 100644 index 0000000000..a18db576cb Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.he.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.hi.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.hi.png new file mode 100644 index 0000000000..44619ac2f9 Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.hi.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.hk.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.hk.png new file mode 100644 index 0000000000..47bd48f240 Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.hk.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.hr.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.hr.png new file mode 100644 index 0000000000..9a860d971b Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.hr.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.hu.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.hu.png new file mode 100644 index 0000000000..c40fbeeaff Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.hu.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.id.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.id.png new file mode 100644 index 0000000000..2d20b455ba Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.id.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.it.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.it.png new file mode 100644 index 0000000000..11bd062228 Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.it.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.ja.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.ja.png new file mode 100644 index 0000000000..85c4234bfe Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.ja.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.ko.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.ko.png new file mode 100644 index 0000000000..2e6da8a689 Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.ko.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.mo.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.mo.png new file mode 100644 index 0000000000..5b8bdb173c Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.mo.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.mr.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.mr.png new file mode 100644 index 0000000000..31beb543df Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.mr.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.ms.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.ms.png new file mode 100644 index 0000000000..223f9f91cb Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.ms.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.ne.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.ne.png new file mode 100644 index 0000000000..cd164d7b9f Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.ne.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.nl.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.nl.png new file mode 100644 index 0000000000..8142b47b67 Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.nl.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.no.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.no.png new file mode 100644 index 0000000000..06f038aff1 Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.no.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.pa.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.pa.png new file mode 100644 index 0000000000..09e7c0a207 Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.pa.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.pl.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.pl.png new file mode 100644 index 0000000000..65e4f989da Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.pl.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.pt.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.pt.png new file mode 100644 index 0000000000..e6c9df8261 Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.pt.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.ro.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.ro.png new file mode 100644 index 0000000000..5f3c8e52e7 Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.ro.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.ru.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.ru.png new file mode 100644 index 0000000000..cf3dd1daa1 Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.ru.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.sk.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.sk.png new file mode 100644 index 0000000000..69fbcc2831 Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.sk.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.sl.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.sl.png new file mode 100644 index 0000000000..18d9040a2a Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.sl.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.sr.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.sr.png new file mode 100644 index 0000000000..d23ded24c9 Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.sr.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.sv.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.sv.png new file mode 100644 index 0000000000..b1b41626ed Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.sv.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.sw.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.sw.png new file mode 100644 index 0000000000..737b243666 Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.sw.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.th.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.th.png new file mode 100644 index 0000000000..ae2632e85d Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.th.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.tl.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.tl.png new file mode 100644 index 0000000000..daf95f11c5 Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.tl.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.tr.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.tr.png new file mode 100644 index 0000000000..3551cd136d Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.tr.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.tw.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.tw.png new file mode 100644 index 0000000000..20ee277368 Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.tw.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.ur.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.ur.png new file mode 100644 index 0000000000..305ab45c8b Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.ur.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.vi.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.vi.png new file mode 100644 index 0000000000..412ef64a8a Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.vi.png differ diff --git a/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.zh.png b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.zh.png new file mode 100644 index 0000000000..5c26b541b2 Binary files /dev/null and b/translated_images/ModelBenchmarks.b3b4182f762db04b59267af64ce77cc936d38adf40fb032f12acec9063578008.zh.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.ar.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.ar.png new file mode 100644 index 0000000000..2ada844212 Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.ar.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.bg.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.bg.png new file mode 100644 index 0000000000..14b10a2297 Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.bg.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.bn.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.bn.png new file mode 100644 index 0000000000..0194d72db2 Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.bn.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.br.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.br.png new file mode 100644 index 0000000000..1e64509fbd Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.br.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.cs.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.cs.png new file mode 100644 index 0000000000..9c3f6418db Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.cs.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.da.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.da.png new file mode 100644 index 0000000000..196f8cfad5 Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.da.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.de.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.de.png new file mode 100644 index 0000000000..c108f06984 Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.de.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.el.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.el.png new file mode 100644 index 0000000000..8ab1ab9622 Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.el.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.en.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.en.png new file mode 100644 index 0000000000..7ece52958f Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.en.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.es.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.es.png new file mode 100644 index 0000000000..1b7e414aa1 Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.es.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.fa.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.fa.png new file mode 100644 index 0000000000..be126307d5 Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.fa.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.fi.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.fi.png new file mode 100644 index 0000000000..fea6450c64 Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.fi.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.fr.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.fr.png new file mode 100644 index 0000000000..71db1eb1a2 Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.fr.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.he.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.he.png new file mode 100644 index 0000000000..919cc41a5c Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.he.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.hi.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.hi.png new file mode 100644 index 0000000000..4b041fc402 Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.hi.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.hk.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.hk.png new file mode 100644 index 0000000000..39d4d2d7c4 Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.hk.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.hr.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.hr.png new file mode 100644 index 0000000000..3f1f4cdedb Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.hr.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.hu.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.hu.png new file mode 100644 index 0000000000..045f287867 Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.hu.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.id.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.id.png new file mode 100644 index 0000000000..5e5c8c9f3a Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.id.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.it.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.it.png new file mode 100644 index 0000000000..141cc34ce1 Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.it.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.ja.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.ja.png new file mode 100644 index 0000000000..527f637465 Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.ja.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.ko.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.ko.png new file mode 100644 index 0000000000..28b394073c Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.ko.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.mo.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.mo.png new file mode 100644 index 0000000000..471e65e30f Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.mo.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.mr.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.mr.png new file mode 100644 index 0000000000..184d0e5342 Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.mr.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.ms.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.ms.png new file mode 100644 index 0000000000..84433c8daf Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.ms.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.ne.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.ne.png new file mode 100644 index 0000000000..762c1e445f Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.ne.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.nl.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.nl.png new file mode 100644 index 0000000000..ad92c38c9e Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.nl.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.no.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.no.png new file mode 100644 index 0000000000..2465faef7f Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.no.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.pa.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.pa.png new file mode 100644 index 0000000000..7ae96d697b Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.pa.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.pl.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.pl.png new file mode 100644 index 0000000000..5f5fad4e7a Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.pl.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.pt.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.pt.png new file mode 100644 index 0000000000..3c4ac08907 Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.pt.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.ro.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.ro.png new file mode 100644 index 0000000000..e3e96ef515 Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.ro.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.ru.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.ru.png new file mode 100644 index 0000000000..d9b107b360 Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.ru.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.sk.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.sk.png new file mode 100644 index 0000000000..ba521e369c Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.sk.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.sl.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.sl.png new file mode 100644 index 0000000000..b339547017 Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.sl.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.sr.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.sr.png new file mode 100644 index 0000000000..050667ddf9 Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.sr.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.sv.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.sv.png new file mode 100644 index 0000000000..5f398d6e62 Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.sv.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.sw.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.sw.png new file mode 100644 index 0000000000..8487808f08 Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.sw.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.th.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.th.png new file mode 100644 index 0000000000..e36732207f Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.th.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.tl.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.tl.png new file mode 100644 index 0000000000..69f09e93f7 Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.tl.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.tr.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.tr.png new file mode 100644 index 0000000000..4184f27e9e Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.tr.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.tw.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.tw.png new file mode 100644 index 0000000000..fe90c25e54 Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.tw.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.ur.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.ur.png new file mode 100644 index 0000000000..ab3fa80b8a Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.ur.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.vi.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.vi.png new file mode 100644 index 0000000000..705823d704 Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.vi.png differ diff --git a/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.zh.png b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.zh.png new file mode 100644 index 0000000000..dda447a97f Binary files /dev/null and b/translated_images/ModelCard.8b25784bb406028655a12ea87d1ef3d52302e5d692ae4ec559c2dce7682027c7.zh.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.ar.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.ar.png new file mode 100644 index 0000000000..4bc7fb17dc Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.ar.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.bg.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.bg.png new file mode 100644 index 0000000000..8e8385bd45 Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.bg.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.bn.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.bn.png new file mode 100644 index 0000000000..1ad26b34b9 Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.bn.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.br.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.br.png new file mode 100644 index 0000000000..f68693ba1d Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.br.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.cs.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.cs.png new file mode 100644 index 0000000000..188446381c Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.cs.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.da.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.da.png new file mode 100644 index 0000000000..86c28bf69e Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.da.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.de.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.de.png new file mode 100644 index 0000000000..3800590196 Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.de.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.el.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.el.png new file mode 100644 index 0000000000..da903db962 Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.el.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.en.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.en.png new file mode 100644 index 0000000000..1b32a71c52 Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.en.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.es.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.es.png new file mode 100644 index 0000000000..ace69a9bd2 Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.es.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.fa.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.fa.png new file mode 100644 index 0000000000..6034bfd7f6 Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.fa.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.fi.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.fi.png new file mode 100644 index 0000000000..ee61ad1870 Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.fi.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.fr.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.fr.png new file mode 100644 index 0000000000..b4715012f1 Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.fr.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.he.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.he.png new file mode 100644 index 0000000000..9cf05e9d5b Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.he.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.hi.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.hi.png new file mode 100644 index 0000000000..33d3a28cb8 Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.hi.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.hk.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.hk.png new file mode 100644 index 0000000000..966e9429de Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.hk.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.hr.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.hr.png new file mode 100644 index 0000000000..bd112ff50d Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.hr.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.hu.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.hu.png new file mode 100644 index 0000000000..bf97337b94 Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.hu.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.id.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.id.png new file mode 100644 index 0000000000..4b37bac883 Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.id.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.it.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.it.png new file mode 100644 index 0000000000..ab8c4182b6 Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.it.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.ja.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.ja.png new file mode 100644 index 0000000000..a4354a1fab Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.ja.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.ko.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.ko.png new file mode 100644 index 0000000000..0176f6cd6b Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.ko.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.mo.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.mo.png new file mode 100644 index 0000000000..5e388746e6 Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.mo.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.mr.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.mr.png new file mode 100644 index 0000000000..9cd3724029 Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.mr.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.ms.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.ms.png new file mode 100644 index 0000000000..54bf65e401 Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.ms.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.ne.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.ne.png new file mode 100644 index 0000000000..a857398d81 Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.ne.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.nl.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.nl.png new file mode 100644 index 0000000000..9828c031a6 Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.nl.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.no.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.no.png new file mode 100644 index 0000000000..0d58e26ff6 Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.no.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.pa.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.pa.png new file mode 100644 index 0000000000..15a719d1ed Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.pa.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.pl.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.pl.png new file mode 100644 index 0000000000..50287c4527 Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.pl.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.pt.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.pt.png new file mode 100644 index 0000000000..39b4b182c9 Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.pt.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.ro.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.ro.png new file mode 100644 index 0000000000..95e114d4ad Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.ro.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.ru.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.ru.png new file mode 100644 index 0000000000..29056a0329 Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.ru.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.sk.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.sk.png new file mode 100644 index 0000000000..a4eb4ccb6c Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.sk.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.sl.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.sl.png new file mode 100644 index 0000000000..b53fee48d1 Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.sl.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.sr.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.sr.png new file mode 100644 index 0000000000..4c16ce9866 Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.sr.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.sv.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.sv.png new file mode 100644 index 0000000000..5d6c6786f6 Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.sv.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.sw.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.sw.png new file mode 100644 index 0000000000..29d6c52620 Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.sw.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.th.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.th.png new file mode 100644 index 0000000000..e9a96214cb Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.th.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.tl.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.tl.png new file mode 100644 index 0000000000..0e9045cdc5 Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.tl.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.tr.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.tr.png new file mode 100644 index 0000000000..d00647194f Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.tr.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.tw.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.tw.png new file mode 100644 index 0000000000..57d56e9059 Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.tw.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.ur.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.ur.png new file mode 100644 index 0000000000..2ecdc85d3a Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.ur.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.vi.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.vi.png new file mode 100644 index 0000000000..34d9360371 Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.vi.png differ diff --git a/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.zh.png b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.zh.png new file mode 100644 index 0000000000..96df05bc3a Binary files /dev/null and b/translated_images/ModelDeploy.7c78c2c5841567abf820d5da8354be454d3f20b62168905645aeac99e50c2562.zh.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.ar.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.ar.png new file mode 100644 index 0000000000..64ff5a5bbf Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.ar.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.bg.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.bg.png new file mode 100644 index 0000000000..e30b36d8fe Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.bg.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.bn.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.bn.png new file mode 100644 index 0000000000..3ff4e90e45 Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.bn.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.br.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.br.png new file mode 100644 index 0000000000..a767a87464 Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.br.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.cs.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.cs.png new file mode 100644 index 0000000000..8ee3fcc724 Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.cs.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.da.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.da.png new file mode 100644 index 0000000000..54bd550da8 Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.da.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.de.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.de.png new file mode 100644 index 0000000000..07cc1dd8a5 Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.de.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.el.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.el.png new file mode 100644 index 0000000000..f12650b808 Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.el.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.en.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.en.png new file mode 100644 index 0000000000..47fb12c986 Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.en.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.es.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.es.png new file mode 100644 index 0000000000..92f8ce3cde Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.es.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.fa.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.fa.png new file mode 100644 index 0000000000..fba9538c3e Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.fa.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.fi.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.fi.png new file mode 100644 index 0000000000..052c26ebca Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.fi.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.fr.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.fr.png new file mode 100644 index 0000000000..b1831200f3 Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.fr.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.he.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.he.png new file mode 100644 index 0000000000..bc567ee00c Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.he.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.hi.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.hi.png new file mode 100644 index 0000000000..25544eb4a4 Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.hi.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.hk.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.hk.png new file mode 100644 index 0000000000..8539d7980c Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.hk.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.hr.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.hr.png new file mode 100644 index 0000000000..0269abdc10 Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.hr.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.hu.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.hu.png new file mode 100644 index 0000000000..7923a38e15 Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.hu.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.id.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.id.png new file mode 100644 index 0000000000..10b5cbd6de Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.id.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.it.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.it.png new file mode 100644 index 0000000000..08dc230f85 Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.it.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.ja.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.ja.png new file mode 100644 index 0000000000..f9d1d49f74 Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.ja.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.ko.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.ko.png new file mode 100644 index 0000000000..c24f04783b Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.ko.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.mo.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.mo.png new file mode 100644 index 0000000000..0cc4461ee9 Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.mo.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.mr.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.mr.png new file mode 100644 index 0000000000..02b578effa Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.mr.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.ms.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.ms.png new file mode 100644 index 0000000000..42eb365d6a Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.ms.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.ne.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.ne.png new file mode 100644 index 0000000000..d82682def7 Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.ne.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.nl.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.nl.png new file mode 100644 index 0000000000..6aa2801ddb Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.nl.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.no.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.no.png new file mode 100644 index 0000000000..a4fa68576b Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.no.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.pa.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.pa.png new file mode 100644 index 0000000000..426dbe2424 Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.pa.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.pl.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.pl.png new file mode 100644 index 0000000000..70551afca1 Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.pl.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.pt.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.pt.png new file mode 100644 index 0000000000..a3cfc13d8d Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.pt.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.ro.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.ro.png new file mode 100644 index 0000000000..8c7a7df45c Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.ro.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.ru.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.ru.png new file mode 100644 index 0000000000..7ada72e5ee Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.ru.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.sk.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.sk.png new file mode 100644 index 0000000000..4c378f452d Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.sk.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.sl.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.sl.png new file mode 100644 index 0000000000..000e94bd03 Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.sl.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.sr.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.sr.png new file mode 100644 index 0000000000..6d9a1abb0e Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.sr.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.sv.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.sv.png new file mode 100644 index 0000000000..99f4627d7c Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.sv.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.sw.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.sw.png new file mode 100644 index 0000000000..f26e59ef9e Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.sw.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.th.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.th.png new file mode 100644 index 0000000000..3e2ec7da0b Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.th.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.tl.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.tl.png new file mode 100644 index 0000000000..6aa3875534 Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.tl.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.tr.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.tr.png new file mode 100644 index 0000000000..579c9c7d3b Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.tr.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.tw.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.tw.png new file mode 100644 index 0000000000..af915839cf Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.tw.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.ur.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.ur.png new file mode 100644 index 0000000000..7529ca424a Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.ur.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.vi.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.vi.png new file mode 100644 index 0000000000..78c203e1c5 Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.vi.png differ diff --git a/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.zh.png b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.zh.png new file mode 100644 index 0000000000..0e32b5bf65 Binary files /dev/null and b/translated_images/Multimodal.41df52bb0de979b80e9643ba34f8f1b53d7791cebd88bceedda6497241495f27.zh.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.ar.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.ar.png new file mode 100644 index 0000000000..0f6e4b2104 Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.ar.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.bg.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.bg.png new file mode 100644 index 0000000000..7a89f01ec0 Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.bg.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.bn.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.bn.png new file mode 100644 index 0000000000..a21efc1567 Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.bn.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.br.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.br.png new file mode 100644 index 0000000000..9bcabff20b Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.br.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.cs.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.cs.png new file mode 100644 index 0000000000..2c69e11cdf Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.cs.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.da.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.da.png new file mode 100644 index 0000000000..245d9ba80c Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.da.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.de.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.de.png new file mode 100644 index 0000000000..e727de2102 Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.de.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.el.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.el.png new file mode 100644 index 0000000000..162a6715c1 Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.el.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.en.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.en.png new file mode 100644 index 0000000000..622b73bfed Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.en.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.es.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.es.png new file mode 100644 index 0000000000..cc2face58c Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.es.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.fa.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.fa.png new file mode 100644 index 0000000000..b80b43c30a Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.fa.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.fi.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.fi.png new file mode 100644 index 0000000000..298de01e04 Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.fi.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.fr.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.fr.png new file mode 100644 index 0000000000..370ceaa9a5 Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.fr.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.he.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.he.png new file mode 100644 index 0000000000..87fe191dd5 Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.he.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.hi.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.hi.png new file mode 100644 index 0000000000..d24fe73f5e Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.hi.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.hk.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.hk.png new file mode 100644 index 0000000000..c3e13d50bf Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.hk.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.hr.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.hr.png new file mode 100644 index 0000000000..3b7e9c63e4 Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.hr.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.hu.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.hu.png new file mode 100644 index 0000000000..23654fbe21 Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.hu.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.id.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.id.png new file mode 100644 index 0000000000..8a13659822 Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.id.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.it.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.it.png new file mode 100644 index 0000000000..6ffefcb2e8 Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.it.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.ja.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.ja.png new file mode 100644 index 0000000000..0449621e8f Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.ja.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.ko.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.ko.png new file mode 100644 index 0000000000..9eaf829284 Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.ko.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.mo.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.mo.png new file mode 100644 index 0000000000..189573776e Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.mo.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.mr.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.mr.png new file mode 100644 index 0000000000..5d1911f99a Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.mr.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.ms.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.ms.png new file mode 100644 index 0000000000..d63f85e1fe Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.ms.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.ne.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.ne.png new file mode 100644 index 0000000000..b17590f71a Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.ne.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.nl.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.nl.png new file mode 100644 index 0000000000..2b69067c3f Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.nl.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.no.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.no.png new file mode 100644 index 0000000000..4606eb9e35 Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.no.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.pa.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.pa.png new file mode 100644 index 0000000000..59b44f8eaf Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.pa.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.pl.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.pl.png new file mode 100644 index 0000000000..bf64effd1d Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.pl.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.pt.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.pt.png new file mode 100644 index 0000000000..8437b856df Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.pt.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.ro.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.ro.png new file mode 100644 index 0000000000..71e72f7c59 Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.ro.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.ru.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.ru.png new file mode 100644 index 0000000000..7401636e5c Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.ru.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.sk.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.sk.png new file mode 100644 index 0000000000..6aa933b5aa Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.sk.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.sl.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.sl.png new file mode 100644 index 0000000000..b5f468ccb4 Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.sl.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.sr.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.sr.png new file mode 100644 index 0000000000..4f86cb31ca Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.sr.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.sv.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.sv.png new file mode 100644 index 0000000000..af0526e377 Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.sv.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.sw.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.sw.png new file mode 100644 index 0000000000..f639751eb7 Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.sw.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.th.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.th.png new file mode 100644 index 0000000000..7f3961dfc0 Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.th.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.tl.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.tl.png new file mode 100644 index 0000000000..b632ccaa2b Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.tl.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.tr.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.tr.png new file mode 100644 index 0000000000..cb377e112c Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.tr.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.tw.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.tw.png new file mode 100644 index 0000000000..8cf63b0ce2 Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.tw.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.ur.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.ur.png new file mode 100644 index 0000000000..81165fee23 Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.ur.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.vi.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.vi.png new file mode 100644 index 0000000000..8435925eca Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.vi.png differ diff --git a/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.zh.png b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.zh.png new file mode 100644 index 0000000000..d3eee6d658 Binary files /dev/null and b/translated_images/Text.35cfbe12e08d5b5615cf7db5174fe477bf96f45c5b82d53c29523bd8b94bdc17.zh.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.ar.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.ar.png new file mode 100644 index 0000000000..dba35cc345 Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.ar.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.bg.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.bg.png new file mode 100644 index 0000000000..1317c8a492 Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.bg.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.bn.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.bn.png new file mode 100644 index 0000000000..be0cc9d1f9 Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.bn.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.br.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.br.png new file mode 100644 index 0000000000..011c2645b3 Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.br.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.cs.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.cs.png new file mode 100644 index 0000000000..36d70f2c9f Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.cs.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.da.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.da.png new file mode 100644 index 0000000000..0710b6de13 Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.da.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.de.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.de.png new file mode 100644 index 0000000000..4cf4aef970 Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.de.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.el.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.el.png new file mode 100644 index 0000000000..c24e0f1261 Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.el.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.en.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.en.png new file mode 100644 index 0000000000..a3c454bab1 Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.en.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.es.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.es.png new file mode 100644 index 0000000000..4c0a7ec1d9 Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.es.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.fa.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.fa.png new file mode 100644 index 0000000000..ee474b6eee Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.fa.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.fi.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.fi.png new file mode 100644 index 0000000000..352ae3dda2 Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.fi.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.fr.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.fr.png new file mode 100644 index 0000000000..58f3fb5140 Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.fr.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.he.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.he.png new file mode 100644 index 0000000000..1921d0da43 Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.he.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.hi.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.hi.png new file mode 100644 index 0000000000..37d02571a0 Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.hi.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.hk.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.hk.png new file mode 100644 index 0000000000..a66771ee3e Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.hk.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.hr.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.hr.png new file mode 100644 index 0000000000..08537482af Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.hr.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.hu.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.hu.png new file mode 100644 index 0000000000..9fdc08f81e Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.hu.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.id.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.id.png new file mode 100644 index 0000000000..b866d63216 Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.id.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.it.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.it.png new file mode 100644 index 0000000000..80c9308a27 Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.it.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.ja.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.ja.png new file mode 100644 index 0000000000..57fa8a4d41 Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.ja.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.ko.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.ko.png new file mode 100644 index 0000000000..ddcf144dac Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.ko.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.mo.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.mo.png new file mode 100644 index 0000000000..f5e237ed4a Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.mo.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.mr.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.mr.png new file mode 100644 index 0000000000..a91ba08052 Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.mr.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.ms.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.ms.png new file mode 100644 index 0000000000..61a00bc58f Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.ms.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.ne.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.ne.png new file mode 100644 index 0000000000..cffe0eb346 Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.ne.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.nl.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.nl.png new file mode 100644 index 0000000000..0d29863df0 Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.nl.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.no.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.no.png new file mode 100644 index 0000000000..d7beafeae1 Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.no.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.pa.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.pa.png new file mode 100644 index 0000000000..6cac8ab2a9 Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.pa.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.pl.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.pl.png new file mode 100644 index 0000000000..838497251e Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.pl.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.pt.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.pt.png new file mode 100644 index 0000000000..bc9a809a78 Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.pt.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.ro.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.ro.png new file mode 100644 index 0000000000..b34ff986b1 Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.ro.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.ru.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.ru.png new file mode 100644 index 0000000000..594fb45aa0 Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.ru.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.sk.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.sk.png new file mode 100644 index 0000000000..a6ae9d3658 Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.sk.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.sl.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.sl.png new file mode 100644 index 0000000000..0449dd0bc1 Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.sl.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.sr.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.sr.png new file mode 100644 index 0000000000..4d8bbbf913 Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.sr.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.sv.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.sv.png new file mode 100644 index 0000000000..83f8efed91 Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.sv.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.sw.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.sw.png new file mode 100644 index 0000000000..1116ae0ee4 Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.sw.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.th.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.th.png new file mode 100644 index 0000000000..77f6d66454 Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.th.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.tl.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.tl.png new file mode 100644 index 0000000000..6a85f6c65b Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.tl.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.tr.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.tr.png new file mode 100644 index 0000000000..8bfb541797 Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.tr.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.tw.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.tw.png new file mode 100644 index 0000000000..1e40965c07 Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.tw.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.ur.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.ur.png new file mode 100644 index 0000000000..8c5e6e5afe Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.ur.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.vi.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.vi.png new file mode 100644 index 0000000000..095095b7e3 Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.vi.png differ diff --git a/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.zh.png b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.zh.png new file mode 100644 index 0000000000..01ce9d39ef Binary files /dev/null and b/translated_images/ai-builder-models.f3ee8c064873d55cdfbcc9c633cdd8cf00843954019ad500795832eee420448e.zh.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.ar.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.ar.png new file mode 100644 index 0000000000..36aedf56aa Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.ar.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.bg.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.bg.png new file mode 100644 index 0000000000..c5f5469c7d Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.bg.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.bn.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.bn.png new file mode 100644 index 0000000000..593d153596 Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.bn.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.br.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.br.png new file mode 100644 index 0000000000..44ecf4067a Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.br.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.cs.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.cs.png new file mode 100644 index 0000000000..7170a84558 Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.cs.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.da.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.da.png new file mode 100644 index 0000000000..efa0248366 Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.da.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.de.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.de.png new file mode 100644 index 0000000000..da8641bc1c Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.de.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.el.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.el.png new file mode 100644 index 0000000000..cf15e76bae Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.el.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.en.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.en.png new file mode 100644 index 0000000000..f9b3f09a0d Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.en.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.es.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.es.png new file mode 100644 index 0000000000..87d1843725 Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.es.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.fa.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.fa.png new file mode 100644 index 0000000000..3e9ce489c1 Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.fa.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.fi.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.fi.png new file mode 100644 index 0000000000..9803967ef8 Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.fi.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.fr.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.fr.png new file mode 100644 index 0000000000..dd55c40ed1 Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.fr.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.he.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.he.png new file mode 100644 index 0000000000..7e0bc79566 Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.he.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.hi.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.hi.png new file mode 100644 index 0000000000..419071267d Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.hi.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.hk.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.hk.png new file mode 100644 index 0000000000..a244153846 Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.hk.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.hr.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.hr.png new file mode 100644 index 0000000000..5c260f736c Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.hr.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.hu.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.hu.png new file mode 100644 index 0000000000..58dbb6c828 Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.hu.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.id.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.id.png new file mode 100644 index 0000000000..04db223857 Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.id.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.it.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.it.png new file mode 100644 index 0000000000..c3e8cb9d12 Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.it.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.ja.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.ja.png new file mode 100644 index 0000000000..1f32cdf10f Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.ja.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.ko.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.ko.png new file mode 100644 index 0000000000..44ae159881 Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.ko.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.mo.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.mo.png new file mode 100644 index 0000000000..627c9031b3 Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.mo.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.mr.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.mr.png new file mode 100644 index 0000000000..6341b198c8 Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.mr.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.ms.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.ms.png new file mode 100644 index 0000000000..04db223857 Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.ms.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.ne.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.ne.png new file mode 100644 index 0000000000..5cb56b4935 Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.ne.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.nl.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.nl.png new file mode 100644 index 0000000000..55e27383df Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.nl.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.no.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.no.png new file mode 100644 index 0000000000..d5860187af Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.no.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.pa.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.pa.png new file mode 100644 index 0000000000..461335bb39 Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.pa.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.pl.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.pl.png new file mode 100644 index 0000000000..1ede2e1a7d Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.pl.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.pt.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.pt.png new file mode 100644 index 0000000000..10869abe87 Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.pt.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.ro.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.ro.png new file mode 100644 index 0000000000..becd0b8e8e Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.ro.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.ru.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.ru.png new file mode 100644 index 0000000000..f42a96621d Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.ru.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.sk.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.sk.png new file mode 100644 index 0000000000..8557c88a74 Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.sk.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.sl.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.sl.png new file mode 100644 index 0000000000..1074307309 Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.sl.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.sr.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.sr.png new file mode 100644 index 0000000000..019ed29b61 Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.sr.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.sv.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.sv.png new file mode 100644 index 0000000000..d31074bfee Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.sv.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.sw.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.sw.png new file mode 100644 index 0000000000..d1a6a67f7c Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.sw.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.th.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.th.png new file mode 100644 index 0000000000..93cf97be0d Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.th.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.tl.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.tl.png new file mode 100644 index 0000000000..cfa4933afc Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.tl.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.tr.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.tr.png new file mode 100644 index 0000000000..6c2d720e0b Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.tr.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.tw.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.tw.png new file mode 100644 index 0000000000..35b7b16aa9 Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.tw.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.ur.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.ur.png new file mode 100644 index 0000000000..5ec4e4e3e1 Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.ur.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.vi.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.vi.png new file mode 100644 index 0000000000..625bdbdc37 Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.vi.png differ diff --git a/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.zh.png b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.zh.png new file mode 100644 index 0000000000..2ba727d076 Binary files /dev/null and b/translated_images/android-chrome-192x192.d0370ffe535b2dc9ccdf2245223b62b10320626bb6993fbddbec60e7e5b3c895.zh.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.ar.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.ar.png new file mode 100644 index 0000000000..911ece2c21 Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.ar.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.bg.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.bg.png new file mode 100644 index 0000000000..91b8f40fd2 Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.bg.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.bn.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.bn.png new file mode 100644 index 0000000000..b2af02344c Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.bn.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.br.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.br.png new file mode 100644 index 0000000000..841ca815b3 Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.br.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.cs.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.cs.png new file mode 100644 index 0000000000..a46882a54e Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.cs.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.da.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.da.png new file mode 100644 index 0000000000..9984a9df86 Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.da.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.de.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.de.png new file mode 100644 index 0000000000..a06ec0ba5a Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.de.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.el.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.el.png new file mode 100644 index 0000000000..852abf9a01 Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.el.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.en.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.en.png new file mode 100644 index 0000000000..b289726489 Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.en.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.es.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.es.png new file mode 100644 index 0000000000..fa42971a10 Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.es.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.fa.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.fa.png new file mode 100644 index 0000000000..04820969f8 Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.fa.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.fi.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.fi.png new file mode 100644 index 0000000000..b47c3d6c6c Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.fi.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.fr.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.fr.png new file mode 100644 index 0000000000..73e3009cec Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.fr.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.he.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.he.png new file mode 100644 index 0000000000..3eb904ad86 Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.he.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.hi.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.hi.png new file mode 100644 index 0000000000..11119ed4a6 Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.hi.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.hk.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.hk.png new file mode 100644 index 0000000000..283f01158f Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.hk.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.hr.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.hr.png new file mode 100644 index 0000000000..78279d3c08 Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.hr.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.hu.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.hu.png new file mode 100644 index 0000000000..fedc54d742 Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.hu.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.id.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.id.png new file mode 100644 index 0000000000..d6634726c9 Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.id.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.it.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.it.png new file mode 100644 index 0000000000..e0cde5b653 Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.it.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.ja.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.ja.png new file mode 100644 index 0000000000..a7d1a2ac3d Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.ja.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.ko.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.ko.png new file mode 100644 index 0000000000..41e74df102 Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.ko.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.mo.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.mo.png new file mode 100644 index 0000000000..b105db763f Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.mo.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.mr.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.mr.png new file mode 100644 index 0000000000..ac97e006fc Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.mr.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.ms.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.ms.png new file mode 100644 index 0000000000..bcce0a28a2 Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.ms.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.ne.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.ne.png new file mode 100644 index 0000000000..c11aa6986b Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.ne.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.nl.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.nl.png new file mode 100644 index 0000000000..85b222615e Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.nl.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.no.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.no.png new file mode 100644 index 0000000000..85e1686160 Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.no.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.pa.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.pa.png new file mode 100644 index 0000000000..6ce9cd1ce3 Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.pa.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.pl.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.pl.png new file mode 100644 index 0000000000..df3dd80455 Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.pl.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.pt.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.pt.png new file mode 100644 index 0000000000..4408250530 Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.pt.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.ro.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.ro.png new file mode 100644 index 0000000000..ab896f17db Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.ro.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.ru.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.ru.png new file mode 100644 index 0000000000..7d1d0d9395 Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.ru.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.sk.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.sk.png new file mode 100644 index 0000000000..73893f9807 Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.sk.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.sl.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.sl.png new file mode 100644 index 0000000000..b6c58c0370 Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.sl.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.sr.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.sr.png new file mode 100644 index 0000000000..7cff4323e3 Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.sr.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.sv.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.sv.png new file mode 100644 index 0000000000..e1700559f9 Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.sv.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.sw.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.sw.png new file mode 100644 index 0000000000..8d6263d656 Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.sw.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.th.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.th.png new file mode 100644 index 0000000000..1f777688c9 Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.th.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.tl.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.tl.png new file mode 100644 index 0000000000..45bbe26f76 Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.tl.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.tr.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.tr.png new file mode 100644 index 0000000000..682423af05 Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.tr.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.tw.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.tw.png new file mode 100644 index 0000000000..3323f0c727 Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.tw.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.ur.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.ur.png new file mode 100644 index 0000000000..c279572714 Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.ur.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.vi.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.vi.png new file mode 100644 index 0000000000..2143de8810 Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.vi.png differ diff --git a/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.zh.png b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.zh.png new file mode 100644 index 0000000000..ce4f36187c Binary files /dev/null and b/translated_images/android-chrome-512x512.8a5ad12c8b15e6a17e48ee06cb79b79c6e1c086a790568f1b3ae75bf048bd277.zh.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.ar.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.ar.png new file mode 100644 index 0000000000..d673cef041 Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.ar.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.bg.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.bg.png new file mode 100644 index 0000000000..47de61356a Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.bg.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.bn.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.bn.png new file mode 100644 index 0000000000..cd9f9a6553 Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.bn.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.br.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.br.png new file mode 100644 index 0000000000..ef8c31059b Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.br.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.cs.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.cs.png new file mode 100644 index 0000000000..0ee6c2534c Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.cs.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.da.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.da.png new file mode 100644 index 0000000000..2094aaeda0 Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.da.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.de.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.de.png new file mode 100644 index 0000000000..b8aff6d091 Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.de.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.el.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.el.png new file mode 100644 index 0000000000..84c67de147 Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.el.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.en.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.en.png new file mode 100644 index 0000000000..d13f93b209 Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.en.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.es.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.es.png new file mode 100644 index 0000000000..7c07cbe2aa Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.es.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.fa.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.fa.png new file mode 100644 index 0000000000..14b132dcdc Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.fa.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.fi.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.fi.png new file mode 100644 index 0000000000..aa14d9d1ab Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.fi.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.fr.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.fr.png new file mode 100644 index 0000000000..25c382b0b8 Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.fr.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.he.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.he.png new file mode 100644 index 0000000000..2669faaef1 Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.he.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.hi.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.hi.png new file mode 100644 index 0000000000..944bc79a7f Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.hi.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.hk.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.hk.png new file mode 100644 index 0000000000..83592d2377 Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.hk.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.hr.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.hr.png new file mode 100644 index 0000000000..cd3f55222b Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.hr.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.hu.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.hu.png new file mode 100644 index 0000000000..01fc779344 Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.hu.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.id.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.id.png new file mode 100644 index 0000000000..c9db534a02 Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.id.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.it.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.it.png new file mode 100644 index 0000000000..b06bf2a272 Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.it.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.ja.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.ja.png new file mode 100644 index 0000000000..8e4b2b1794 Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.ja.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.ko.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.ko.png new file mode 100644 index 0000000000..4e6ce9b847 Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.ko.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.mo.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.mo.png new file mode 100644 index 0000000000..50bac49338 Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.mo.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.mr.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.mr.png new file mode 100644 index 0000000000..401066aa98 Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.mr.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.ms.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.ms.png new file mode 100644 index 0000000000..c9db534a02 Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.ms.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.ne.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.ne.png new file mode 100644 index 0000000000..a4cc433043 Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.ne.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.nl.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.nl.png new file mode 100644 index 0000000000..2dadd92f80 Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.nl.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.no.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.no.png new file mode 100644 index 0000000000..e5b99d84d8 Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.no.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.pa.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.pa.png new file mode 100644 index 0000000000..692854cb23 Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.pa.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.pl.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.pl.png new file mode 100644 index 0000000000..16a8c5a990 Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.pl.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.pt.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.pt.png new file mode 100644 index 0000000000..b9b7ef7891 Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.pt.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.ro.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.ro.png new file mode 100644 index 0000000000..9f11227c62 Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.ro.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.ru.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.ru.png new file mode 100644 index 0000000000..a00425e6e2 Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.ru.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.sk.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.sk.png new file mode 100644 index 0000000000..652b08fe0b Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.sk.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.sl.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.sl.png new file mode 100644 index 0000000000..1ce8006f9c Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.sl.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.sr.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.sr.png new file mode 100644 index 0000000000..bce2666680 Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.sr.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.sv.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.sv.png new file mode 100644 index 0000000000..08a5642372 Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.sv.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.sw.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.sw.png new file mode 100644 index 0000000000..3c439c66db Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.sw.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.th.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.th.png new file mode 100644 index 0000000000..7bbef38ed4 Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.th.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.tl.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.tl.png new file mode 100644 index 0000000000..026d335f1f Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.tl.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.tr.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.tr.png new file mode 100644 index 0000000000..c37d0292db Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.tr.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.tw.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.tw.png new file mode 100644 index 0000000000..3db2a389c0 Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.tw.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.ur.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.ur.png new file mode 100644 index 0000000000..4e6ce9b847 Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.ur.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.vi.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.vi.png new file mode 100644 index 0000000000..8016a2f0c7 Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.vi.png differ diff --git a/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.zh.png b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.zh.png new file mode 100644 index 0000000000..27e78f3af7 Binary files /dev/null and b/translated_images/apple-touch-icon.4141736e9af8f81d5f12bf2a19e654c677f7e621ea778b290e30927c31119db7.zh.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.ar.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.ar.png new file mode 100644 index 0000000000..b2a054b807 Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.ar.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.bg.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.bg.png new file mode 100644 index 0000000000..b321eb2604 Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.bg.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.bn.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.bn.png new file mode 100644 index 0000000000..22efe126ee Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.bn.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.br.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.br.png new file mode 100644 index 0000000000..c0fa9ef427 Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.br.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.cs.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.cs.png new file mode 100644 index 0000000000..eeb568d67a Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.cs.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.da.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.da.png new file mode 100644 index 0000000000..6a1edfc67b Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.da.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.de.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.de.png new file mode 100644 index 0000000000..4da11913e0 Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.de.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.el.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.el.png new file mode 100644 index 0000000000..16fb48ae13 Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.el.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.en.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.en.png new file mode 100644 index 0000000000..4baa4720d9 Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.en.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.es.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.es.png new file mode 100644 index 0000000000..77cb000417 Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.es.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.fa.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.fa.png new file mode 100644 index 0000000000..1779d4cd0f Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.fa.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.fi.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.fi.png new file mode 100644 index 0000000000..62a8f6f973 Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.fi.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.fr.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.fr.png new file mode 100644 index 0000000000..da416cf551 Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.fr.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.he.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.he.png new file mode 100644 index 0000000000..ed208d58fc Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.he.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.hi.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.hi.png new file mode 100644 index 0000000000..0a3fce8b04 Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.hi.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.hk.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.hk.png new file mode 100644 index 0000000000..cdb04cc3e9 Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.hk.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.hr.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.hr.png new file mode 100644 index 0000000000..4fd651b91d Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.hr.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.hu.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.hu.png new file mode 100644 index 0000000000..c8a92b01e7 Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.hu.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.id.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.id.png new file mode 100644 index 0000000000..cf0430ea92 Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.id.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.it.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.it.png new file mode 100644 index 0000000000..552bd1df52 Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.it.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.ja.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.ja.png new file mode 100644 index 0000000000..9b2031a028 Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.ja.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.ko.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.ko.png new file mode 100644 index 0000000000..50b73e1ce1 Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.ko.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.mo.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.mo.png new file mode 100644 index 0000000000..eb77574113 Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.mo.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.mr.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.mr.png new file mode 100644 index 0000000000..6cd42bc9db Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.mr.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.ms.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.ms.png new file mode 100644 index 0000000000..cc2a30d14d Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.ms.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.ne.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.ne.png new file mode 100644 index 0000000000..b527bc7acb Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.ne.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.nl.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.nl.png new file mode 100644 index 0000000000..348261ce30 Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.nl.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.no.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.no.png new file mode 100644 index 0000000000..2c2cfaa80e Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.no.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.pa.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.pa.png new file mode 100644 index 0000000000..cab0646185 Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.pa.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.pl.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.pl.png new file mode 100644 index 0000000000..15d45ca09d Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.pl.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.pt.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.pt.png new file mode 100644 index 0000000000..97b0885aec Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.pt.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.ro.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.ro.png new file mode 100644 index 0000000000..15829c2ae7 Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.ro.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.ru.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.ru.png new file mode 100644 index 0000000000..0275fe6e3c Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.ru.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.sk.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.sk.png new file mode 100644 index 0000000000..95b212ab9e Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.sk.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.sl.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.sl.png new file mode 100644 index 0000000000..39eb1a5b44 Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.sl.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.sr.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.sr.png new file mode 100644 index 0000000000..ab8a827d44 Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.sr.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.sv.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.sv.png new file mode 100644 index 0000000000..08744159e3 Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.sv.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.sw.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.sw.png new file mode 100644 index 0000000000..ce89670abe Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.sw.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.th.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.th.png new file mode 100644 index 0000000000..61f40fb1a8 Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.th.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.tl.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.tl.png new file mode 100644 index 0000000000..04034c636b Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.tl.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.tr.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.tr.png new file mode 100644 index 0000000000..b9bb7714d5 Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.tr.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.tw.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.tw.png new file mode 100644 index 0000000000..d11255d305 Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.tw.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.ur.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.ur.png new file mode 100644 index 0000000000..33a30274e7 Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.ur.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.vi.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.vi.png new file mode 100644 index 0000000000..cb0ce7ea49 Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.vi.png differ diff --git a/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.zh.png b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.zh.png new file mode 100644 index 0000000000..b6415715b5 Binary files /dev/null and b/translated_images/autogen.8ac57409019150ec5a17c6381a92863116b19acce02604b4bf5681225dee62eb.zh.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.ar.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.ar.png new file mode 100644 index 0000000000..044680c66b Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.ar.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.bg.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.bg.png new file mode 100644 index 0000000000..c831eca327 Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.bg.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.bn.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.bn.png new file mode 100644 index 0000000000..57384564d7 Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.bn.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.br.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.br.png new file mode 100644 index 0000000000..a7541f63fe Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.br.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.cs.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.cs.png new file mode 100644 index 0000000000..63097b9663 Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.cs.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.da.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.da.png new file mode 100644 index 0000000000..0f4d4c2018 Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.da.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.de.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.de.png new file mode 100644 index 0000000000..e775c7fafe Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.de.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.el.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.el.png new file mode 100644 index 0000000000..03fdb6723f Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.el.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.en.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.en.png new file mode 100644 index 0000000000..3f67766bf7 Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.en.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.es.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.es.png new file mode 100644 index 0000000000..583497f5a4 Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.es.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.fa.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.fa.png new file mode 100644 index 0000000000..8016947a06 Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.fa.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.fi.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.fi.png new file mode 100644 index 0000000000..8537df0bd7 Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.fi.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.fr.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.fr.png new file mode 100644 index 0000000000..66f42de184 Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.fr.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.he.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.he.png new file mode 100644 index 0000000000..b83e1e5472 Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.he.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.hi.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.hi.png new file mode 100644 index 0000000000..fbc6316427 Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.hi.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.hk.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.hk.png new file mode 100644 index 0000000000..e58df33a68 Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.hk.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.hr.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.hr.png new file mode 100644 index 0000000000..0e5791c28b Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.hr.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.hu.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.hu.png new file mode 100644 index 0000000000..b7c2aeacc9 Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.hu.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.id.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.id.png new file mode 100644 index 0000000000..b6405990ae Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.id.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.it.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.it.png new file mode 100644 index 0000000000..52530575b9 Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.it.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.ja.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.ja.png new file mode 100644 index 0000000000..f0558b6bb2 Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.ja.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.ko.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.ko.png new file mode 100644 index 0000000000..a34bc0a36c Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.ko.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.mo.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.mo.png new file mode 100644 index 0000000000..e0f25da6a0 Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.mo.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.mr.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.mr.png new file mode 100644 index 0000000000..91cd1b3953 Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.mr.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.ms.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.ms.png new file mode 100644 index 0000000000..447c6d4674 Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.ms.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.ne.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.ne.png new file mode 100644 index 0000000000..86202cafe7 Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.ne.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.nl.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.nl.png new file mode 100644 index 0000000000..230620f554 Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.nl.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.no.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.no.png new file mode 100644 index 0000000000..5f33188bc9 Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.no.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.pa.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.pa.png new file mode 100644 index 0000000000..fe74f670f8 Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.pa.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.pl.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.pl.png new file mode 100644 index 0000000000..d773454717 Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.pl.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.pt.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.pt.png new file mode 100644 index 0000000000..a62537d047 Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.pt.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.ro.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.ro.png new file mode 100644 index 0000000000..61d09e37bd Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.ro.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.ru.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.ru.png new file mode 100644 index 0000000000..d945e8a6d0 Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.ru.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.sk.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.sk.png new file mode 100644 index 0000000000..44880282fc Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.sk.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.sl.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.sl.png new file mode 100644 index 0000000000..1ee1167572 Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.sl.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.sr.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.sr.png new file mode 100644 index 0000000000..27b9d514bd Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.sr.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.sv.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.sv.png new file mode 100644 index 0000000000..e8fdf27416 Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.sv.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.sw.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.sw.png new file mode 100644 index 0000000000..b2e425a18b Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.sw.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.th.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.th.png new file mode 100644 index 0000000000..c29542bc21 Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.th.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.tl.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.tl.png new file mode 100644 index 0000000000..808d3a9353 Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.tl.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.tr.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.tr.png new file mode 100644 index 0000000000..8cc79d6247 Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.tr.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.tw.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.tw.png new file mode 100644 index 0000000000..be942d5781 Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.tw.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.ur.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.ur.png new file mode 100644 index 0000000000..8065b97f85 Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.ur.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.vi.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.vi.png new file mode 100644 index 0000000000..407ad3e348 Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.vi.png differ diff --git a/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.zh.png b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.zh.png new file mode 100644 index 0000000000..71b7c479e0 Binary files /dev/null and b/translated_images/bing1.6024fe7d103ff4b54c58b873654403a1e56f81010da05a1f0a210c5ac7a1b8b5.zh.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.ar.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.ar.png new file mode 100644 index 0000000000..11d70536b2 Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.ar.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.bg.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.bg.png new file mode 100644 index 0000000000..fdde78b2c3 Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.bg.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.bn.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.bn.png new file mode 100644 index 0000000000..02ba792289 Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.bn.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.br.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.br.png new file mode 100644 index 0000000000..b6d4a3e67d Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.br.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.cs.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.cs.png new file mode 100644 index 0000000000..89810d03c2 Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.cs.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.da.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.da.png new file mode 100644 index 0000000000..194fa88929 Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.da.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.de.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.de.png new file mode 100644 index 0000000000..f516ae9f31 Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.de.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.el.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.el.png new file mode 100644 index 0000000000..409963b2dd Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.el.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.en.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.en.png new file mode 100644 index 0000000000..ebc8f94a6d Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.en.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.es.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.es.png new file mode 100644 index 0000000000..9e72a9c2f2 Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.es.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.fa.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.fa.png new file mode 100644 index 0000000000..8a87b65774 Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.fa.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.fi.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.fi.png new file mode 100644 index 0000000000..fbb115cd9d Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.fi.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.fr.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.fr.png new file mode 100644 index 0000000000..c3d76cae93 Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.fr.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.he.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.he.png new file mode 100644 index 0000000000..bdffc24aec Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.he.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.hi.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.hi.png new file mode 100644 index 0000000000..9ac712d291 Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.hi.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.hk.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.hk.png new file mode 100644 index 0000000000..2baeb5caa1 Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.hk.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.hr.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.hr.png new file mode 100644 index 0000000000..92b462b0e8 Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.hr.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.hu.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.hu.png new file mode 100644 index 0000000000..be82ebb1f0 Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.hu.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.id.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.id.png new file mode 100644 index 0000000000..efc1867e20 Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.id.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.it.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.it.png new file mode 100644 index 0000000000..d14d94812c Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.it.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.ja.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.ja.png new file mode 100644 index 0000000000..423773c587 Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.ja.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.ko.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.ko.png new file mode 100644 index 0000000000..8e28a98dd4 Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.ko.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.mo.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.mo.png new file mode 100644 index 0000000000..659a49a153 Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.mo.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.mr.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.mr.png new file mode 100644 index 0000000000..53e1dab812 Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.mr.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.ms.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.ms.png new file mode 100644 index 0000000000..657850dfee Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.ms.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.ne.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.ne.png new file mode 100644 index 0000000000..1355c4f78e Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.ne.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.nl.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.nl.png new file mode 100644 index 0000000000..a9907d3a64 Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.nl.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.no.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.no.png new file mode 100644 index 0000000000..d1a0f3a1d5 Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.no.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.pa.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.pa.png new file mode 100644 index 0000000000..01e611b115 Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.pa.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.pl.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.pl.png new file mode 100644 index 0000000000..5eadf62136 Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.pl.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.pt.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.pt.png new file mode 100644 index 0000000000..a964c90bcf Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.pt.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.ro.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.ro.png new file mode 100644 index 0000000000..7b7af95a88 Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.ro.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.ru.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.ru.png new file mode 100644 index 0000000000..8c1e99fdb9 Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.ru.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.sk.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.sk.png new file mode 100644 index 0000000000..e59c141e03 Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.sk.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.sl.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.sl.png new file mode 100644 index 0000000000..e89a1ea55e Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.sl.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.sr.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.sr.png new file mode 100644 index 0000000000..61a75c98a7 Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.sr.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.sv.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.sv.png new file mode 100644 index 0000000000..d36244715f Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.sv.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.sw.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.sw.png new file mode 100644 index 0000000000..0fe58321a6 Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.sw.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.th.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.th.png new file mode 100644 index 0000000000..6c4a337035 Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.th.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.tl.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.tl.png new file mode 100644 index 0000000000..7e0e9e756c Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.tl.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.tr.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.tr.png new file mode 100644 index 0000000000..79639a2e7d Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.tr.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.tw.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.tw.png new file mode 100644 index 0000000000..ec6bbfb5f4 Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.tw.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.ur.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.ur.png new file mode 100644 index 0000000000..a89f3969a6 Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.ur.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.vi.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.vi.png new file mode 100644 index 0000000000..067daaf41e Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.vi.png differ diff --git a/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.zh.png b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.zh.png new file mode 100644 index 0000000000..ab3b6f1a72 Binary files /dev/null and b/translated_images/bing2.a01fd420e9d52912126965a59c1766e5865f4dd9aaa45408d525e717d0ef3cce.zh.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.ar.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.ar.png new file mode 100644 index 0000000000..aac1ffb873 Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.ar.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.bg.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.bg.png new file mode 100644 index 0000000000..fe0125f0c8 Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.bg.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.bn.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.bn.png new file mode 100644 index 0000000000..e6b73a34f8 Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.bn.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.br.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.br.png new file mode 100644 index 0000000000..d3ed398a2c Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.br.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.cs.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.cs.png new file mode 100644 index 0000000000..13572609df Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.cs.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.da.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.da.png new file mode 100644 index 0000000000..092d601da1 Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.da.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.de.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.de.png new file mode 100644 index 0000000000..04e475b756 Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.de.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.el.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.el.png new file mode 100644 index 0000000000..0283a3993e Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.el.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.en.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.en.png new file mode 100644 index 0000000000..868148624b Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.en.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.es.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.es.png new file mode 100644 index 0000000000..ccaa00f8a3 Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.es.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.fa.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.fa.png new file mode 100644 index 0000000000..2fce7efbd5 Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.fa.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.fi.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.fi.png new file mode 100644 index 0000000000..74cb951d4f Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.fi.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.fr.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.fr.png new file mode 100644 index 0000000000..d05a854f7e Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.fr.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.he.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.he.png new file mode 100644 index 0000000000..5f49ffe343 Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.he.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.hi.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.hi.png new file mode 100644 index 0000000000..1e0edeebea Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.hi.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.hk.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.hk.png new file mode 100644 index 0000000000..5ce9ca363a Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.hk.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.hr.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.hr.png new file mode 100644 index 0000000000..5a96a4df51 Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.hr.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.hu.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.hu.png new file mode 100644 index 0000000000..89575136f4 Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.hu.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.id.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.id.png new file mode 100644 index 0000000000..561c7c5225 Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.id.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.it.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.it.png new file mode 100644 index 0000000000..d020448e5a Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.it.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.ja.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.ja.png new file mode 100644 index 0000000000..b7a9bbe30c Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.ja.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.ko.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.ko.png new file mode 100644 index 0000000000..9c16f0fb25 Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.ko.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.mo.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.mo.png new file mode 100644 index 0000000000..fe7a71e52a Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.mo.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.mr.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.mr.png new file mode 100644 index 0000000000..04b3647fec Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.mr.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.ms.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.ms.png new file mode 100644 index 0000000000..7e43a788cf Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.ms.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.ne.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.ne.png new file mode 100644 index 0000000000..dc8edcf806 Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.ne.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.nl.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.nl.png new file mode 100644 index 0000000000..44f9d28dab Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.nl.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.no.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.no.png new file mode 100644 index 0000000000..60ac984851 Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.no.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.pa.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.pa.png new file mode 100644 index 0000000000..f27e0f6c1a Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.pa.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.pl.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.pl.png new file mode 100644 index 0000000000..ef3f25a234 Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.pl.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.pt.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.pt.png new file mode 100644 index 0000000000..76a2ded6b3 Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.pt.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.ro.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.ro.png new file mode 100644 index 0000000000..0637901dfb Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.ro.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.ru.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.ru.png new file mode 100644 index 0000000000..2063bf714f Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.ru.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.sk.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.sk.png new file mode 100644 index 0000000000..e954236d9b Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.sk.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.sl.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.sl.png new file mode 100644 index 0000000000..8c42048140 Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.sl.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.sr.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.sr.png new file mode 100644 index 0000000000..10236b416b Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.sr.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.sv.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.sv.png new file mode 100644 index 0000000000..1b0b281e7a Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.sv.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.sw.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.sw.png new file mode 100644 index 0000000000..2d21236092 Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.sw.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.th.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.th.png new file mode 100644 index 0000000000..b598474948 Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.th.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.tl.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.tl.png new file mode 100644 index 0000000000..dcdd30508c Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.tl.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.tr.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.tr.png new file mode 100644 index 0000000000..d2255f9d3a Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.tr.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.tw.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.tw.png new file mode 100644 index 0000000000..9bc7ef6ac0 Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.tw.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.ur.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.ur.png new file mode 100644 index 0000000000..1c9e06bd2f Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.ur.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.vi.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.vi.png new file mode 100644 index 0000000000..3e4a3fcd3e Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.vi.png differ diff --git a/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.zh.png b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.zh.png new file mode 100644 index 0000000000..51bfab2d2a Binary files /dev/null and b/translated_images/cat.3db013cbca4fd5d90438ea7b312ad0364f7686cf79931ab15cd5922151aea53e.zh.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.ar.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.ar.png new file mode 100644 index 0000000000..99ca954233 Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.ar.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.bg.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.bg.png new file mode 100644 index 0000000000..c408e9128e Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.bg.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.bn.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.bn.png new file mode 100644 index 0000000000..fe39b3a832 Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.bn.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.br.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.br.png new file mode 100644 index 0000000000..55fd239252 Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.br.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.cs.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.cs.png new file mode 100644 index 0000000000..f0872ac15e Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.cs.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.da.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.da.png new file mode 100644 index 0000000000..5f44334323 Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.da.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.de.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.de.png new file mode 100644 index 0000000000..970ee01177 Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.de.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.el.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.el.png new file mode 100644 index 0000000000..ffc84dcd54 Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.el.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.en.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.en.png new file mode 100644 index 0000000000..f7f9b2b207 Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.en.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.es.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.es.png new file mode 100644 index 0000000000..83d8c0e967 Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.es.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.fa.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.fa.png new file mode 100644 index 0000000000..6e0781175a Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.fa.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.fi.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.fi.png new file mode 100644 index 0000000000..584470939b Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.fi.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.fr.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.fr.png new file mode 100644 index 0000000000..f94b4249db Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.fr.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.he.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.he.png new file mode 100644 index 0000000000..37ae39ce52 Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.he.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.hi.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.hi.png new file mode 100644 index 0000000000..35a1e4effe Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.hi.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.hk.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.hk.png new file mode 100644 index 0000000000..d58850ff70 Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.hk.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.hr.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.hr.png new file mode 100644 index 0000000000..add750dc24 Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.hr.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.hu.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.hu.png new file mode 100644 index 0000000000..100af1a9ad Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.hu.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.id.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.id.png new file mode 100644 index 0000000000..50f3e80261 Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.id.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.it.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.it.png new file mode 100644 index 0000000000..69657087a4 Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.it.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.ja.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.ja.png new file mode 100644 index 0000000000..afb82a2279 Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.ja.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.ko.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.ko.png new file mode 100644 index 0000000000..be80544b0d Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.ko.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.mo.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.mo.png new file mode 100644 index 0000000000..a5ca67f5bc Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.mo.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.mr.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.mr.png new file mode 100644 index 0000000000..8ba40b78df Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.mr.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.ms.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.ms.png new file mode 100644 index 0000000000..8f592cef72 Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.ms.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.ne.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.ne.png new file mode 100644 index 0000000000..1ed77fef1f Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.ne.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.nl.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.nl.png new file mode 100644 index 0000000000..8151ed9f35 Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.nl.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.no.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.no.png new file mode 100644 index 0000000000..bcb8d74e17 Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.no.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.pa.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.pa.png new file mode 100644 index 0000000000..2ab3dffcd4 Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.pa.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.pl.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.pl.png new file mode 100644 index 0000000000..a6b8b8feba Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.pl.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.pt.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.pt.png new file mode 100644 index 0000000000..903c9ce297 Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.pt.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.ro.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.ro.png new file mode 100644 index 0000000000..b9b12ea9e3 Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.ro.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.ru.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.ru.png new file mode 100644 index 0000000000..0d0f669ed9 Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.ru.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.sk.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.sk.png new file mode 100644 index 0000000000..24fcaae857 Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.sk.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.sl.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.sl.png new file mode 100644 index 0000000000..d038c78c01 Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.sl.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.sr.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.sr.png new file mode 100644 index 0000000000..5a49d84be6 Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.sr.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.sv.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.sv.png new file mode 100644 index 0000000000..b97701dc55 Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.sv.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.sw.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.sw.png new file mode 100644 index 0000000000..0646999d20 Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.sw.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.th.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.th.png new file mode 100644 index 0000000000..c6ede989a8 Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.th.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.tl.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.tl.png new file mode 100644 index 0000000000..fa022e1e50 Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.tl.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.tr.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.tr.png new file mode 100644 index 0000000000..9882a72e8c Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.tr.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.tw.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.tw.png new file mode 100644 index 0000000000..d97ad4088f Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.tw.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.ur.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.ur.png new file mode 100644 index 0000000000..15627b0718 Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.ur.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.vi.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.vi.png new file mode 100644 index 0000000000..e77d60f4f4 Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.vi.png differ diff --git a/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.zh.png b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.zh.png new file mode 100644 index 0000000000..123c5c80f1 Binary files /dev/null and b/translated_images/choose-model.1f574fd269d66a894a92f8b8a1c4c3e7cf9e2d9ece5fc66c7d95efdc5d01501d.zh.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.ar.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.ar.png new file mode 100644 index 0000000000..30b3f874bb Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.ar.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.bg.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.bg.png new file mode 100644 index 0000000000..7bff8f5893 Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.bg.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.bn.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.bn.png new file mode 100644 index 0000000000..c962171d2e Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.bn.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.br.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.br.png new file mode 100644 index 0000000000..4eeeef74a9 Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.br.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.cs.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.cs.png new file mode 100644 index 0000000000..12e617371d Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.cs.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.da.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.da.png new file mode 100644 index 0000000000..40b0942ddd Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.da.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.de.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.de.png new file mode 100644 index 0000000000..21e0bb2221 Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.de.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.el.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.el.png new file mode 100644 index 0000000000..732b082550 Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.el.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.en.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.en.png new file mode 100644 index 0000000000..70d8a72abe Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.en.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.es.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.es.png new file mode 100644 index 0000000000..6c2631d57b Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.es.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.fa.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.fa.png new file mode 100644 index 0000000000..a49a43254e Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.fa.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.fi.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.fi.png new file mode 100644 index 0000000000..ce576a7873 Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.fi.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.fr.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.fr.png new file mode 100644 index 0000000000..9e241329ec Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.fr.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.he.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.he.png new file mode 100644 index 0000000000..53b42697b1 Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.he.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.hi.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.hi.png new file mode 100644 index 0000000000..3a4914692f Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.hi.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.hk.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.hk.png new file mode 100644 index 0000000000..ab293ae7ab Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.hk.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.hr.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.hr.png new file mode 100644 index 0000000000..642eb800c1 Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.hr.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.hu.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.hu.png new file mode 100644 index 0000000000..8dfa80cb2f Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.hu.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.id.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.id.png new file mode 100644 index 0000000000..7c4bbf8fed Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.id.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.it.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.it.png new file mode 100644 index 0000000000..0cdb96a976 Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.it.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.ja.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.ja.png new file mode 100644 index 0000000000..ae1dd1600e Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.ja.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.ko.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.ko.png new file mode 100644 index 0000000000..34f3a41711 Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.ko.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.mo.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.mo.png new file mode 100644 index 0000000000..2e39ea500f Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.mo.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.mr.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.mr.png new file mode 100644 index 0000000000..8ea20c862f Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.mr.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.ms.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.ms.png new file mode 100644 index 0000000000..b1a1abfe70 Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.ms.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.ne.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.ne.png new file mode 100644 index 0000000000..484b59288b Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.ne.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.nl.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.nl.png new file mode 100644 index 0000000000..a5c2fb6bd7 Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.nl.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.no.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.no.png new file mode 100644 index 0000000000..31a146b066 Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.no.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.pa.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.pa.png new file mode 100644 index 0000000000..921faeba3c Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.pa.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.pl.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.pl.png new file mode 100644 index 0000000000..fce6dc5118 Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.pl.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.pt.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.pt.png new file mode 100644 index 0000000000..42581adfcb Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.pt.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.ro.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.ro.png new file mode 100644 index 0000000000..ef3d9dc5a6 Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.ro.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.ru.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.ru.png new file mode 100644 index 0000000000..48b70596b0 Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.ru.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.sk.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.sk.png new file mode 100644 index 0000000000..49ed6734bd Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.sk.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.sl.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.sl.png new file mode 100644 index 0000000000..57e0a327f8 Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.sl.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.sr.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.sr.png new file mode 100644 index 0000000000..36b483641b Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.sr.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.sv.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.sv.png new file mode 100644 index 0000000000..36e30ae0b5 Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.sv.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.sw.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.sw.png new file mode 100644 index 0000000000..1fc27a7965 Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.sw.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.th.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.th.png new file mode 100644 index 0000000000..87d7e9a99e Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.th.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.tl.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.tl.png new file mode 100644 index 0000000000..e2a055c75f Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.tl.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.tr.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.tr.png new file mode 100644 index 0000000000..8d7db8c0bc Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.tr.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.tw.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.tw.png new file mode 100644 index 0000000000..88ca636a1b Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.tw.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.ur.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.ur.png new file mode 100644 index 0000000000..92a2f7a870 Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.ur.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.vi.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.vi.png new file mode 100644 index 0000000000..a22727ef4e Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.vi.png differ diff --git a/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.zh.png b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.zh.png new file mode 100644 index 0000000000..5acc737c04 Binary files /dev/null and b/translated_images/codespaces-basicpy.7cf85dd8a3e7f9401bb2e1a198d4c970c826d8b4e3a20df1a754a24e4b74c360.zh.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.ar.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.ar.png new file mode 100644 index 0000000000..78fb3c116e Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.ar.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.bg.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.bg.png new file mode 100644 index 0000000000..59826c7fca Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.bg.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.bn.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.bn.png new file mode 100644 index 0000000000..abeec81aa4 Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.bn.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.br.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.br.png new file mode 100644 index 0000000000..7e558ecb25 Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.br.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.cs.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.cs.png new file mode 100644 index 0000000000..4098f98a73 Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.cs.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.da.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.da.png new file mode 100644 index 0000000000..087748c425 Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.da.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.de.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.de.png new file mode 100644 index 0000000000..b68a42f400 Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.de.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.el.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.el.png new file mode 100644 index 0000000000..100464848a Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.el.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.en.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.en.png new file mode 100644 index 0000000000..48484aa8da Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.en.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.es.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.es.png new file mode 100644 index 0000000000..5bd86e026b Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.es.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.fa.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.fa.png new file mode 100644 index 0000000000..369d0f6158 Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.fa.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.fi.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.fi.png new file mode 100644 index 0000000000..561a075236 Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.fi.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.fr.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.fr.png new file mode 100644 index 0000000000..34c43b17a9 Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.fr.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.he.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.he.png new file mode 100644 index 0000000000..aee1cec27c Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.he.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.hi.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.hi.png new file mode 100644 index 0000000000..b2d75a7b2f Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.hi.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.hk.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.hk.png new file mode 100644 index 0000000000..2a7317c547 Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.hk.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.hr.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.hr.png new file mode 100644 index 0000000000..4dd8a6f088 Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.hr.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.hu.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.hu.png new file mode 100644 index 0000000000..2469936fc0 Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.hu.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.id.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.id.png new file mode 100644 index 0000000000..bce7d1bb8a Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.id.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.it.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.it.png new file mode 100644 index 0000000000..8364ed6856 Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.it.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.ja.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.ja.png new file mode 100644 index 0000000000..ea0865cf94 Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.ja.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.ko.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.ko.png new file mode 100644 index 0000000000..035bb40be7 Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.ko.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.mo.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.mo.png new file mode 100644 index 0000000000..5d76dee0ec Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.mo.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.mr.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.mr.png new file mode 100644 index 0000000000..a5ff121689 Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.mr.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.ms.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.ms.png new file mode 100644 index 0000000000..a5ed1a4d83 Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.ms.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.ne.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.ne.png new file mode 100644 index 0000000000..c77c27c5ac Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.ne.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.nl.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.nl.png new file mode 100644 index 0000000000..a549dc8c08 Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.nl.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.no.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.no.png new file mode 100644 index 0000000000..6e3101e437 Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.no.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.pa.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.pa.png new file mode 100644 index 0000000000..2780e9e7d3 Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.pa.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.pl.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.pl.png new file mode 100644 index 0000000000..29ae432bab Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.pl.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.pt.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.pt.png new file mode 100644 index 0000000000..2a5ec547f4 Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.pt.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.ro.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.ro.png new file mode 100644 index 0000000000..b68b9b8ee0 Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.ro.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.ru.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.ru.png new file mode 100644 index 0000000000..2d254981e4 Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.ru.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.sk.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.sk.png new file mode 100644 index 0000000000..fbaadbaff9 Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.sk.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.sl.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.sl.png new file mode 100644 index 0000000000..931cac5d03 Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.sl.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.sr.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.sr.png new file mode 100644 index 0000000000..4b1a12a35a Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.sr.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.sv.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.sv.png new file mode 100644 index 0000000000..64267d9436 Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.sv.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.sw.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.sw.png new file mode 100644 index 0000000000..c79db023e6 Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.sw.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.th.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.th.png new file mode 100644 index 0000000000..521f5f6bf2 Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.th.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.tl.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.tl.png new file mode 100644 index 0000000000..80f69e1521 Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.tl.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.tr.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.tr.png new file mode 100644 index 0000000000..c788332f0d Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.tr.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.tw.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.tw.png new file mode 100644 index 0000000000..248887185f Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.tw.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.ur.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.ur.png new file mode 100644 index 0000000000..6b6ddcc909 Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.ur.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.vi.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.vi.png new file mode 100644 index 0000000000..4e7e476de1 Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.vi.png differ diff --git a/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.zh.png b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.zh.png new file mode 100644 index 0000000000..0c4505dc59 Binary files /dev/null and b/translated_images/codespaces-secrets.ecd58ca95b218f8e0abd0df31e4a1f835d5604cb56a9bdbf0f7e9024b0b7603a.zh.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.ar.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.ar.png new file mode 100644 index 0000000000..878a1c25e6 Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.ar.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.bg.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.bg.png new file mode 100644 index 0000000000..6e77f87bf9 Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.bg.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.bn.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.bn.png new file mode 100644 index 0000000000..7c7244f59f Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.bn.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.br.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.br.png new file mode 100644 index 0000000000..2cf06a2974 Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.br.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.cs.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.cs.png new file mode 100644 index 0000000000..b2f6034835 Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.cs.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.da.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.da.png new file mode 100644 index 0000000000..a2716a03a6 Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.da.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.de.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.de.png new file mode 100644 index 0000000000..2fd72f0ee1 Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.de.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.el.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.el.png new file mode 100644 index 0000000000..489c9a52b7 Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.el.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.en.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.en.png new file mode 100644 index 0000000000..39c9ab299a Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.en.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.es.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.es.png new file mode 100644 index 0000000000..9264903e15 Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.es.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.fa.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.fa.png new file mode 100644 index 0000000000..15c6004fd9 Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.fa.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.fi.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.fi.png new file mode 100644 index 0000000000..d3faf0cffb Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.fi.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.fr.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.fr.png new file mode 100644 index 0000000000..af1e9feaa1 Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.fr.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.he.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.he.png new file mode 100644 index 0000000000..df6f47f5c7 Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.he.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.hi.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.hi.png new file mode 100644 index 0000000000..b9e5af83a9 Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.hi.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.hk.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.hk.png new file mode 100644 index 0000000000..d8a775c510 Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.hk.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.hr.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.hr.png new file mode 100644 index 0000000000..fd6591b755 Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.hr.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.hu.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.hu.png new file mode 100644 index 0000000000..1884c079f2 Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.hu.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.id.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.id.png new file mode 100644 index 0000000000..6a5cbbf39f Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.id.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.it.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.it.png new file mode 100644 index 0000000000..708a3d42fe Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.it.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.ja.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.ja.png new file mode 100644 index 0000000000..68dfaa1d7d Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.ja.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.ko.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.ko.png new file mode 100644 index 0000000000..2cc5c23a6b Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.ko.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.mo.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.mo.png new file mode 100644 index 0000000000..d61338164d Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.mo.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.mr.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.mr.png new file mode 100644 index 0000000000..6e9777e636 Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.mr.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.ms.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.ms.png new file mode 100644 index 0000000000..7ca494995c Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.ms.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.ne.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.ne.png new file mode 100644 index 0000000000..b19e99d4f8 Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.ne.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.nl.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.nl.png new file mode 100644 index 0000000000..cd5b778d97 Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.nl.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.no.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.no.png new file mode 100644 index 0000000000..4fe6fd28e6 Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.no.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.pa.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.pa.png new file mode 100644 index 0000000000..b7da141bd7 Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.pa.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.pl.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.pl.png new file mode 100644 index 0000000000..b6129980f0 Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.pl.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.pt.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.pt.png new file mode 100644 index 0000000000..5b018c805d Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.pt.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.ro.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.ro.png new file mode 100644 index 0000000000..d4907b2741 Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.ro.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.ru.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.ru.png new file mode 100644 index 0000000000..04c6223ef3 Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.ru.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.sk.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.sk.png new file mode 100644 index 0000000000..c80fd22eb2 Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.sk.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.sl.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.sl.png new file mode 100644 index 0000000000..31926463b2 Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.sl.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.sr.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.sr.png new file mode 100644 index 0000000000..8dbfc7147e Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.sr.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.sv.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.sv.png new file mode 100644 index 0000000000..e5a6a62e10 Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.sv.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.sw.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.sw.png new file mode 100644 index 0000000000..06ca995352 Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.sw.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.th.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.th.png new file mode 100644 index 0000000000..1aca9148d3 Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.th.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.tl.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.tl.png new file mode 100644 index 0000000000..864b477c25 Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.tl.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.tr.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.tr.png new file mode 100644 index 0000000000..c7106db5ab Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.tr.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.tw.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.tw.png new file mode 100644 index 0000000000..c09305a7cd Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.tw.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.ur.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.ur.png new file mode 100644 index 0000000000..36208115a2 Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.ur.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.vi.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.vi.png new file mode 100644 index 0000000000..2decea7844 Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.vi.png differ diff --git a/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.zh.png b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.zh.png new file mode 100644 index 0000000000..4fd3c5a094 Binary files /dev/null and b/translated_images/coding-example.5c46e1eb38083c0fffad9a244a1fb53394d080fce299ec0d121f4263cacee014.zh.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.ar.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.ar.png new file mode 100644 index 0000000000..e3f6804a27 Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.ar.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.bg.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.bg.png new file mode 100644 index 0000000000..6bb4641916 Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.bg.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.bn.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.bn.png new file mode 100644 index 0000000000..e47eb43283 Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.bn.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.br.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.br.png new file mode 100644 index 0000000000..5e53618d86 Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.br.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.cs.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.cs.png new file mode 100644 index 0000000000..9d83c6e522 Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.cs.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.da.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.da.png new file mode 100644 index 0000000000..c9a195cf21 Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.da.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.de.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.de.png new file mode 100644 index 0000000000..f00156db64 Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.de.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.el.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.el.png new file mode 100644 index 0000000000..b3d0ad92f4 Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.el.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.en.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.en.png new file mode 100644 index 0000000000..da84ea68b5 Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.en.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.es.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.es.png new file mode 100644 index 0000000000..4fc021691c Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.es.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.fa.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.fa.png new file mode 100644 index 0000000000..278e84acee Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.fa.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.fi.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.fi.png new file mode 100644 index 0000000000..c71db652a2 Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.fi.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.fr.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.fr.png new file mode 100644 index 0000000000..4d84118643 Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.fr.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.he.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.he.png new file mode 100644 index 0000000000..8237d34657 Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.he.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.hi.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.hi.png new file mode 100644 index 0000000000..78d3f54285 Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.hi.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.hk.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.hk.png new file mode 100644 index 0000000000..e74d53bbe1 Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.hk.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.hr.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.hr.png new file mode 100644 index 0000000000..4a396ad46a Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.hr.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.hu.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.hu.png new file mode 100644 index 0000000000..c101ada2a4 Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.hu.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.id.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.id.png new file mode 100644 index 0000000000..5ed23080eb Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.id.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.it.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.it.png new file mode 100644 index 0000000000..d043c830aa Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.it.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.ja.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.ja.png new file mode 100644 index 0000000000..e63445513b Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.ja.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.ko.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.ko.png new file mode 100644 index 0000000000..004b01cabd Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.ko.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.mo.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.mo.png new file mode 100644 index 0000000000..cdf97ce000 Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.mo.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.mr.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.mr.png new file mode 100644 index 0000000000..a53cb7c83a Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.mr.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.ms.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.ms.png new file mode 100644 index 0000000000..6d90048187 Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.ms.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.ne.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.ne.png new file mode 100644 index 0000000000..ab241291f4 Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.ne.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.nl.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.nl.png new file mode 100644 index 0000000000..0802a10bd1 Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.nl.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.no.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.no.png new file mode 100644 index 0000000000..92f3a31592 Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.no.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.pa.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.pa.png new file mode 100644 index 0000000000..d0a6d9464b Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.pa.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.pl.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.pl.png new file mode 100644 index 0000000000..5edcafb6e8 Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.pl.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.pt.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.pt.png new file mode 100644 index 0000000000..c70af53e57 Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.pt.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.ro.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.ro.png new file mode 100644 index 0000000000..69c257061c Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.ro.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.ru.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.ru.png new file mode 100644 index 0000000000..00a3e4a86d Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.ru.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.sk.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.sk.png new file mode 100644 index 0000000000..94318f357e Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.sk.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.sl.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.sl.png new file mode 100644 index 0000000000..e47835a8fe Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.sl.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.sr.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.sr.png new file mode 100644 index 0000000000..562da5acaf Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.sr.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.sv.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.sv.png new file mode 100644 index 0000000000..a29df16e55 Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.sv.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.sw.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.sw.png new file mode 100644 index 0000000000..f763bb5aa8 Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.sw.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.th.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.th.png new file mode 100644 index 0000000000..4bac5d7eab Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.th.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.tl.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.tl.png new file mode 100644 index 0000000000..9c437d22b7 Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.tl.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.tr.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.tr.png new file mode 100644 index 0000000000..8ba9886bef Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.tr.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.tw.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.tw.png new file mode 100644 index 0000000000..7b472aae87 Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.tw.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.ur.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.ur.png new file mode 100644 index 0000000000..f1e0932b7a Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.ur.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.vi.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.vi.png new file mode 100644 index 0000000000..d5a2efa890 Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.vi.png differ diff --git a/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.zh.png b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.zh.png new file mode 100644 index 0000000000..d60a470533 Binary files /dev/null and b/translated_images/conversation-example.b2c7cda5634819bd2f67f36084e3cf38f867b18b6628b66d340398525fa9edb1.zh.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.ar.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.ar.png new file mode 100644 index 0000000000..35a9254400 Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.ar.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.bg.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.bg.png new file mode 100644 index 0000000000..219d91badf Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.bg.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.bn.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.bn.png new file mode 100644 index 0000000000..6c4488c733 Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.bn.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.br.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.br.png new file mode 100644 index 0000000000..ed4db1dad7 Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.br.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.cs.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.cs.png new file mode 100644 index 0000000000..e4a915c521 Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.cs.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.da.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.da.png new file mode 100644 index 0000000000..0b8bd4a04a Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.da.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.de.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.de.png new file mode 100644 index 0000000000..ac79ec8ff7 Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.de.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.el.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.el.png new file mode 100644 index 0000000000..3bea7ad215 Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.el.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.en.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.en.png new file mode 100644 index 0000000000..6f1ee45c26 Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.en.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.es.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.es.png new file mode 100644 index 0000000000..30ee1c310e Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.es.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.fa.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.fa.png new file mode 100644 index 0000000000..75eadecf7f Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.fa.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.fi.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.fi.png new file mode 100644 index 0000000000..a95fef551c Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.fi.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.fr.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.fr.png new file mode 100644 index 0000000000..b7ae740984 Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.fr.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.he.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.he.png new file mode 100644 index 0000000000..52b77e3666 Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.he.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.hi.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.hi.png new file mode 100644 index 0000000000..884fa5cb6c Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.hi.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.hk.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.hk.png new file mode 100644 index 0000000000..a65f97a35b Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.hk.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.hr.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.hr.png new file mode 100644 index 0000000000..8aa8bce5cf Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.hr.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.hu.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.hu.png new file mode 100644 index 0000000000..c067e601b2 Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.hu.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.id.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.id.png new file mode 100644 index 0000000000..b0af5d3876 Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.id.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.it.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.it.png new file mode 100644 index 0000000000..469fe9a55d Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.it.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.ja.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.ja.png new file mode 100644 index 0000000000..569e7a156b Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.ja.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.ko.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.ko.png new file mode 100644 index 0000000000..582745868a Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.ko.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.mo.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.mo.png new file mode 100644 index 0000000000..86090fb34e Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.mo.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.mr.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.mr.png new file mode 100644 index 0000000000..596431e009 Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.mr.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.ms.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.ms.png new file mode 100644 index 0000000000..887543e76e Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.ms.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.ne.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.ne.png new file mode 100644 index 0000000000..1e48dd7650 Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.ne.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.nl.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.nl.png new file mode 100644 index 0000000000..64713dd40a Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.nl.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.no.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.no.png new file mode 100644 index 0000000000..04546eff77 Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.no.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.pa.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.pa.png new file mode 100644 index 0000000000..e03058724f Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.pa.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.pl.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.pl.png new file mode 100644 index 0000000000..51377d4ee3 Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.pl.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.pt.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.pt.png new file mode 100644 index 0000000000..f13ca1cbfa Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.pt.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.ro.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.ro.png new file mode 100644 index 0000000000..f098cd4a3a Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.ro.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.ru.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.ru.png new file mode 100644 index 0000000000..4d7062141c Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.ru.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.sk.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.sk.png new file mode 100644 index 0000000000..682d1db2ce Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.sk.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.sl.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.sl.png new file mode 100644 index 0000000000..bca920ccb6 Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.sl.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.sr.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.sr.png new file mode 100644 index 0000000000..c3ea1841c8 Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.sr.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.sv.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.sv.png new file mode 100644 index 0000000000..c2be7bef60 Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.sv.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.sw.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.sw.png new file mode 100644 index 0000000000..44209eb335 Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.sw.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.th.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.th.png new file mode 100644 index 0000000000..0ac4febca4 Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.th.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.tl.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.tl.png new file mode 100644 index 0000000000..1482df81cb Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.tl.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.tr.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.tr.png new file mode 100644 index 0000000000..8516cf078a Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.tr.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.tw.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.tw.png new file mode 100644 index 0000000000..7a849b536a Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.tw.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.ur.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.ur.png new file mode 100644 index 0000000000..31d4f71436 Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.ur.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.vi.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.vi.png new file mode 100644 index 0000000000..6417bccd7c Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.vi.png differ diff --git a/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.zh.png b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.zh.png new file mode 100644 index 0000000000..2ba7029f43 Binary files /dev/null and b/translated_images/copilot-chat-prompt-dataverse.22a6bc42a8fef6bf55b4a0fe2c5570b0991db3b72d4e832973008caa7f5902ed.zh.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.ar.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.ar.png new file mode 100644 index 0000000000..680c8e8d5e Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.ar.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.bg.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.bg.png new file mode 100644 index 0000000000..b165d17d77 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.bg.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.bn.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.bn.png new file mode 100644 index 0000000000..a2e1c8d9aa Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.bn.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.br.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.br.png new file mode 100644 index 0000000000..d29c7cce5e Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.br.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.cs.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.cs.png new file mode 100644 index 0000000000..7c5d5c0772 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.cs.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.da.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.da.png new file mode 100644 index 0000000000..2acaa2fd93 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.da.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.de.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.de.png new file mode 100644 index 0000000000..a18bb0acba Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.de.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.el.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.el.png new file mode 100644 index 0000000000..bc996d1378 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.el.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.en.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.en.png new file mode 100644 index 0000000000..2915b1225d Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.en.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.es.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.es.png new file mode 100644 index 0000000000..a5d819ecd5 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.es.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.fa.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.fa.png new file mode 100644 index 0000000000..c31afd9cfb Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.fa.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.fi.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.fi.png new file mode 100644 index 0000000000..eb11515a98 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.fi.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.fr.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.fr.png new file mode 100644 index 0000000000..f0c591d179 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.fr.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.he.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.he.png new file mode 100644 index 0000000000..b931f00e6a Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.he.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.hi.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.hi.png new file mode 100644 index 0000000000..ddefbaa693 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.hi.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.hk.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.hk.png new file mode 100644 index 0000000000..8d8b784627 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.hk.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.hr.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.hr.png new file mode 100644 index 0000000000..7c5d84f343 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.hr.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.hu.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.hu.png new file mode 100644 index 0000000000..284856eae9 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.hu.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.id.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.id.png new file mode 100644 index 0000000000..39cdccc750 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.id.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.it.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.it.png new file mode 100644 index 0000000000..0f2b55fe80 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.it.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.ja.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.ja.png new file mode 100644 index 0000000000..81c1007db9 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.ja.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.ko.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.ko.png new file mode 100644 index 0000000000..d2f4284e3d Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.ko.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.mo.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.mo.png new file mode 100644 index 0000000000..30d2c7ab87 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.mo.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.mr.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.mr.png new file mode 100644 index 0000000000..20801bde21 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.mr.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.ms.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.ms.png new file mode 100644 index 0000000000..ca95884055 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.ms.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.ne.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.ne.png new file mode 100644 index 0000000000..4f4120118d Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.ne.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.nl.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.nl.png new file mode 100644 index 0000000000..176b96eaf9 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.nl.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.no.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.no.png new file mode 100644 index 0000000000..9151c2f34f Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.no.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.pa.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.pa.png new file mode 100644 index 0000000000..8ca22f3aaf Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.pa.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.pl.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.pl.png new file mode 100644 index 0000000000..dcfd452ec1 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.pl.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.pt.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.pt.png new file mode 100644 index 0000000000..809b8dc315 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.pt.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.ro.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.ro.png new file mode 100644 index 0000000000..3deac113bb Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.ro.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.ru.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.ru.png new file mode 100644 index 0000000000..253badbad3 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.ru.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.sk.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.sk.png new file mode 100644 index 0000000000..8a1e4c5bca Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.sk.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.sl.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.sl.png new file mode 100644 index 0000000000..e51162b54e Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.sl.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.sr.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.sr.png new file mode 100644 index 0000000000..4d71c9bfa3 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.sr.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.sv.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.sv.png new file mode 100644 index 0000000000..2f35185c99 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.sv.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.sw.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.sw.png new file mode 100644 index 0000000000..00c21132bb Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.sw.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.th.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.th.png new file mode 100644 index 0000000000..6245af0473 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.th.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.tl.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.tl.png new file mode 100644 index 0000000000..4aef877c64 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.tl.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.tr.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.tr.png new file mode 100644 index 0000000000..b94bd3624e Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.tr.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.tw.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.tw.png new file mode 100644 index 0000000000..c1d225457d Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.tw.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.ur.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.ur.png new file mode 100644 index 0000000000..a506f18905 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.ur.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.vi.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.vi.png new file mode 100644 index 0000000000..1b34d1323a Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.vi.png differ diff --git a/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.zh.png b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.zh.png new file mode 100644 index 0000000000..8034383820 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerapps.8b18beb535e7bd1a26be1284c2ef1246dbadb4704fa1656f1b6b35214ddc1c89.zh.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.ar.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.ar.png new file mode 100644 index 0000000000..8fc3cca209 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.ar.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.bg.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.bg.png new file mode 100644 index 0000000000..6f6b7157ff Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.bg.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.bn.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.bn.png new file mode 100644 index 0000000000..de2798eaf8 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.bn.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.br.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.br.png new file mode 100644 index 0000000000..53e950b049 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.br.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.cs.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.cs.png new file mode 100644 index 0000000000..fcf5c0f151 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.cs.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.da.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.da.png new file mode 100644 index 0000000000..24f9dfb457 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.da.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.de.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.de.png new file mode 100644 index 0000000000..a96a0f9e4c Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.de.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.el.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.el.png new file mode 100644 index 0000000000..6fb5f7dba6 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.el.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.en.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.en.png new file mode 100644 index 0000000000..873b8f3dcc Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.en.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.es.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.es.png new file mode 100644 index 0000000000..8fea558073 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.es.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.fa.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.fa.png new file mode 100644 index 0000000000..a1f8f95789 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.fa.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.fi.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.fi.png new file mode 100644 index 0000000000..960b915cc1 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.fi.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.fr.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.fr.png new file mode 100644 index 0000000000..6cc1e145fe Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.fr.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.he.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.he.png new file mode 100644 index 0000000000..d5ee054489 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.he.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.hi.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.hi.png new file mode 100644 index 0000000000..a12243eaa9 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.hi.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.hk.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.hk.png new file mode 100644 index 0000000000..138d7e02cd Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.hk.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.hr.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.hr.png new file mode 100644 index 0000000000..06b72b3170 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.hr.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.hu.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.hu.png new file mode 100644 index 0000000000..24f9dfb457 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.hu.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.id.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.id.png new file mode 100644 index 0000000000..24f9dfb457 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.id.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.it.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.it.png new file mode 100644 index 0000000000..dfef17e13e Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.it.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.ja.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.ja.png new file mode 100644 index 0000000000..356aaf8323 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.ja.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.ko.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.ko.png new file mode 100644 index 0000000000..0ab9956e06 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.ko.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.mo.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.mo.png new file mode 100644 index 0000000000..b34a319507 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.mo.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.mr.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.mr.png new file mode 100644 index 0000000000..57d31f6442 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.mr.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.ms.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.ms.png new file mode 100644 index 0000000000..e458ad39ea Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.ms.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.ne.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.ne.png new file mode 100644 index 0000000000..24f9dfb457 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.ne.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.nl.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.nl.png new file mode 100644 index 0000000000..ebdbe9a511 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.nl.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.no.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.no.png new file mode 100644 index 0000000000..40bfe5d65a Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.no.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.pa.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.pa.png new file mode 100644 index 0000000000..dae896ac19 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.pa.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.pl.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.pl.png new file mode 100644 index 0000000000..298db200f5 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.pl.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.pt.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.pt.png new file mode 100644 index 0000000000..baee7ffca4 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.pt.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.ro.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.ro.png new file mode 100644 index 0000000000..ad31a988d5 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.ro.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.ru.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.ru.png new file mode 100644 index 0000000000..8123606cdf Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.ru.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.sk.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.sk.png new file mode 100644 index 0000000000..20d589bd40 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.sk.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.sl.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.sl.png new file mode 100644 index 0000000000..a30e01ad4e Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.sl.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.sr.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.sr.png new file mode 100644 index 0000000000..08e74ab34f Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.sr.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.sv.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.sv.png new file mode 100644 index 0000000000..272ac89de3 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.sv.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.sw.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.sw.png new file mode 100644 index 0000000000..21da689949 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.sw.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.th.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.th.png new file mode 100644 index 0000000000..24f9dfb457 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.th.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.tl.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.tl.png new file mode 100644 index 0000000000..35cdf436c6 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.tl.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.tr.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.tr.png new file mode 100644 index 0000000000..9461de759c Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.tr.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.tw.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.tw.png new file mode 100644 index 0000000000..af438bb620 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.tw.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.ur.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.ur.png new file mode 100644 index 0000000000..160e7381ff Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.ur.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.vi.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.vi.png new file mode 100644 index 0000000000..75c0395ab4 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.vi.png differ diff --git a/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.zh.png b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.zh.png new file mode 100644 index 0000000000..2572e897a1 Binary files /dev/null and b/translated_images/copilot-chat-prompt-powerautomate.0a21031a7ae6b1fb5dd61ce5c09d530454a93ee65c166b5c286e49c1a9312039.zh.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.ar.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.ar.png new file mode 100644 index 0000000000..2b22eceeb4 Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.ar.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.bg.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.bg.png new file mode 100644 index 0000000000..34df671cc0 Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.bg.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.bn.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.bn.png new file mode 100644 index 0000000000..f920aa8cd9 Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.bn.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.br.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.br.png new file mode 100644 index 0000000000..30a278da9e Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.br.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.cs.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.cs.png new file mode 100644 index 0000000000..c8acc27e3b Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.cs.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.da.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.da.png new file mode 100644 index 0000000000..20652682f8 Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.da.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.de.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.de.png new file mode 100644 index 0000000000..d637875847 Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.de.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.el.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.el.png new file mode 100644 index 0000000000..5788b4ae5f Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.el.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.en.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.en.png new file mode 100644 index 0000000000..104adb5cc0 Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.en.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.es.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.es.png new file mode 100644 index 0000000000..776b93772e Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.es.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.fa.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.fa.png new file mode 100644 index 0000000000..6b1254e03b Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.fa.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.fi.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.fi.png new file mode 100644 index 0000000000..1ae2fd5db2 Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.fi.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.fr.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.fr.png new file mode 100644 index 0000000000..effeb7fa6d Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.fr.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.he.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.he.png new file mode 100644 index 0000000000..7c9f159d0d Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.he.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.hi.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.hi.png new file mode 100644 index 0000000000..4d3e66902e Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.hi.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.hk.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.hk.png new file mode 100644 index 0000000000..389b8fbe95 Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.hk.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.hr.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.hr.png new file mode 100644 index 0000000000..ea8195648b Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.hr.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.hu.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.hu.png new file mode 100644 index 0000000000..2a69aa1177 Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.hu.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.id.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.id.png new file mode 100644 index 0000000000..fcb23abf8f Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.id.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.it.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.it.png new file mode 100644 index 0000000000..9b7a1071e4 Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.it.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.ja.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.ja.png new file mode 100644 index 0000000000..9d8483ecd9 Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.ja.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.ko.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.ko.png new file mode 100644 index 0000000000..802b58a92c Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.ko.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.mo.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.mo.png new file mode 100644 index 0000000000..ca419c134f Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.mo.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.mr.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.mr.png new file mode 100644 index 0000000000..b4c21f20a3 Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.mr.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.ms.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.ms.png new file mode 100644 index 0000000000..31bef8e180 Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.ms.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.ne.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.ne.png new file mode 100644 index 0000000000..35ff0e3c0c Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.ne.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.nl.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.nl.png new file mode 100644 index 0000000000..fafd0098b7 Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.nl.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.no.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.no.png new file mode 100644 index 0000000000..9d8b1e7af6 Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.no.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.pa.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.pa.png new file mode 100644 index 0000000000..e446446cd3 Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.pa.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.pl.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.pl.png new file mode 100644 index 0000000000..f0c9c020a0 Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.pl.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.pt.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.pt.png new file mode 100644 index 0000000000..a444d9ec51 Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.pt.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.ro.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.ro.png new file mode 100644 index 0000000000..ea2f8bb167 Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.ro.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.ru.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.ru.png new file mode 100644 index 0000000000..a395cf7142 Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.ru.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.sk.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.sk.png new file mode 100644 index 0000000000..8838fafd26 Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.sk.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.sl.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.sl.png new file mode 100644 index 0000000000..6a4ff248df Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.sl.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.sr.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.sr.png new file mode 100644 index 0000000000..fa305fb0f6 Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.sr.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.sv.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.sv.png new file mode 100644 index 0000000000..ded0eb724a Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.sv.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.sw.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.sw.png new file mode 100644 index 0000000000..dc90011bf9 Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.sw.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.th.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.th.png new file mode 100644 index 0000000000..5847c0dbb2 Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.th.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.tl.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.tl.png new file mode 100644 index 0000000000..3e967fe836 Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.tl.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.tr.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.tr.png new file mode 100644 index 0000000000..54ffe5183f Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.tr.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.tw.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.tw.png new file mode 100644 index 0000000000..22993104ff Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.tw.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.ur.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.ur.png new file mode 100644 index 0000000000..f461dd4b4a Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.ur.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.vi.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.vi.png new file mode 100644 index 0000000000..d4dac52ddc Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.vi.png differ diff --git a/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.zh.png b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.zh.png new file mode 100644 index 0000000000..0ce5330e92 Binary files /dev/null and b/translated_images/copilot-dataverse-table-powerapps.35038be17c72f49f510a76a208db3c2c8b3c0928f08620694dca255b103f2929.zh.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.ar.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.ar.png new file mode 100644 index 0000000000..139642064e Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.ar.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.bg.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.bg.png new file mode 100644 index 0000000000..9ebd687cde Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.bg.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.bn.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.bn.png new file mode 100644 index 0000000000..e61d658bd1 Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.bn.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.br.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.br.png new file mode 100644 index 0000000000..bd0a791172 Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.br.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.cs.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.cs.png new file mode 100644 index 0000000000..fc483b81ac Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.cs.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.da.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.da.png new file mode 100644 index 0000000000..84d996a149 Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.da.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.de.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.de.png new file mode 100644 index 0000000000..b9b9829ac3 Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.de.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.el.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.el.png new file mode 100644 index 0000000000..258ad11b89 Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.el.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.en.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.en.png new file mode 100644 index 0000000000..3e681b5e90 Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.en.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.es.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.es.png new file mode 100644 index 0000000000..64b0c406f0 Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.es.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.fa.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.fa.png new file mode 100644 index 0000000000..3cafa1b80f Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.fa.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.fi.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.fi.png new file mode 100644 index 0000000000..bd5258cd66 Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.fi.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.fr.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.fr.png new file mode 100644 index 0000000000..85921191df Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.fr.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.he.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.he.png new file mode 100644 index 0000000000..105d9c4060 Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.he.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.hi.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.hi.png new file mode 100644 index 0000000000..541fbcc17f Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.hi.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.hk.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.hk.png new file mode 100644 index 0000000000..7753fa1eb6 Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.hk.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.hr.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.hr.png new file mode 100644 index 0000000000..e2ed76463e Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.hr.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.hu.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.hu.png new file mode 100644 index 0000000000..ccfe5ba403 Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.hu.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.id.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.id.png new file mode 100644 index 0000000000..187b7b811b Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.id.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.it.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.it.png new file mode 100644 index 0000000000..65e7ac08ba Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.it.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.ja.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.ja.png new file mode 100644 index 0000000000..b1d9d35eb8 Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.ja.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.ko.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.ko.png new file mode 100644 index 0000000000..ec5fbe1833 Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.ko.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.mo.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.mo.png new file mode 100644 index 0000000000..090970b432 Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.mo.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.mr.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.mr.png new file mode 100644 index 0000000000..9ae18bacd5 Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.mr.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.ms.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.ms.png new file mode 100644 index 0000000000..38bdfb11a1 Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.ms.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.ne.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.ne.png new file mode 100644 index 0000000000..fe831146d8 Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.ne.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.nl.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.nl.png new file mode 100644 index 0000000000..6b44359044 Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.nl.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.no.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.no.png new file mode 100644 index 0000000000..5ef7acc612 Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.no.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.pa.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.pa.png new file mode 100644 index 0000000000..bfa5049486 Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.pa.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.pl.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.pl.png new file mode 100644 index 0000000000..045eaad547 Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.pl.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.pt.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.pt.png new file mode 100644 index 0000000000..12d542f58d Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.pt.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.ro.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.ro.png new file mode 100644 index 0000000000..93fb85db33 Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.ro.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.ru.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.ru.png new file mode 100644 index 0000000000..bb9290c5c1 Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.ru.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.sk.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.sk.png new file mode 100644 index 0000000000..977d0b4610 Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.sk.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.sl.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.sl.png new file mode 100644 index 0000000000..40a21d7a67 Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.sl.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.sr.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.sr.png new file mode 100644 index 0000000000..abc08de2d2 Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.sr.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.sv.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.sv.png new file mode 100644 index 0000000000..3c4cc97e05 Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.sv.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.sw.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.sw.png new file mode 100644 index 0000000000..8dd025869c Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.sw.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.th.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.th.png new file mode 100644 index 0000000000..65f58b7284 Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.th.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.tl.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.tl.png new file mode 100644 index 0000000000..f6e2cccf78 Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.tl.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.tr.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.tr.png new file mode 100644 index 0000000000..32094d5506 Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.tr.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.tw.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.tw.png new file mode 100644 index 0000000000..a56c3ca9c4 Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.tw.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.ur.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.ur.png new file mode 100644 index 0000000000..ba2cc9553f Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.ur.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.vi.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.vi.png new file mode 100644 index 0000000000..1371848cd3 Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.vi.png differ diff --git a/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.zh.png b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.zh.png new file mode 100644 index 0000000000..abd5d597a8 Binary files /dev/null and b/translated_images/copilot-dataverse-table.c5f880524e2972b0af9112ce0d52624b8d8cc78ab992921f0e60c7edd393217a.zh.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.ar.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.ar.png new file mode 100644 index 0000000000..e1f67b99b9 Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.ar.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.bg.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.bg.png new file mode 100644 index 0000000000..6d6d291678 Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.bg.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.bn.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.bn.png new file mode 100644 index 0000000000..cd840c025f Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.bn.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.br.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.br.png new file mode 100644 index 0000000000..0f4d6efcc7 Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.br.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.cs.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.cs.png new file mode 100644 index 0000000000..95d255caef Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.cs.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.da.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.da.png new file mode 100644 index 0000000000..8ef419f433 Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.da.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.de.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.de.png new file mode 100644 index 0000000000..e52d0b0741 Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.de.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.el.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.el.png new file mode 100644 index 0000000000..7823053847 Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.el.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.en.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.en.png new file mode 100644 index 0000000000..1a33e952c2 Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.en.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.es.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.es.png new file mode 100644 index 0000000000..b884ab15ea Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.es.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.fa.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.fa.png new file mode 100644 index 0000000000..aeb6e09260 Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.fa.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.fi.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.fi.png new file mode 100644 index 0000000000..2756cc6d66 Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.fi.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.fr.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.fr.png new file mode 100644 index 0000000000..dd18018451 Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.fr.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.he.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.he.png new file mode 100644 index 0000000000..f2ec43da30 Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.he.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.hi.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.hi.png new file mode 100644 index 0000000000..f456985488 Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.hi.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.hk.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.hk.png new file mode 100644 index 0000000000..aa93b10252 Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.hk.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.hr.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.hr.png new file mode 100644 index 0000000000..9bfc3c246d Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.hr.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.hu.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.hu.png new file mode 100644 index 0000000000..c48978c1dc Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.hu.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.id.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.id.png new file mode 100644 index 0000000000..d5553e1663 Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.id.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.it.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.it.png new file mode 100644 index 0000000000..3d7dd2e470 Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.it.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.ja.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.ja.png new file mode 100644 index 0000000000..e44e9b9699 Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.ja.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.ko.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.ko.png new file mode 100644 index 0000000000..a99925f71e Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.ko.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.mo.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.mo.png new file mode 100644 index 0000000000..b7cea92ab9 Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.mo.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.mr.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.mr.png new file mode 100644 index 0000000000..084679190b Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.mr.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.ms.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.ms.png new file mode 100644 index 0000000000..2f88850e8a Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.ms.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.ne.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.ne.png new file mode 100644 index 0000000000..11e14d05bd Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.ne.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.nl.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.nl.png new file mode 100644 index 0000000000..27ee2c718a Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.nl.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.no.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.no.png new file mode 100644 index 0000000000..0d2d3f9d47 Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.no.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.pa.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.pa.png new file mode 100644 index 0000000000..73ada61e53 Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.pa.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.pl.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.pl.png new file mode 100644 index 0000000000..09b162a4c7 Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.pl.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.pt.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.pt.png new file mode 100644 index 0000000000..13e0001c33 Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.pt.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.ro.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.ro.png new file mode 100644 index 0000000000..4f9b320c4c Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.ro.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.ru.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.ru.png new file mode 100644 index 0000000000..011c326d07 Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.ru.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.sk.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.sk.png new file mode 100644 index 0000000000..d4b827696b Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.sk.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.sl.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.sl.png new file mode 100644 index 0000000000..d8864dec85 Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.sl.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.sr.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.sr.png new file mode 100644 index 0000000000..ede7da415b Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.sr.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.sv.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.sv.png new file mode 100644 index 0000000000..5db7155c31 Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.sv.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.sw.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.sw.png new file mode 100644 index 0000000000..77446e7ff2 Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.sw.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.th.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.th.png new file mode 100644 index 0000000000..ba4ae21f57 Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.th.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.tl.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.tl.png new file mode 100644 index 0000000000..946b64070b Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.tl.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.tr.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.tr.png new file mode 100644 index 0000000000..239afe17f1 Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.tr.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.tw.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.tw.png new file mode 100644 index 0000000000..7989696b42 Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.tw.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.ur.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.ur.png new file mode 100644 index 0000000000..561354b863 Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.ur.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.vi.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.vi.png new file mode 100644 index 0000000000..8d4f185d03 Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.vi.png differ diff --git a/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.zh.png b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.zh.png new file mode 100644 index 0000000000..a675f66f3a Binary files /dev/null and b/translated_images/copilot-new-column.48af3bb080c13599fb73ee32cc18101dc0cf61992d0dfe15b8bc4aa75a6c6a34.zh.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.ar.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.ar.png new file mode 100644 index 0000000000..c414ff8e9c Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.ar.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.bg.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.bg.png new file mode 100644 index 0000000000..8ae9170a7e Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.bg.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.bn.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.bn.png new file mode 100644 index 0000000000..d77cf71850 Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.bn.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.br.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.br.png new file mode 100644 index 0000000000..2514471454 Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.br.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.cs.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.cs.png new file mode 100644 index 0000000000..c1feb5743c Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.cs.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.da.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.da.png new file mode 100644 index 0000000000..ff75c3d4ea Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.da.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.de.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.de.png new file mode 100644 index 0000000000..7b6ccd942b Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.de.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.el.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.el.png new file mode 100644 index 0000000000..9c8533a703 Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.el.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.en.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.en.png new file mode 100644 index 0000000000..36d90f7bdc Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.en.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.es.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.es.png new file mode 100644 index 0000000000..77d1dd4fd0 Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.es.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.fa.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.fa.png new file mode 100644 index 0000000000..5d8f02cc93 Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.fa.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.fi.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.fi.png new file mode 100644 index 0000000000..09343fb58a Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.fi.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.fr.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.fr.png new file mode 100644 index 0000000000..61473d2276 Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.fr.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.he.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.he.png new file mode 100644 index 0000000000..df41633f19 Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.he.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.hi.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.hi.png new file mode 100644 index 0000000000..8a0cac9254 Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.hi.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.hk.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.hk.png new file mode 100644 index 0000000000..004b634d21 Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.hk.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.hr.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.hr.png new file mode 100644 index 0000000000..a81bfd806b Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.hr.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.hu.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.hu.png new file mode 100644 index 0000000000..c49fe1a4cf Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.hu.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.id.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.id.png new file mode 100644 index 0000000000..232cd9c676 Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.id.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.it.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.it.png new file mode 100644 index 0000000000..5aead7ff5b Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.it.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.ja.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.ja.png new file mode 100644 index 0000000000..7941ec47ae Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.ja.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.ko.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.ko.png new file mode 100644 index 0000000000..cc94670fb9 Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.ko.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.mo.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.mo.png new file mode 100644 index 0000000000..6ec302c1c3 Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.mo.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.mr.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.mr.png new file mode 100644 index 0000000000..33a5b5e816 Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.mr.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.ms.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.ms.png new file mode 100644 index 0000000000..de47944d9c Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.ms.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.ne.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.ne.png new file mode 100644 index 0000000000..ecded9329f Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.ne.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.nl.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.nl.png new file mode 100644 index 0000000000..4acc7ae8cc Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.nl.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.no.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.no.png new file mode 100644 index 0000000000..e716cf8d59 Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.no.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.pa.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.pa.png new file mode 100644 index 0000000000..42e71e5c5b Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.pa.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.pl.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.pl.png new file mode 100644 index 0000000000..dd584fd82d Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.pl.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.pt.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.pt.png new file mode 100644 index 0000000000..9cc0b445e8 Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.pt.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.ro.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.ro.png new file mode 100644 index 0000000000..6737a47489 Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.ro.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.ru.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.ru.png new file mode 100644 index 0000000000..eeb0497699 Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.ru.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.sk.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.sk.png new file mode 100644 index 0000000000..a962ec26a0 Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.sk.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.sl.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.sl.png new file mode 100644 index 0000000000..ab39eb976b Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.sl.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.sr.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.sr.png new file mode 100644 index 0000000000..f3eb3582a2 Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.sr.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.sv.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.sv.png new file mode 100644 index 0000000000..c934a7c877 Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.sv.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.sw.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.sw.png new file mode 100644 index 0000000000..410e96b531 Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.sw.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.th.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.th.png new file mode 100644 index 0000000000..720cb53a49 Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.th.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.tl.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.tl.png new file mode 100644 index 0000000000..7487669ea7 Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.tl.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.tr.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.tr.png new file mode 100644 index 0000000000..6c158d574b Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.tr.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.tw.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.tw.png new file mode 100644 index 0000000000..d0f1b64fc3 Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.tw.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.ur.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.ur.png new file mode 100644 index 0000000000..aee28893e5 Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.ur.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.vi.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.vi.png new file mode 100644 index 0000000000..5a5d827190 Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.vi.png differ diff --git a/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.zh.png b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.zh.png new file mode 100644 index 0000000000..7c0dc48068 Binary files /dev/null and b/translated_images/copilot-new-screen.30341e89604440b4c91eb55d258276fd6e283bfab376c57501f0b3caeaaf2fda.zh.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.ar.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.ar.png new file mode 100644 index 0000000000..70f6301da2 Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.ar.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.bg.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.bg.png new file mode 100644 index 0000000000..775221a636 Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.bg.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.bn.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.bn.png new file mode 100644 index 0000000000..5d6a0b0e4d Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.bn.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.br.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.br.png new file mode 100644 index 0000000000..e0a6044476 Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.br.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.cs.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.cs.png new file mode 100644 index 0000000000..e1c73daedf Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.cs.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.da.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.da.png new file mode 100644 index 0000000000..42e6d4b646 Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.da.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.de.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.de.png new file mode 100644 index 0000000000..499df18eaf Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.de.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.el.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.el.png new file mode 100644 index 0000000000..e470581a90 Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.el.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.en.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.en.png new file mode 100644 index 0000000000..1abb57c191 Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.en.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.es.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.es.png new file mode 100644 index 0000000000..913cde3fe7 Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.es.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.fa.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.fa.png new file mode 100644 index 0000000000..99d1038051 Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.fa.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.fi.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.fi.png new file mode 100644 index 0000000000..cb4c0c5dcd Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.fi.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.fr.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.fr.png new file mode 100644 index 0000000000..c08f10bc83 Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.fr.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.he.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.he.png new file mode 100644 index 0000000000..0f555bafb7 Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.he.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.hi.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.hi.png new file mode 100644 index 0000000000..331ad039ec Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.hi.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.hk.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.hk.png new file mode 100644 index 0000000000..4d8c1c832a Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.hk.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.hr.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.hr.png new file mode 100644 index 0000000000..5a382ea9a5 Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.hr.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.hu.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.hu.png new file mode 100644 index 0000000000..15e1cb3c59 Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.hu.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.id.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.id.png new file mode 100644 index 0000000000..6dad33f7f9 Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.id.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.it.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.it.png new file mode 100644 index 0000000000..d769c67e08 Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.it.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.ja.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.ja.png new file mode 100644 index 0000000000..c23bc36324 Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.ja.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.ko.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.ko.png new file mode 100644 index 0000000000..28b7b06a39 Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.ko.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.mo.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.mo.png new file mode 100644 index 0000000000..1c02a0c57c Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.mo.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.mr.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.mr.png new file mode 100644 index 0000000000..59a1d021b3 Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.mr.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.ms.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.ms.png new file mode 100644 index 0000000000..c106bf3a1c Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.ms.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.ne.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.ne.png new file mode 100644 index 0000000000..4f6d4ecc03 Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.ne.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.nl.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.nl.png new file mode 100644 index 0000000000..79bfe19e72 Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.nl.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.no.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.no.png new file mode 100644 index 0000000000..640f3dc2bd Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.no.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.pa.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.pa.png new file mode 100644 index 0000000000..b9239f9d5c Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.pa.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.pl.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.pl.png new file mode 100644 index 0000000000..454a5b7551 Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.pl.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.pt.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.pt.png new file mode 100644 index 0000000000..80c855161f Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.pt.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.ro.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.ro.png new file mode 100644 index 0000000000..9fd1771e73 Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.ro.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.ru.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.ru.png new file mode 100644 index 0000000000..432300701b Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.ru.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.sk.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.sk.png new file mode 100644 index 0000000000..8adf8a41bf Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.sk.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.sl.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.sl.png new file mode 100644 index 0000000000..7beeeb9ae1 Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.sl.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.sr.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.sr.png new file mode 100644 index 0000000000..fcd3a7ad04 Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.sr.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.sv.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.sv.png new file mode 100644 index 0000000000..81310e859b Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.sv.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.sw.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.sw.png new file mode 100644 index 0000000000..511d405e0b Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.sw.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.th.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.th.png new file mode 100644 index 0000000000..9fb0f1c13f Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.th.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.tl.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.tl.png new file mode 100644 index 0000000000..e22366ca82 Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.tl.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.tr.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.tr.png new file mode 100644 index 0000000000..801ceb103d Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.tr.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.tw.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.tw.png new file mode 100644 index 0000000000..33d1a19ae4 Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.tw.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.ur.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.ur.png new file mode 100644 index 0000000000..1f6a1170f5 Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.ur.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.vi.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.vi.png new file mode 100644 index 0000000000..ea19da7f05 Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.vi.png differ diff --git a/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.zh.png b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.zh.png new file mode 100644 index 0000000000..0b7133d0c6 Binary files /dev/null and b/translated_images/create-prompt-gpt.dd95b0323841a7be30684e4a48445f063209ea7ebb81e5f7f56787b12cf9c04b.zh.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.ar.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.ar.png new file mode 100644 index 0000000000..7f31d2e0c1 Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.ar.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.bg.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.bg.png new file mode 100644 index 0000000000..82e671c937 Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.bg.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.bn.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.bn.png new file mode 100644 index 0000000000..7a18b10424 Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.bn.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.br.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.br.png new file mode 100644 index 0000000000..2b5c634fb1 Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.br.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.cs.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.cs.png new file mode 100644 index 0000000000..a2bc7637f6 Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.cs.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.da.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.da.png new file mode 100644 index 0000000000..44daeeaef4 Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.da.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.de.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.de.png new file mode 100644 index 0000000000..a7df278fe3 Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.de.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.el.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.el.png new file mode 100644 index 0000000000..4a9b48e1bd Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.el.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.en.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.en.png new file mode 100644 index 0000000000..0e435909f9 Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.en.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.es.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.es.png new file mode 100644 index 0000000000..9b832c4725 Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.es.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.fa.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.fa.png new file mode 100644 index 0000000000..b04e2d68ca Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.fa.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.fi.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.fi.png new file mode 100644 index 0000000000..e40c80aa9d Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.fi.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.fr.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.fr.png new file mode 100644 index 0000000000..c84890d738 Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.fr.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.he.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.he.png new file mode 100644 index 0000000000..9cc3012719 Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.he.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.hi.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.hi.png new file mode 100644 index 0000000000..f3e6996693 Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.hi.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.hk.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.hk.png new file mode 100644 index 0000000000..99a696c395 Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.hk.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.hr.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.hr.png new file mode 100644 index 0000000000..8ea75bc661 Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.hr.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.hu.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.hu.png new file mode 100644 index 0000000000..fc71829899 Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.hu.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.id.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.id.png new file mode 100644 index 0000000000..f21772fd80 Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.id.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.it.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.it.png new file mode 100644 index 0000000000..182087f62b Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.it.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.ja.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.ja.png new file mode 100644 index 0000000000..eb23677a7c Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.ja.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.ko.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.ko.png new file mode 100644 index 0000000000..93d03be829 Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.ko.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.mo.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.mo.png new file mode 100644 index 0000000000..54cdfefda2 Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.mo.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.mr.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.mr.png new file mode 100644 index 0000000000..f9f03cb438 Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.mr.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.ms.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.ms.png new file mode 100644 index 0000000000..54a85eed4d Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.ms.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.ne.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.ne.png new file mode 100644 index 0000000000..614579cd6d Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.ne.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.nl.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.nl.png new file mode 100644 index 0000000000..f70a8bc9ba Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.nl.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.no.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.no.png new file mode 100644 index 0000000000..acf3fef71a Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.no.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.pa.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.pa.png new file mode 100644 index 0000000000..7474ac2362 Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.pa.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.pl.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.pl.png new file mode 100644 index 0000000000..bbfa000c99 Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.pl.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.pt.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.pt.png new file mode 100644 index 0000000000..f35d9496c6 Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.pt.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.ro.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.ro.png new file mode 100644 index 0000000000..080d5d529b Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.ro.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.ru.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.ru.png new file mode 100644 index 0000000000..911281cf77 Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.ru.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.sk.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.sk.png new file mode 100644 index 0000000000..59b39228cb Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.sk.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.sl.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.sl.png new file mode 100644 index 0000000000..43832f4bd7 Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.sl.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.sr.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.sr.png new file mode 100644 index 0000000000..7e7132e91f Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.sr.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.sv.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.sv.png new file mode 100644 index 0000000000..be7917a9ff Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.sv.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.sw.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.sw.png new file mode 100644 index 0000000000..9ca7c6c75c Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.sw.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.th.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.th.png new file mode 100644 index 0000000000..9bea7b168e Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.th.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.tl.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.tl.png new file mode 100644 index 0000000000..07a848fd12 Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.tl.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.tr.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.tr.png new file mode 100644 index 0000000000..be8df626a7 Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.tr.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.tw.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.tw.png new file mode 100644 index 0000000000..f3fa256583 Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.tw.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.ur.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.ur.png new file mode 100644 index 0000000000..746bc89c82 Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.ur.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.vi.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.vi.png new file mode 100644 index 0000000000..e9ba1ca386 Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.vi.png differ diff --git a/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.zh.png b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.zh.png new file mode 100644 index 0000000000..deb99a1469 Binary files /dev/null and b/translated_images/creative-writing-example.c739bb30fe99dc42dc039c166694fd644983376af24548793db26b582b149e7b.zh.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.ar.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.ar.png new file mode 100644 index 0000000000..1e0e6ad6a1 Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.ar.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.bg.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.bg.png new file mode 100644 index 0000000000..e50f192472 Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.bg.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.bn.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.bn.png new file mode 100644 index 0000000000..821c5d325a Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.bn.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.br.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.br.png new file mode 100644 index 0000000000..638a9b3d5f Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.br.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.cs.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.cs.png new file mode 100644 index 0000000000..e1c6dfa59e Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.cs.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.da.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.da.png new file mode 100644 index 0000000000..be953931af Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.da.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.de.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.de.png new file mode 100644 index 0000000000..2ca57b8290 Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.de.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.el.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.el.png new file mode 100644 index 0000000000..419bccf19f Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.el.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.en.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.en.png new file mode 100644 index 0000000000..64bf0c2946 Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.en.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.es.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.es.png new file mode 100644 index 0000000000..2ff26f2835 Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.es.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.fa.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.fa.png new file mode 100644 index 0000000000..7e21d9d729 Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.fa.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.fi.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.fi.png new file mode 100644 index 0000000000..2040326f47 Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.fi.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.fr.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.fr.png new file mode 100644 index 0000000000..f26ac422a1 Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.fr.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.he.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.he.png new file mode 100644 index 0000000000..66005eee8e Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.he.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.hi.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.hi.png new file mode 100644 index 0000000000..a7eb5e916d Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.hi.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.hk.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.hk.png new file mode 100644 index 0000000000..894410a7b3 Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.hk.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.hr.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.hr.png new file mode 100644 index 0000000000..4a64b78135 Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.hr.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.hu.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.hu.png new file mode 100644 index 0000000000..77995c9a70 Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.hu.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.id.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.id.png new file mode 100644 index 0000000000..87bc3d58fb Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.id.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.it.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.it.png new file mode 100644 index 0000000000..0d4de87740 Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.it.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.ja.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.ja.png new file mode 100644 index 0000000000..9164ae1704 Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.ja.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.ko.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.ko.png new file mode 100644 index 0000000000..14b7b17cea Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.ko.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.mo.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.mo.png new file mode 100644 index 0000000000..b07dd67108 Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.mo.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.mr.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.mr.png new file mode 100644 index 0000000000..ca8533d0c1 Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.mr.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.ms.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.ms.png new file mode 100644 index 0000000000..80986f9e6e Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.ms.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.ne.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.ne.png new file mode 100644 index 0000000000..12cc0e72ba Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.ne.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.nl.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.nl.png new file mode 100644 index 0000000000..dc2ffa43dd Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.nl.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.no.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.no.png new file mode 100644 index 0000000000..0052577147 Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.no.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.pa.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.pa.png new file mode 100644 index 0000000000..713a6011fc Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.pa.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.pl.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.pl.png new file mode 100644 index 0000000000..ae8d6037db Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.pl.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.pt.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.pt.png new file mode 100644 index 0000000000..eebbff7c23 Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.pt.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.ro.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.ro.png new file mode 100644 index 0000000000..87d6a40483 Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.ro.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.ru.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.ru.png new file mode 100644 index 0000000000..137481c44b Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.ru.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.sk.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.sk.png new file mode 100644 index 0000000000..47b21d4972 Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.sk.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.sl.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.sl.png new file mode 100644 index 0000000000..608fc471a5 Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.sl.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.sr.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.sr.png new file mode 100644 index 0000000000..f36fd7f5ad Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.sr.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.sv.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.sv.png new file mode 100644 index 0000000000..6b83d84fe3 Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.sv.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.sw.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.sw.png new file mode 100644 index 0000000000..63f9220402 Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.sw.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.th.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.th.png new file mode 100644 index 0000000000..ccafbd10a0 Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.th.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.tl.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.tl.png new file mode 100644 index 0000000000..9f43d2d8d2 Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.tl.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.tr.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.tr.png new file mode 100644 index 0000000000..1f333b5670 Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.tr.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.tw.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.tw.png new file mode 100644 index 0000000000..fb7cdf0bf9 Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.tw.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.ur.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.ur.png new file mode 100644 index 0000000000..f37931f361 Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.ur.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.vi.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.vi.png new file mode 100644 index 0000000000..c18c67dd4c Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.vi.png differ diff --git a/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.zh.png b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.zh.png new file mode 100644 index 0000000000..974640a9e8 Binary files /dev/null and b/translated_images/custom-instructions.950e3bf1d66f052ff5c50cd6722f1fcb532089abe33d833c190a3796f4a09827.zh.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.ar.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.ar.png new file mode 100644 index 0000000000..4d16dff7ae Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.ar.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.bg.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.bg.png new file mode 100644 index 0000000000..0250eec6aa Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.bg.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.bn.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.bn.png new file mode 100644 index 0000000000..c3435273da Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.bn.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.br.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.br.png new file mode 100644 index 0000000000..b3847899d4 Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.br.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.cs.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.cs.png new file mode 100644 index 0000000000..2b3fd60f3f Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.cs.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.da.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.da.png new file mode 100644 index 0000000000..78796dfdc9 Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.da.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.de.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.de.png new file mode 100644 index 0000000000..cbd9c897fe Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.de.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.el.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.el.png new file mode 100644 index 0000000000..9134be7cfe Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.el.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.en.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.en.png new file mode 100644 index 0000000000..a8ed15ba9e Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.en.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.es.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.es.png new file mode 100644 index 0000000000..b7b8e77f22 Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.es.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.fa.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.fa.png new file mode 100644 index 0000000000..a6e7bc75d9 Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.fa.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.fi.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.fi.png new file mode 100644 index 0000000000..7634467e18 Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.fi.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.fr.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.fr.png new file mode 100644 index 0000000000..09e6d2c880 Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.fr.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.he.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.he.png new file mode 100644 index 0000000000..e1013b369d Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.he.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.hi.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.hi.png new file mode 100644 index 0000000000..97eb2b1932 Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.hi.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.hk.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.hk.png new file mode 100644 index 0000000000..874a31b4d9 Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.hk.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.hr.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.hr.png new file mode 100644 index 0000000000..22803e735c Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.hr.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.hu.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.hu.png new file mode 100644 index 0000000000..cce453d3bf Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.hu.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.id.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.id.png new file mode 100644 index 0000000000..f8cb92e1ba Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.id.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.it.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.it.png new file mode 100644 index 0000000000..9878b1aab5 Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.it.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.ja.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.ja.png new file mode 100644 index 0000000000..6a3fc68e16 Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.ja.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.ko.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.ko.png new file mode 100644 index 0000000000..435271f467 Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.ko.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.mo.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.mo.png new file mode 100644 index 0000000000..eb280c8dbd Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.mo.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.mr.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.mr.png new file mode 100644 index 0000000000..143a432f7a Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.mr.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.ms.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.ms.png new file mode 100644 index 0000000000..cd30128c8f Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.ms.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.ne.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.ne.png new file mode 100644 index 0000000000..f1a6d93f9a Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.ne.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.nl.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.nl.png new file mode 100644 index 0000000000..8b7a527faa Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.nl.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.no.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.no.png new file mode 100644 index 0000000000..f0c6ebf726 Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.no.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.pa.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.pa.png new file mode 100644 index 0000000000..66dd33d42f Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.pa.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.pl.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.pl.png new file mode 100644 index 0000000000..abeac75e8a Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.pl.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.pt.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.pt.png new file mode 100644 index 0000000000..f7c1d20d31 Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.pt.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.ro.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.ro.png new file mode 100644 index 0000000000..f59c626625 Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.ro.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.ru.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.ru.png new file mode 100644 index 0000000000..c6d89efda2 Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.ru.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.sk.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.sk.png new file mode 100644 index 0000000000..807ff093fc Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.sk.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.sl.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.sl.png new file mode 100644 index 0000000000..3b48003f99 Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.sl.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.sr.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.sr.png new file mode 100644 index 0000000000..a5752bb906 Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.sr.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.sv.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.sv.png new file mode 100644 index 0000000000..3e0c038afd Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.sv.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.sw.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.sw.png new file mode 100644 index 0000000000..a3e7daf16f Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.sw.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.th.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.th.png new file mode 100644 index 0000000000..098f7e8cd6 Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.th.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.tl.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.tl.png new file mode 100644 index 0000000000..76065af113 Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.tl.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.tr.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.tr.png new file mode 100644 index 0000000000..b63b8916b7 Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.tr.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.tw.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.tw.png new file mode 100644 index 0000000000..e25173f67e Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.tw.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.ur.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.ur.png new file mode 100644 index 0000000000..dfe226bd3d Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.ur.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.vi.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.vi.png new file mode 100644 index 0000000000..0339285673 Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.vi.png differ diff --git a/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.zh.png b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.zh.png new file mode 100644 index 0000000000..7b7aa8a26e Binary files /dev/null and b/translated_images/describe-new-table.545cd3568f4bee6aded8021cc0653013ff982f4ccdc628b4800d1f0be5ddff9b.zh.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.ar.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.ar.png new file mode 100644 index 0000000000..3215d878c7 Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.ar.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.bg.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.bg.png new file mode 100644 index 0000000000..db5b06212a Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.bg.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.bn.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.bn.png new file mode 100644 index 0000000000..bccfcbdc16 Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.bn.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.br.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.br.png new file mode 100644 index 0000000000..9df364e3ba Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.br.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.cs.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.cs.png new file mode 100644 index 0000000000..343642dbe5 Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.cs.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.da.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.da.png new file mode 100644 index 0000000000..c9573b152e Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.da.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.de.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.de.png new file mode 100644 index 0000000000..57092ae74f Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.de.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.el.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.el.png new file mode 100644 index 0000000000..2e6a77e342 Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.el.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.en.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.en.png new file mode 100644 index 0000000000..2c2d05e210 Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.en.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.es.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.es.png new file mode 100644 index 0000000000..3d8700c0af Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.es.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.fa.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.fa.png new file mode 100644 index 0000000000..80d2c92cba Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.fa.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.fi.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.fi.png new file mode 100644 index 0000000000..7dced98a8a Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.fi.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.fr.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.fr.png new file mode 100644 index 0000000000..860e5ee705 Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.fr.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.he.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.he.png new file mode 100644 index 0000000000..1759c4637a Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.he.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.hi.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.hi.png new file mode 100644 index 0000000000..6a95afd68e Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.hi.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.hk.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.hk.png new file mode 100644 index 0000000000..6645900b21 Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.hk.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.hr.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.hr.png new file mode 100644 index 0000000000..a9e01d85c8 Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.hr.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.hu.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.hu.png new file mode 100644 index 0000000000..aca97674a5 Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.hu.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.id.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.id.png new file mode 100644 index 0000000000..743c0a637b Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.id.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.it.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.it.png new file mode 100644 index 0000000000..2cbf635da7 Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.it.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.ja.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.ja.png new file mode 100644 index 0000000000..953b2624e6 Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.ja.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.ko.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.ko.png new file mode 100644 index 0000000000..9df1ad801a Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.ko.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.mo.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.mo.png new file mode 100644 index 0000000000..23a813b4f5 Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.mo.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.mr.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.mr.png new file mode 100644 index 0000000000..b2cea46726 Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.mr.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.ms.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.ms.png new file mode 100644 index 0000000000..f8a008b113 Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.ms.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.ne.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.ne.png new file mode 100644 index 0000000000..e58236347a Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.ne.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.nl.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.nl.png new file mode 100644 index 0000000000..f22c5042c8 Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.nl.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.no.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.no.png new file mode 100644 index 0000000000..98bec3d5c0 Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.no.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.pa.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.pa.png new file mode 100644 index 0000000000..c74c88bc94 Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.pa.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.pl.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.pl.png new file mode 100644 index 0000000000..fcc5e08e0b Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.pl.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.pt.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.pt.png new file mode 100644 index 0000000000..83746b1386 Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.pt.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.ro.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.ro.png new file mode 100644 index 0000000000..c8398a2df2 Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.ro.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.ru.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.ru.png new file mode 100644 index 0000000000..0660816981 Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.ru.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.sk.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.sk.png new file mode 100644 index 0000000000..c09140b137 Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.sk.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.sl.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.sl.png new file mode 100644 index 0000000000..a11a742650 Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.sl.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.sr.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.sr.png new file mode 100644 index 0000000000..385d8779f9 Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.sr.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.sv.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.sv.png new file mode 100644 index 0000000000..c3c9dab225 Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.sv.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.sw.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.sw.png new file mode 100644 index 0000000000..8b5384e638 Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.sw.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.th.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.th.png new file mode 100644 index 0000000000..24ab57542e Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.th.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.tl.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.tl.png new file mode 100644 index 0000000000..15b2928fa8 Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.tl.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.tr.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.tr.png new file mode 100644 index 0000000000..616273346e Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.tr.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.tw.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.tw.png new file mode 100644 index 0000000000..e0bf4953a7 Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.tw.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.ur.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.ur.png new file mode 100644 index 0000000000..ac6e8c2697 Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.ur.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.vi.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.vi.png new file mode 100644 index 0000000000..6f6ddd1afc Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.vi.png differ diff --git a/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.zh.png b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.zh.png new file mode 100644 index 0000000000..2730af6346 Binary files /dev/null and b/translated_images/encoder-decode.75eebc7093ccefec17568eebc80d3d0b831ecf2ea204566377a04c77a5a57ebb.zh.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.ar.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.ar.png new file mode 100644 index 0000000000..be1d8a6d90 Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.ar.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.bg.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.bg.png new file mode 100644 index 0000000000..7586a130fe Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.bg.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.bn.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.bn.png new file mode 100644 index 0000000000..5ef91ed00b Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.bn.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.br.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.br.png new file mode 100644 index 0000000000..424f1f74fb Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.br.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.cs.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.cs.png new file mode 100644 index 0000000000..77810b1a2a Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.cs.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.da.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.da.png new file mode 100644 index 0000000000..d394cf910b Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.da.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.de.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.de.png new file mode 100644 index 0000000000..02b637e91f Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.de.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.el.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.el.png new file mode 100644 index 0000000000..a218f19ff9 Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.el.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.en.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.en.png new file mode 100644 index 0000000000..99cf546a8d Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.en.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.es.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.es.png new file mode 100644 index 0000000000..c5a3912da5 Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.es.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.fa.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.fa.png new file mode 100644 index 0000000000..1f4a2c2612 Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.fa.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.fi.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.fi.png new file mode 100644 index 0000000000..98b1d8de8f Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.fi.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.fr.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.fr.png new file mode 100644 index 0000000000..742024ceb7 Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.fr.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.he.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.he.png new file mode 100644 index 0000000000..9e240d284f Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.he.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.hi.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.hi.png new file mode 100644 index 0000000000..af30121e52 Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.hi.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.hk.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.hk.png new file mode 100644 index 0000000000..3247cd9f61 Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.hk.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.hr.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.hr.png new file mode 100644 index 0000000000..d62670a7b1 Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.hr.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.hu.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.hu.png new file mode 100644 index 0000000000..8ea0753466 Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.hu.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.id.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.id.png new file mode 100644 index 0000000000..e30a5e5437 Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.id.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.it.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.it.png new file mode 100644 index 0000000000..7fa95a7620 Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.it.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.ja.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.ja.png new file mode 100644 index 0000000000..59423e8037 Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.ja.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.ko.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.ko.png new file mode 100644 index 0000000000..65788b5b6a Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.ko.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.mo.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.mo.png new file mode 100644 index 0000000000..4bb532461d Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.mo.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.mr.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.mr.png new file mode 100644 index 0000000000..b2fc61b637 Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.mr.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.ms.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.ms.png new file mode 100644 index 0000000000..b82ba77558 Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.ms.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.ne.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.ne.png new file mode 100644 index 0000000000..69cdd70125 Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.ne.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.nl.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.nl.png new file mode 100644 index 0000000000..d40db46b7c Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.nl.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.no.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.no.png new file mode 100644 index 0000000000..3acafcc76a Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.no.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.pa.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.pa.png new file mode 100644 index 0000000000..37f43399c2 Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.pa.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.pl.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.pl.png new file mode 100644 index 0000000000..eccf87bd3f Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.pl.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.pt.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.pt.png new file mode 100644 index 0000000000..2c01edd860 Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.pt.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.ro.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.ro.png new file mode 100644 index 0000000000..9dbc534292 Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.ro.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.ru.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.ru.png new file mode 100644 index 0000000000..bc5024fb4b Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.ru.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.sk.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.sk.png new file mode 100644 index 0000000000..30829220bf Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.sk.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.sl.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.sl.png new file mode 100644 index 0000000000..50c25b492e Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.sl.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.sr.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.sr.png new file mode 100644 index 0000000000..e9258336e5 Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.sr.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.sv.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.sv.png new file mode 100644 index 0000000000..379799e13f Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.sv.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.sw.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.sw.png new file mode 100644 index 0000000000..86f6e44226 Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.sw.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.th.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.th.png new file mode 100644 index 0000000000..b893c577c7 Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.th.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.tl.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.tl.png new file mode 100644 index 0000000000..5303143252 Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.tl.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.tr.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.tr.png new file mode 100644 index 0000000000..229059b8e3 Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.tr.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.tw.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.tw.png new file mode 100644 index 0000000000..8b13d11b8a Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.tw.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.ur.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.ur.png new file mode 100644 index 0000000000..4c91248c2e Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.ur.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.vi.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.vi.png new file mode 100644 index 0000000000..ae092e59a8 Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.vi.png differ diff --git a/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.zh.png b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.zh.png new file mode 100644 index 0000000000..cc17ae79cd Binary files /dev/null and b/translated_images/explanability-in-ai.19a61ee8eec9aec2d55d420c49cc3bb167db208c05bddb8d4e1e9e10ea8746b8.zh.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.ar.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.ar.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.ar.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.bg.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.bg.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.bg.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.bn.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.bn.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.bn.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.br.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.br.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.br.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.cs.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.cs.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.cs.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.da.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.da.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.da.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.de.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.de.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.de.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.el.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.el.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.el.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.en.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.en.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.en.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.es.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.es.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.es.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.fa.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.fa.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.fa.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.fi.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.fi.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.fi.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.fr.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.fr.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.fr.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.he.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.he.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.he.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.hi.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.hi.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.hi.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.hk.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.hk.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.hk.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.hr.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.hr.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.hr.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.hu.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.hu.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.hu.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.id.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.id.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.id.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.it.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.it.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.it.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.ja.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.ja.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.ja.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.ko.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.ko.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.ko.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.mo.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.mo.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.mo.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.mr.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.mr.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.mr.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.ms.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.ms.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.ms.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.ne.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.ne.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.ne.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.nl.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.nl.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.nl.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.no.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.no.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.no.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.pa.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.pa.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.pa.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.pl.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.pl.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.pl.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.pt.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.pt.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.pt.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.ro.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.ro.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.ro.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.ru.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.ru.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.ru.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.sk.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.sk.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.sk.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.sl.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.sl.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.sl.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.sr.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.sr.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.sr.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.sv.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.sv.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.sv.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.sw.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.sw.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.sw.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.th.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.th.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.th.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.tl.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.tl.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.tl.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.tr.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.tr.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.tr.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.tw.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.tw.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.tw.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.ur.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.ur.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.ur.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.vi.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.vi.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.vi.png differ diff --git a/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.zh.png b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.zh.png new file mode 100644 index 0000000000..fc07d52e15 Binary files /dev/null and b/translated_images/favicon-16x16.88755b3c548b7ebad11e1667c746cb5c923de089ff864445f845dd453917944a.zh.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.ar.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.ar.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.ar.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.bg.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.bg.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.bg.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.bn.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.bn.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.bn.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.br.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.br.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.br.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.cs.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.cs.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.cs.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.da.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.da.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.da.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.de.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.de.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.de.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.el.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.el.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.el.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.en.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.en.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.en.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.es.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.es.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.es.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.fa.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.fa.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.fa.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.fi.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.fi.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.fi.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.fr.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.fr.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.fr.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.he.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.he.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.he.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.hi.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.hi.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.hi.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.hk.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.hk.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.hk.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.hr.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.hr.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.hr.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.hu.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.hu.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.hu.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.id.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.id.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.id.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.it.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.it.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.it.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.ja.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.ja.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.ja.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.ko.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.ko.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.ko.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.mo.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.mo.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.mo.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.mr.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.mr.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.mr.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.ms.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.ms.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.ms.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.ne.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.ne.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.ne.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.nl.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.nl.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.nl.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.no.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.no.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.no.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.pa.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.pa.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.pa.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.pl.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.pl.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.pl.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.pt.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.pt.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.pt.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.ro.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.ro.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.ro.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.ru.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.ru.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.ru.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.sk.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.sk.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.sk.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.sl.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.sl.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.sl.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.sr.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.sr.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.sr.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.sv.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.sv.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.sv.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.sw.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.sw.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.sw.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.th.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.th.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.th.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.tl.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.tl.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.tl.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.tr.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.tr.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.tr.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.tw.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.tw.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.tw.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.ur.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.ur.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.ur.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.vi.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.vi.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.vi.png differ diff --git a/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.zh.png b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.zh.png new file mode 100644 index 0000000000..9891be9e14 Binary files /dev/null and b/translated_images/favicon-32x32.ed52495f97ee457777d1c74f1ae304b24e16d5aa0eb4cdccdaad592a068219ff.zh.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.ar.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.ar.png new file mode 100644 index 0000000000..ad3002d290 Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.ar.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.bg.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.bg.png new file mode 100644 index 0000000000..d881cac283 Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.bg.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.bn.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.bn.png new file mode 100644 index 0000000000..2d990cec92 Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.bn.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.br.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.br.png new file mode 100644 index 0000000000..01a3760310 Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.br.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.cs.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.cs.png new file mode 100644 index 0000000000..e34aa2b51f Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.cs.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.da.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.da.png new file mode 100644 index 0000000000..372b0db41b Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.da.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.de.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.de.png new file mode 100644 index 0000000000..b2260b9d1c Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.de.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.el.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.el.png new file mode 100644 index 0000000000..89344da3f7 Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.el.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.en.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.en.png new file mode 100644 index 0000000000..70e8f43fac Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.en.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.es.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.es.png new file mode 100644 index 0000000000..1997987e71 Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.es.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.fa.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.fa.png new file mode 100644 index 0000000000..cb008183e2 Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.fa.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.fi.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.fi.png new file mode 100644 index 0000000000..cd999cf5b6 Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.fi.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.fr.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.fr.png new file mode 100644 index 0000000000..55624760ef Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.fr.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.he.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.he.png new file mode 100644 index 0000000000..d5aae79956 Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.he.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.hi.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.hi.png new file mode 100644 index 0000000000..491056b176 Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.hi.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.hk.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.hk.png new file mode 100644 index 0000000000..dfca536535 Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.hk.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.hr.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.hr.png new file mode 100644 index 0000000000..32089cb64f Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.hr.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.hu.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.hu.png new file mode 100644 index 0000000000..ca40bd5551 Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.hu.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.id.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.id.png new file mode 100644 index 0000000000..91d996214b Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.id.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.it.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.it.png new file mode 100644 index 0000000000..54730d973b Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.it.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.ja.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.ja.png new file mode 100644 index 0000000000..b48e64e7df Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.ja.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.ko.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.ko.png new file mode 100644 index 0000000000..3f3a12bf61 Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.ko.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.mo.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.mo.png new file mode 100644 index 0000000000..e82c234070 Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.mo.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.mr.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.mr.png new file mode 100644 index 0000000000..8e39d7948d Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.mr.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.ms.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.ms.png new file mode 100644 index 0000000000..c3cb337bc7 Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.ms.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.ne.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.ne.png new file mode 100644 index 0000000000..d7b91712ac Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.ne.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.nl.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.nl.png new file mode 100644 index 0000000000..6541849c16 Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.nl.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.no.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.no.png new file mode 100644 index 0000000000..0ccd29240f Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.no.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.pa.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.pa.png new file mode 100644 index 0000000000..4d20985b66 Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.pa.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.pl.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.pl.png new file mode 100644 index 0000000000..bd9380c601 Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.pl.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.pt.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.pt.png new file mode 100644 index 0000000000..08efdce752 Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.pt.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.ro.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.ro.png new file mode 100644 index 0000000000..13626e5544 Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.ro.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.ru.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.ru.png new file mode 100644 index 0000000000..f94c86e8f5 Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.ru.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.sk.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.sk.png new file mode 100644 index 0000000000..abfdaaa361 Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.sk.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.sl.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.sl.png new file mode 100644 index 0000000000..aecdfc4aea Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.sl.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.sr.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.sr.png new file mode 100644 index 0000000000..83a99bc998 Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.sr.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.sv.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.sv.png new file mode 100644 index 0000000000..567b394e5b Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.sv.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.sw.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.sw.png new file mode 100644 index 0000000000..2b7aafff19 Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.sw.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.th.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.th.png new file mode 100644 index 0000000000..b06b0251ac Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.th.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.tl.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.tl.png new file mode 100644 index 0000000000..f0efe3f06f Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.tl.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.tr.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.tr.png new file mode 100644 index 0000000000..278d85e3ff Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.tr.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.tw.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.tw.png new file mode 100644 index 0000000000..bc6bfc8ed9 Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.tw.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.ur.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.ur.png new file mode 100644 index 0000000000..40f1f99040 Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.ur.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.vi.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.vi.png new file mode 100644 index 0000000000..545f099fd6 Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.vi.png differ diff --git a/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.zh.png b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.zh.png new file mode 100644 index 0000000000..ec7fcaae19 Binary files /dev/null and b/translated_images/feedback-loops.2abf91e576a435333eb1b37c823a69497337abc5b50ff80c4b9ddbd52bfdbf84.zh.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.ar.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.ar.png new file mode 100644 index 0000000000..40dbd22dd7 Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.ar.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.bg.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.bg.png new file mode 100644 index 0000000000..1cf79b7202 Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.bg.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.bn.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.bn.png new file mode 100644 index 0000000000..d6f1643117 Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.bn.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.br.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.br.png new file mode 100644 index 0000000000..8632bacf58 Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.br.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.cs.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.cs.png new file mode 100644 index 0000000000..f473ecd824 Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.cs.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.da.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.da.png new file mode 100644 index 0000000000..79bc87bc94 Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.da.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.de.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.de.png new file mode 100644 index 0000000000..0db2b96e41 Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.de.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.el.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.el.png new file mode 100644 index 0000000000..1488eeec80 Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.el.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.en.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.en.png new file mode 100644 index 0000000000..089e9059d3 Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.en.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.es.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.es.png new file mode 100644 index 0000000000..2009dcf5ac Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.es.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.fa.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.fa.png new file mode 100644 index 0000000000..ff285ff737 Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.fa.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.fi.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.fi.png new file mode 100644 index 0000000000..8b8c2b16d8 Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.fi.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.fr.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.fr.png new file mode 100644 index 0000000000..7d135da9e9 Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.fr.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.he.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.he.png new file mode 100644 index 0000000000..23416bdd94 Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.he.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.hi.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.hi.png new file mode 100644 index 0000000000..16938f093d Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.hi.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.hk.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.hk.png new file mode 100644 index 0000000000..12c5310cde Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.hk.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.hr.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.hr.png new file mode 100644 index 0000000000..160d51513a Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.hr.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.hu.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.hu.png new file mode 100644 index 0000000000..919fa61097 Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.hu.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.id.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.id.png new file mode 100644 index 0000000000..38db56637b Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.id.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.it.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.it.png new file mode 100644 index 0000000000..ecc794ad38 Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.it.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.ja.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.ja.png new file mode 100644 index 0000000000..23f6cc5ae0 Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.ja.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.ko.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.ko.png new file mode 100644 index 0000000000..22b484b232 Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.ko.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.mo.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.mo.png new file mode 100644 index 0000000000..92d90e12f7 Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.mo.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.mr.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.mr.png new file mode 100644 index 0000000000..7774b46dca Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.mr.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.ms.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.ms.png new file mode 100644 index 0000000000..0e7763925c Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.ms.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.ne.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.ne.png new file mode 100644 index 0000000000..5ccc99abfc Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.ne.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.nl.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.nl.png new file mode 100644 index 0000000000..d550904522 Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.nl.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.no.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.no.png new file mode 100644 index 0000000000..67adb57063 Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.no.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.pa.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.pa.png new file mode 100644 index 0000000000..747357af49 Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.pa.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.pl.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.pl.png new file mode 100644 index 0000000000..285e86929f Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.pl.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.pt.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.pt.png new file mode 100644 index 0000000000..84c45d2001 Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.pt.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.ro.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.ro.png new file mode 100644 index 0000000000..3dcc1fe45d Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.ro.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.ru.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.ru.png new file mode 100644 index 0000000000..285ae02192 Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.ru.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.sk.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.sk.png new file mode 100644 index 0000000000..de6b77da3d Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.sk.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.sl.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.sl.png new file mode 100644 index 0000000000..f5ca8328c7 Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.sl.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.sr.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.sr.png new file mode 100644 index 0000000000..ddb3681709 Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.sr.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.sv.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.sv.png new file mode 100644 index 0000000000..5fc3da6f3f Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.sv.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.sw.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.sw.png new file mode 100644 index 0000000000..879ba0090f Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.sw.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.th.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.th.png new file mode 100644 index 0000000000..2823662dff Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.th.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.tl.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.tl.png new file mode 100644 index 0000000000..84d7943e3e Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.tl.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.tr.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.tr.png new file mode 100644 index 0000000000..99243d71c7 Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.tr.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.tw.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.tw.png new file mode 100644 index 0000000000..921c58a670 Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.tw.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.ur.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.ur.png new file mode 100644 index 0000000000..f36294b3ad Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.ur.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.vi.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.vi.png new file mode 100644 index 0000000000..e08874841e Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.vi.png differ diff --git a/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.zh.png b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.zh.png new file mode 100644 index 0000000000..f6ebe13bcb Binary files /dev/null and b/translated_images/fine-tuned-messages-panel.968b1c531f5cfd566a005e4f6283e73e53c16c4232a604e3d221edc9d2bd41ac.zh.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.ar.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.ar.png new file mode 100644 index 0000000000..f6b24d518a Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.ar.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.bg.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.bg.png new file mode 100644 index 0000000000..9b523716c5 Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.bg.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.bn.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.bn.png new file mode 100644 index 0000000000..830fe5de78 Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.bn.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.br.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.br.png new file mode 100644 index 0000000000..d0797336c0 Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.br.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.cs.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.cs.png new file mode 100644 index 0000000000..aa4815b46f Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.cs.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.da.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.da.png new file mode 100644 index 0000000000..b43858d6f0 Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.da.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.de.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.de.png new file mode 100644 index 0000000000..5a9639f98c Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.de.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.el.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.el.png new file mode 100644 index 0000000000..21e9bd85e8 Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.el.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.en.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.en.png new file mode 100644 index 0000000000..4d34be0894 Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.en.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.es.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.es.png new file mode 100644 index 0000000000..804f96317e Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.es.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.fa.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.fa.png new file mode 100644 index 0000000000..b5b3c4835c Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.fa.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.fi.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.fi.png new file mode 100644 index 0000000000..91f352c9f1 Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.fi.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.fr.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.fr.png new file mode 100644 index 0000000000..ba35da44e9 Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.fr.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.he.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.he.png new file mode 100644 index 0000000000..a6d65e04ad Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.he.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.hi.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.hi.png new file mode 100644 index 0000000000..1e6b10889c Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.hi.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.hk.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.hk.png new file mode 100644 index 0000000000..2d9e2b0560 Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.hk.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.hr.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.hr.png new file mode 100644 index 0000000000..2527292880 Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.hr.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.hu.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.hu.png new file mode 100644 index 0000000000..ab841967d0 Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.hu.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.id.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.id.png new file mode 100644 index 0000000000..c46187f6fc Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.id.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.it.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.it.png new file mode 100644 index 0000000000..e2f569f943 Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.it.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.ja.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.ja.png new file mode 100644 index 0000000000..9b8b97adc0 Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.ja.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.ko.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.ko.png new file mode 100644 index 0000000000..4eecdc1ed3 Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.ko.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.mo.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.mo.png new file mode 100644 index 0000000000..61349f2d48 Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.mo.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.mr.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.mr.png new file mode 100644 index 0000000000..f48c860750 Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.mr.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.ms.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.ms.png new file mode 100644 index 0000000000..575ee00f44 Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.ms.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.ne.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.ne.png new file mode 100644 index 0000000000..db56e76378 Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.ne.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.nl.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.nl.png new file mode 100644 index 0000000000..1eb365f4fb Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.nl.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.no.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.no.png new file mode 100644 index 0000000000..ab8f938b69 Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.no.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.pa.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.pa.png new file mode 100644 index 0000000000..c412c36427 Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.pa.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.pl.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.pl.png new file mode 100644 index 0000000000..bffeb2d293 Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.pl.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.pt.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.pt.png new file mode 100644 index 0000000000..885e5fbdc4 Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.pt.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.ro.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.ro.png new file mode 100644 index 0000000000..952db61241 Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.ro.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.ru.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.ru.png new file mode 100644 index 0000000000..4843b5824c Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.ru.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.sk.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.sk.png new file mode 100644 index 0000000000..eb98b7ae8a Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.sk.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.sl.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.sl.png new file mode 100644 index 0000000000..26e98d7e8d Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.sl.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.sr.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.sr.png new file mode 100644 index 0000000000..5b55d4e736 Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.sr.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.sv.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.sv.png new file mode 100644 index 0000000000..b3aed5d555 Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.sv.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.sw.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.sw.png new file mode 100644 index 0000000000..1cde9a066f Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.sw.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.th.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.th.png new file mode 100644 index 0000000000..735c03cd9c Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.th.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.tl.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.tl.png new file mode 100644 index 0000000000..e50c6f5779 Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.tl.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.tr.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.tr.png new file mode 100644 index 0000000000..b451ff2d48 Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.tr.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.tw.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.tw.png new file mode 100644 index 0000000000..a97f49e09e Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.tw.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.ur.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.ur.png new file mode 100644 index 0000000000..c9f2392b3e Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.ur.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.vi.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.vi.png new file mode 100644 index 0000000000..856e50b13d Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.vi.png differ diff --git a/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.zh.png b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.zh.png new file mode 100644 index 0000000000..42451a3188 Binary files /dev/null and b/translated_images/fine-tuned-metrics-panel.c6a6a69fb9261676f9609db9f44285b7c43134c60e6632c28e5aceba56287406.zh.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.ar.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.ar.png new file mode 100644 index 0000000000..6535eb2e14 Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.ar.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.bg.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.bg.png new file mode 100644 index 0000000000..65134600ae Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.bg.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.bn.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.bn.png new file mode 100644 index 0000000000..6c6fa44594 Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.bn.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.br.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.br.png new file mode 100644 index 0000000000..737099166e Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.br.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.cs.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.cs.png new file mode 100644 index 0000000000..85f9b3f444 Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.cs.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.da.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.da.png new file mode 100644 index 0000000000..af76510a62 Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.da.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.de.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.de.png new file mode 100644 index 0000000000..078780302e Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.de.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.el.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.el.png new file mode 100644 index 0000000000..e661ed97c1 Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.el.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.en.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.en.png new file mode 100644 index 0000000000..72f2d9ceee Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.en.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.es.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.es.png new file mode 100644 index 0000000000..8c97a093ba Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.es.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.fa.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.fa.png new file mode 100644 index 0000000000..186b101852 Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.fa.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.fi.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.fi.png new file mode 100644 index 0000000000..21cce14c7e Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.fi.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.fr.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.fr.png new file mode 100644 index 0000000000..505e691611 Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.fr.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.he.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.he.png new file mode 100644 index 0000000000..e7bea1a2cb Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.he.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.hi.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.hi.png new file mode 100644 index 0000000000..e959ab5dc8 Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.hi.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.hk.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.hk.png new file mode 100644 index 0000000000..17b20413a3 Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.hk.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.hr.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.hr.png new file mode 100644 index 0000000000..c987743585 Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.hr.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.hu.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.hu.png new file mode 100644 index 0000000000..61037e08ca Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.hu.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.id.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.id.png new file mode 100644 index 0000000000..bc9fe5a04e Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.id.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.it.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.it.png new file mode 100644 index 0000000000..ce0ca4ba74 Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.it.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.ja.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.ja.png new file mode 100644 index 0000000000..29caab7ddc Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.ja.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.ko.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.ko.png new file mode 100644 index 0000000000..0e5414fd53 Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.ko.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.mo.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.mo.png new file mode 100644 index 0000000000..0d2479a91a Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.mo.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.mr.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.mr.png new file mode 100644 index 0000000000..67425209db Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.mr.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.ms.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.ms.png new file mode 100644 index 0000000000..ad37d6e449 Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.ms.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.ne.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.ne.png new file mode 100644 index 0000000000..dd9529e43e Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.ne.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.nl.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.nl.png new file mode 100644 index 0000000000..bf095e5a86 Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.nl.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.no.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.no.png new file mode 100644 index 0000000000..1e7fba1282 Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.no.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.pa.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.pa.png new file mode 100644 index 0000000000..6d0bde3a87 Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.pa.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.pl.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.pl.png new file mode 100644 index 0000000000..750a6e9df8 Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.pl.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.pt.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.pt.png new file mode 100644 index 0000000000..4b6dd2099d Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.pt.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.ro.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.ro.png new file mode 100644 index 0000000000..067b14ff98 Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.ro.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.ru.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.ru.png new file mode 100644 index 0000000000..d65d1d98de Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.ru.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.sk.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.sk.png new file mode 100644 index 0000000000..7b0e2f7092 Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.sk.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.sl.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.sl.png new file mode 100644 index 0000000000..cdb377ac77 Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.sl.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.sr.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.sr.png new file mode 100644 index 0000000000..03f96469e2 Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.sr.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.sv.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.sv.png new file mode 100644 index 0000000000..616265c306 Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.sv.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.sw.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.sw.png new file mode 100644 index 0000000000..c393ffc946 Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.sw.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.th.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.th.png new file mode 100644 index 0000000000..585f6560a8 Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.th.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.tl.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.tl.png new file mode 100644 index 0000000000..e731990813 Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.tl.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.tr.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.tr.png new file mode 100644 index 0000000000..a458dea821 Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.tr.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.tw.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.tw.png new file mode 100644 index 0000000000..b204a0998c Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.tw.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.ur.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.ur.png new file mode 100644 index 0000000000..090a06e3e7 Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.ur.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.vi.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.vi.png new file mode 100644 index 0000000000..1bc2b5dcdc Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.vi.png differ diff --git a/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.zh.png b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.zh.png new file mode 100644 index 0000000000..09a59fb149 Binary files /dev/null and b/translated_images/fine-tuned-model-status.11a11e046f1a5bc73aad0d1792a2b6332959ec785d5d4216a1d26a3c0e9fc260.zh.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.ar.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.ar.png new file mode 100644 index 0000000000..eb8f8624e1 Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.ar.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.bg.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.bg.png new file mode 100644 index 0000000000..61e7df9764 Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.bg.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.bn.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.bn.png new file mode 100644 index 0000000000..c9a3d165fc Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.bn.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.br.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.br.png new file mode 100644 index 0000000000..d5c4e23347 Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.br.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.cs.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.cs.png new file mode 100644 index 0000000000..250636b878 Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.cs.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.da.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.da.png new file mode 100644 index 0000000000..5bf3aba34f Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.da.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.de.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.de.png new file mode 100644 index 0000000000..244e30735b Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.de.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.el.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.el.png new file mode 100644 index 0000000000..fb6d8ac88b Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.el.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.en.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.en.png new file mode 100644 index 0000000000..29cb3c1d66 Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.en.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.es.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.es.png new file mode 100644 index 0000000000..7eabeaab56 Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.es.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.fa.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.fa.png new file mode 100644 index 0000000000..82e8ade78f Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.fa.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.fi.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.fi.png new file mode 100644 index 0000000000..094184b4de Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.fi.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.fr.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.fr.png new file mode 100644 index 0000000000..cf27b990ea Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.fr.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.he.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.he.png new file mode 100644 index 0000000000..32c455bfbb Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.he.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.hi.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.hi.png new file mode 100644 index 0000000000..eb700ca83c Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.hi.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.hk.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.hk.png new file mode 100644 index 0000000000..9467858649 Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.hk.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.hr.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.hr.png new file mode 100644 index 0000000000..d7f7fa3bf5 Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.hr.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.hu.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.hu.png new file mode 100644 index 0000000000..6e2a1d1bce Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.hu.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.id.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.id.png new file mode 100644 index 0000000000..ad6b3bffb9 Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.id.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.it.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.it.png new file mode 100644 index 0000000000..5287c68534 Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.it.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.ja.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.ja.png new file mode 100644 index 0000000000..d5f5a3180b Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.ja.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.ko.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.ko.png new file mode 100644 index 0000000000..3d62a674f5 Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.ko.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.mo.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.mo.png new file mode 100644 index 0000000000..87ab21a3fb Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.mo.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.mr.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.mr.png new file mode 100644 index 0000000000..558172a8ba Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.mr.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.ms.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.ms.png new file mode 100644 index 0000000000..8bff0e8b53 Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.ms.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.ne.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.ne.png new file mode 100644 index 0000000000..1afc24e903 Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.ne.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.nl.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.nl.png new file mode 100644 index 0000000000..e36454dcbb Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.nl.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.no.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.no.png new file mode 100644 index 0000000000..6bf11a62a7 Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.no.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.pa.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.pa.png new file mode 100644 index 0000000000..09e78a8f28 Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.pa.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.pl.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.pl.png new file mode 100644 index 0000000000..898e8bb0b6 Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.pl.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.pt.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.pt.png new file mode 100644 index 0000000000..32f5c7cc4f Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.pt.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.ro.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.ro.png new file mode 100644 index 0000000000..31f6884f3c Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.ro.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.ru.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.ru.png new file mode 100644 index 0000000000..9254951958 Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.ru.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.sk.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.sk.png new file mode 100644 index 0000000000..5bd9646945 Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.sk.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.sl.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.sl.png new file mode 100644 index 0000000000..2b84837442 Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.sl.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.sr.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.sr.png new file mode 100644 index 0000000000..fe0138d085 Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.sr.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.sv.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.sv.png new file mode 100644 index 0000000000..250621b38d Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.sv.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.sw.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.sw.png new file mode 100644 index 0000000000..09356135b0 Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.sw.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.th.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.th.png new file mode 100644 index 0000000000..67611a5432 Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.th.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.tl.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.tl.png new file mode 100644 index 0000000000..d59cad6306 Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.tl.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.tr.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.tr.png new file mode 100644 index 0000000000..b7ca6e896e Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.tr.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.tw.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.tw.png new file mode 100644 index 0000000000..f7ad81acbf Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.tw.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.ur.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.ur.png new file mode 100644 index 0000000000..924d8d96ac Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.ur.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.vi.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.vi.png new file mode 100644 index 0000000000..1fce317c76 Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.vi.png differ diff --git a/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.zh.png b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.zh.png new file mode 100644 index 0000000000..92848cb138 Binary files /dev/null and b/translated_images/fine-tuned-playground-compare.03857b847e5cee880b5aa786c2fa8aeace16c5de97aee34328851eb060fa7417.zh.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.ar.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.ar.png new file mode 100644 index 0000000000..90d09e35b1 Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.ar.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.bg.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.bg.png new file mode 100644 index 0000000000..4725f087b5 Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.bg.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.bn.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.bn.png new file mode 100644 index 0000000000..5a591ce2a7 Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.bn.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.br.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.br.png new file mode 100644 index 0000000000..484bd1a12c Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.br.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.cs.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.cs.png new file mode 100644 index 0000000000..64bbe25078 Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.cs.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.da.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.da.png new file mode 100644 index 0000000000..2390929de5 Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.da.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.de.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.de.png new file mode 100644 index 0000000000..ef80526244 Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.de.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.el.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.el.png new file mode 100644 index 0000000000..bc48979216 Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.el.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.en.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.en.png new file mode 100644 index 0000000000..95ee06e6b5 Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.en.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.es.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.es.png new file mode 100644 index 0000000000..e015808241 Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.es.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.fa.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.fa.png new file mode 100644 index 0000000000..2753662dad Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.fa.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.fi.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.fi.png new file mode 100644 index 0000000000..38a9683b74 Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.fi.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.fr.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.fr.png new file mode 100644 index 0000000000..f80d9cf9e2 Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.fr.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.he.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.he.png new file mode 100644 index 0000000000..db9455aaae Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.he.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.hi.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.hi.png new file mode 100644 index 0000000000..6d93501853 Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.hi.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.hk.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.hk.png new file mode 100644 index 0000000000..173c1b604a Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.hk.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.hr.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.hr.png new file mode 100644 index 0000000000..86ebb126f1 Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.hr.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.hu.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.hu.png new file mode 100644 index 0000000000..daca680345 Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.hu.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.id.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.id.png new file mode 100644 index 0000000000..621470636b Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.id.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.it.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.it.png new file mode 100644 index 0000000000..42d3548348 Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.it.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.ja.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.ja.png new file mode 100644 index 0000000000..19245c7e05 Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.ja.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.ko.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.ko.png new file mode 100644 index 0000000000..db7cdcce8f Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.ko.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.mo.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.mo.png new file mode 100644 index 0000000000..43bb247997 Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.mo.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.mr.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.mr.png new file mode 100644 index 0000000000..f5039e3937 Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.mr.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.ms.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.ms.png new file mode 100644 index 0000000000..5e3c70df0b Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.ms.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.ne.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.ne.png new file mode 100644 index 0000000000..35659eb7ce Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.ne.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.nl.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.nl.png new file mode 100644 index 0000000000..ed0224404a Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.nl.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.no.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.no.png new file mode 100644 index 0000000000..c97a5ba7c6 Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.no.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.pa.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.pa.png new file mode 100644 index 0000000000..992b547e50 Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.pa.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.pl.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.pl.png new file mode 100644 index 0000000000..725ce07310 Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.pl.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.pt.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.pt.png new file mode 100644 index 0000000000..58b140224c Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.pt.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.ro.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.ro.png new file mode 100644 index 0000000000..ac1c951941 Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.ro.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.ru.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.ru.png new file mode 100644 index 0000000000..c44adcf110 Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.ru.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.sk.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.sk.png new file mode 100644 index 0000000000..e6a22c5cb5 Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.sk.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.sl.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.sl.png new file mode 100644 index 0000000000..41046db4ca Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.sl.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.sr.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.sr.png new file mode 100644 index 0000000000..1e08d593fe Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.sr.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.sv.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.sv.png new file mode 100644 index 0000000000..19bbc31e9e Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.sv.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.sw.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.sw.png new file mode 100644 index 0000000000..9a4e2910a1 Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.sw.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.th.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.th.png new file mode 100644 index 0000000000..cf1293de4e Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.th.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.tl.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.tl.png new file mode 100644 index 0000000000..12cac8fe2b Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.tl.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.tr.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.tr.png new file mode 100644 index 0000000000..0eaff30efd Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.tr.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.tw.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.tw.png new file mode 100644 index 0000000000..a7939e4385 Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.tw.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.ur.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.ur.png new file mode 100644 index 0000000000..ea56c24a60 Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.ur.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.vi.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.vi.png new file mode 100644 index 0000000000..950ed76820 Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.vi.png differ diff --git a/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.zh.png b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.zh.png new file mode 100644 index 0000000000..54b0eb74ae Binary files /dev/null and b/translated_images/fine-tuned-playground-launch.e814733232ff93d18466071718d55a3fe5c796deb1cdc22afd6e4aceb48364f8.zh.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.ar.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.ar.png new file mode 100644 index 0000000000..31d384b440 Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.ar.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.bg.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.bg.png new file mode 100644 index 0000000000..deaa0959bf Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.bg.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.bn.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.bn.png new file mode 100644 index 0000000000..b2e1f15129 Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.bn.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.br.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.br.png new file mode 100644 index 0000000000..20a8810d09 Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.br.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.cs.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.cs.png new file mode 100644 index 0000000000..f138a1c727 Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.cs.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.da.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.da.png new file mode 100644 index 0000000000..b4e7c713cf Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.da.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.de.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.de.png new file mode 100644 index 0000000000..61811a01a2 Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.de.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.el.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.el.png new file mode 100644 index 0000000000..0147165736 Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.el.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.en.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.en.png new file mode 100644 index 0000000000..e8357eef4f Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.en.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.es.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.es.png new file mode 100644 index 0000000000..c809da0832 Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.es.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.fa.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.fa.png new file mode 100644 index 0000000000..ab8ce1c162 Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.fa.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.fi.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.fi.png new file mode 100644 index 0000000000..21892059fa Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.fi.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.fr.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.fr.png new file mode 100644 index 0000000000..a30cf74d8b Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.fr.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.he.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.he.png new file mode 100644 index 0000000000..6fc7d73e56 Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.he.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.hi.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.hi.png new file mode 100644 index 0000000000..03d13a8cae Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.hi.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.hk.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.hk.png new file mode 100644 index 0000000000..e2077bf25f Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.hk.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.hr.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.hr.png new file mode 100644 index 0000000000..6260757200 Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.hr.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.hu.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.hu.png new file mode 100644 index 0000000000..dba23c0662 Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.hu.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.id.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.id.png new file mode 100644 index 0000000000..e068739bc2 Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.id.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.it.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.it.png new file mode 100644 index 0000000000..e83e569aac Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.it.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.ja.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.ja.png new file mode 100644 index 0000000000..4c622b2de6 Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.ja.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.ko.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.ko.png new file mode 100644 index 0000000000..e79761b7ec Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.ko.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.mo.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.mo.png new file mode 100644 index 0000000000..b84de3cd52 Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.mo.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.mr.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.mr.png new file mode 100644 index 0000000000..06f139dd29 Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.mr.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.ms.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.ms.png new file mode 100644 index 0000000000..f9d3d4117b Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.ms.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.ne.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.ne.png new file mode 100644 index 0000000000..582de80f21 Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.ne.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.nl.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.nl.png new file mode 100644 index 0000000000..5f43067d73 Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.nl.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.no.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.no.png new file mode 100644 index 0000000000..ee9571fd15 Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.no.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.pa.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.pa.png new file mode 100644 index 0000000000..ac929d972d Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.pa.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.pl.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.pl.png new file mode 100644 index 0000000000..683e432444 Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.pl.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.pt.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.pt.png new file mode 100644 index 0000000000..bc5df5ac39 Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.pt.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.ro.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.ro.png new file mode 100644 index 0000000000..10dbcfc273 Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.ro.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.ru.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.ru.png new file mode 100644 index 0000000000..494cbfa3d1 Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.ru.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.sk.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.sk.png new file mode 100644 index 0000000000..0ba561559b Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.sk.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.sl.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.sl.png new file mode 100644 index 0000000000..035fd083db Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.sl.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.sr.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.sr.png new file mode 100644 index 0000000000..6df69ce5c8 Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.sr.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.sv.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.sv.png new file mode 100644 index 0000000000..b24fbc21de Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.sv.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.sw.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.sw.png new file mode 100644 index 0000000000..18ac79b3e4 Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.sw.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.th.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.th.png new file mode 100644 index 0000000000..4cf426380a Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.th.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.tl.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.tl.png new file mode 100644 index 0000000000..173de9e84b Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.tl.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.tr.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.tr.png new file mode 100644 index 0000000000..36990d8b42 Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.tr.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.tw.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.tw.png new file mode 100644 index 0000000000..25b67c325e Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.tw.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.ur.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.ur.png new file mode 100644 index 0000000000..813e0859b1 Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.ur.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.vi.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.vi.png new file mode 100644 index 0000000000..b0b12d6075 Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.vi.png differ diff --git a/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.zh.png b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.zh.png new file mode 100644 index 0000000000..2fce74ae4a Binary files /dev/null and b/translated_images/genai_course_12[88].ec9353f1a1798c8037820c1be2026f09395064151e877fe4f871caba841da154.zh.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.ar.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.ar.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.ar.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.bg.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.bg.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.bg.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.bn.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.bn.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.bn.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.br.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.br.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.br.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.cs.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.cs.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.cs.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.da.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.da.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.da.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.de.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.de.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.de.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.el.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.el.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.el.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.en.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.en.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.en.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.es.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.es.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.es.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.fa.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.fa.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.fa.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.fi.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.fi.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.fi.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.fr.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.fr.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.fr.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.he.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.he.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.he.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.hi.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.hi.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.hi.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.hk.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.hk.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.hk.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.hr.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.hr.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.hr.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.hu.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.hu.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.hu.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.id.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.id.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.id.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.it.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.it.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.it.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.ja.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.ja.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.ja.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.ko.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.ko.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.ko.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.mo.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.mo.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.mo.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.mr.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.mr.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.mr.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.ms.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.ms.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.ms.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.ne.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.ne.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.ne.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.nl.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.nl.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.nl.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.no.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.no.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.no.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.pa.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.pa.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.pa.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.pl.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.pl.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.pl.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.pt.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.pt.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.pt.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.ro.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.ro.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.ro.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.ru.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.ru.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.ru.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.sk.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.sk.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.sk.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.sl.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.sl.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.sl.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.sr.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.sr.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.sr.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.sv.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.sv.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.sv.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.sw.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.sw.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.sw.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.th.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.th.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.th.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.tl.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.tl.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.tl.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.tr.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.tr.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.tr.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.tw.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.tw.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.tw.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.ur.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.ur.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.ur.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.vi.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.vi.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.vi.png differ diff --git a/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.zh.png b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.zh.png new file mode 100644 index 0000000000..966bbba6aa Binary files /dev/null and b/translated_images/generated-image.5eb49e7ce5f65f72526634518809a97bfb5a53f51ee1504b9830e1e29426edb4.zh.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.ar.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.ar.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.ar.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.bg.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.bg.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.bg.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.bn.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.bn.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.bn.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.br.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.br.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.br.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.cs.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.cs.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.cs.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.da.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.da.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.da.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.de.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.de.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.de.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.el.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.el.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.el.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.en.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.en.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.en.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.es.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.es.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.es.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.fa.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.fa.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.fa.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.fi.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.fi.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.fi.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.fr.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.fr.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.fr.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.he.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.he.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.he.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.hi.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.hi.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.hi.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.hk.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.hk.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.hk.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.hr.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.hr.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.hr.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.hu.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.hu.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.hu.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.id.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.id.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.id.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.it.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.it.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.it.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.ja.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.ja.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.ja.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.ko.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.ko.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.ko.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.mo.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.mo.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.mo.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.mr.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.mr.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.mr.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.ms.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.ms.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.ms.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.ne.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.ne.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.ne.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.nl.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.nl.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.nl.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.no.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.no.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.no.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.pa.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.pa.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.pa.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.pl.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.pl.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.pl.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.pt.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.pt.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.pt.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.ro.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.ro.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.ro.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.ru.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.ru.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.ru.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.sk.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.sk.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.sk.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.sl.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.sl.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.sl.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.sr.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.sr.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.sr.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.sv.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.sv.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.sv.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.sw.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.sw.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.sw.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.th.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.th.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.th.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.tl.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.tl.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.tl.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.tr.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.tr.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.tr.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.tw.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.tw.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.tw.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.ur.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.ur.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.ur.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.vi.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.vi.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.vi.png differ diff --git a/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.zh.png b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.zh.png new file mode 100644 index 0000000000..dfe0e4bb37 Binary files /dev/null and b/translated_images/generated-image.e44ff1dc337c73f6d50ef39546ad9e56829f06999378bf1063ae1d44b24e6106.zh.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.ar.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.ar.png new file mode 100644 index 0000000000..0f61927b24 Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.ar.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.bg.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.bg.png new file mode 100644 index 0000000000..c14356af5e Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.bg.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.bn.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.bn.png new file mode 100644 index 0000000000..b014fc7f2d Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.bn.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.br.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.br.png new file mode 100644 index 0000000000..4ab11aae13 Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.br.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.cs.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.cs.png new file mode 100644 index 0000000000..585afb082f Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.cs.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.da.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.da.png new file mode 100644 index 0000000000..aefa873a5a Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.da.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.de.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.de.png new file mode 100644 index 0000000000..3f401c2a53 Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.de.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.el.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.el.png new file mode 100644 index 0000000000..faec1a8d99 Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.el.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.en.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.en.png new file mode 100644 index 0000000000..644ff32f95 Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.en.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.es.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.es.png new file mode 100644 index 0000000000..735d34ddf6 Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.es.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.fa.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.fa.png new file mode 100644 index 0000000000..1ad02b4ebf Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.fa.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.fi.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.fi.png new file mode 100644 index 0000000000..f77191b878 Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.fi.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.fr.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.fr.png new file mode 100644 index 0000000000..23c3e9bf4a Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.fr.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.he.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.he.png new file mode 100644 index 0000000000..bddc2c4675 Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.he.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.hi.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.hi.png new file mode 100644 index 0000000000..857d2abd61 Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.hi.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.hk.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.hk.png new file mode 100644 index 0000000000..6301ec3610 Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.hk.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.hr.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.hr.png new file mode 100644 index 0000000000..351cbbdaac Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.hr.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.hu.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.hu.png new file mode 100644 index 0000000000..81b9bde355 Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.hu.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.id.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.id.png new file mode 100644 index 0000000000..4fa85a6f58 Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.id.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.it.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.it.png new file mode 100644 index 0000000000..0e2029be29 Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.it.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.ja.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.ja.png new file mode 100644 index 0000000000..d32bd7563c Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.ja.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.ko.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.ko.png new file mode 100644 index 0000000000..4fc6d72c04 Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.ko.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.mo.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.mo.png new file mode 100644 index 0000000000..f05f5454d8 Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.mo.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.mr.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.mr.png new file mode 100644 index 0000000000..fb4ea8f41e Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.mr.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.ms.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.ms.png new file mode 100644 index 0000000000..fec9419bea Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.ms.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.ne.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.ne.png new file mode 100644 index 0000000000..a404ce95b9 Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.ne.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.nl.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.nl.png new file mode 100644 index 0000000000..949b4a3838 Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.nl.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.no.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.no.png new file mode 100644 index 0000000000..0e46833d26 Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.no.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.pa.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.pa.png new file mode 100644 index 0000000000..dee0ec5bc5 Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.pa.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.pl.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.pl.png new file mode 100644 index 0000000000..6ae5b3c92a Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.pl.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.pt.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.pt.png new file mode 100644 index 0000000000..ed21cf5ff9 Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.pt.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.ro.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.ro.png new file mode 100644 index 0000000000..a53e4fb16c Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.ro.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.ru.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.ru.png new file mode 100644 index 0000000000..01b7c8be2f Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.ru.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.sk.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.sk.png new file mode 100644 index 0000000000..8bd04c9f70 Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.sk.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.sl.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.sl.png new file mode 100644 index 0000000000..87f5ddb687 Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.sl.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.sr.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.sr.png new file mode 100644 index 0000000000..860aac2089 Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.sr.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.sv.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.sv.png new file mode 100644 index 0000000000..48bc935d43 Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.sv.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.sw.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.sw.png new file mode 100644 index 0000000000..c3f5178735 Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.sw.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.th.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.th.png new file mode 100644 index 0000000000..52c412586e Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.th.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.tl.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.tl.png new file mode 100644 index 0000000000..6493d28158 Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.tl.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.tr.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.tr.png new file mode 100644 index 0000000000..5e3331e681 Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.tr.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.tw.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.tw.png new file mode 100644 index 0000000000..d4696a75af Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.tw.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.ur.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.ur.png new file mode 100644 index 0000000000..e4d245bb07 Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.ur.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.vi.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.vi.png new file mode 100644 index 0000000000..c7bf8ca47d Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.vi.png differ diff --git a/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.zh.png b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.zh.png new file mode 100644 index 0000000000..ca61897b68 Binary files /dev/null and b/translated_images/gh1.33134727688b27f6eaeac67bd84dbef85626e2d8fe452d826d0b3c353e29a472.zh.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.ar.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.ar.png new file mode 100644 index 0000000000..4907579595 Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.ar.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.bg.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.bg.png new file mode 100644 index 0000000000..efdced3b5c Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.bg.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.bn.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.bn.png new file mode 100644 index 0000000000..7667cccd27 Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.bn.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.br.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.br.png new file mode 100644 index 0000000000..f777e076c4 Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.br.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.cs.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.cs.png new file mode 100644 index 0000000000..8c36621a27 Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.cs.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.da.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.da.png new file mode 100644 index 0000000000..713c46b3f8 Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.da.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.de.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.de.png new file mode 100644 index 0000000000..a78a6de471 Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.de.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.el.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.el.png new file mode 100644 index 0000000000..a2d64b33f5 Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.el.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.en.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.en.png new file mode 100644 index 0000000000..689517e61d Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.en.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.es.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.es.png new file mode 100644 index 0000000000..41736bb2ef Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.es.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.fa.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.fa.png new file mode 100644 index 0000000000..e6ae3d883d Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.fa.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.fi.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.fi.png new file mode 100644 index 0000000000..caf960a311 Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.fi.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.fr.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.fr.png new file mode 100644 index 0000000000..c0c53c9b4e Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.fr.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.he.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.he.png new file mode 100644 index 0000000000..b16cdb55e4 Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.he.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.hi.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.hi.png new file mode 100644 index 0000000000..5afb33a197 Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.hi.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.hk.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.hk.png new file mode 100644 index 0000000000..68678bed8c Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.hk.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.hr.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.hr.png new file mode 100644 index 0000000000..652f58af43 Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.hr.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.hu.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.hu.png new file mode 100644 index 0000000000..90189145ec Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.hu.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.id.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.id.png new file mode 100644 index 0000000000..abff56f04f Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.id.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.it.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.it.png new file mode 100644 index 0000000000..916fbb9a3c Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.it.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.ja.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.ja.png new file mode 100644 index 0000000000..4f2ab327b3 Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.ja.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.ko.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.ko.png new file mode 100644 index 0000000000..9f9d6ad7a6 Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.ko.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.mo.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.mo.png new file mode 100644 index 0000000000..83811c929b Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.mo.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.mr.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.mr.png new file mode 100644 index 0000000000..cfac1c3fd2 Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.mr.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.ms.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.ms.png new file mode 100644 index 0000000000..a021af3370 Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.ms.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.ne.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.ne.png new file mode 100644 index 0000000000..e348f45921 Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.ne.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.nl.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.nl.png new file mode 100644 index 0000000000..fb95bba047 Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.nl.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.no.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.no.png new file mode 100644 index 0000000000..16e51ca172 Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.no.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.pa.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.pa.png new file mode 100644 index 0000000000..ad29b68f61 Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.pa.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.pl.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.pl.png new file mode 100644 index 0000000000..9a0ce3c0d4 Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.pl.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.pt.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.pt.png new file mode 100644 index 0000000000..3888c666c0 Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.pt.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.ro.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.ro.png new file mode 100644 index 0000000000..dc2571965a Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.ro.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.ru.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.ru.png new file mode 100644 index 0000000000..818a3a06d5 Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.ru.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.sk.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.sk.png new file mode 100644 index 0000000000..3d7a18c477 Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.sk.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.sl.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.sl.png new file mode 100644 index 0000000000..73e0501dd3 Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.sl.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.sr.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.sr.png new file mode 100644 index 0000000000..5330e6913d Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.sr.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.sv.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.sv.png new file mode 100644 index 0000000000..d270990fbe Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.sv.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.sw.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.sw.png new file mode 100644 index 0000000000..6ed1f238f7 Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.sw.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.th.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.th.png new file mode 100644 index 0000000000..3279e19942 Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.th.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.tl.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.tl.png new file mode 100644 index 0000000000..f0f1dd4f1d Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.tl.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.tr.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.tr.png new file mode 100644 index 0000000000..e638126b88 Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.tr.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.tw.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.tw.png new file mode 100644 index 0000000000..acb9bc99fd Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.tw.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.ur.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.ur.png new file mode 100644 index 0000000000..329c568869 Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.ur.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.vi.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.vi.png new file mode 100644 index 0000000000..0789315807 Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.vi.png differ diff --git a/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.zh.png b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.zh.png new file mode 100644 index 0000000000..7729c2623f Binary files /dev/null and b/translated_images/gh2.9f09152ff1c8dfdb777bb774f961c9ddf743879fc2fb640597bb413b1f320b8a.zh.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.ar.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.ar.png new file mode 100644 index 0000000000..e83f6d4dbe Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.ar.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.bg.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.bg.png new file mode 100644 index 0000000000..7ebcb35f6c Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.bg.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.bn.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.bn.png new file mode 100644 index 0000000000..bc0e3e36a9 Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.bn.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.br.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.br.png new file mode 100644 index 0000000000..08c03a0d07 Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.br.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.cs.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.cs.png new file mode 100644 index 0000000000..cd29cf1711 Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.cs.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.da.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.da.png new file mode 100644 index 0000000000..e019b3ffe9 Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.da.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.de.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.de.png new file mode 100644 index 0000000000..82a793b29d Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.de.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.el.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.el.png new file mode 100644 index 0000000000..2d6f08cec0 Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.el.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.en.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.en.png new file mode 100644 index 0000000000..dd21d3ecfa Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.en.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.es.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.es.png new file mode 100644 index 0000000000..7c9e2ed647 Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.es.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.fa.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.fa.png new file mode 100644 index 0000000000..76c48dd4a5 Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.fa.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.fi.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.fi.png new file mode 100644 index 0000000000..9cf6f36b8a Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.fi.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.fr.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.fr.png new file mode 100644 index 0000000000..8602bca401 Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.fr.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.he.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.he.png new file mode 100644 index 0000000000..a559bfcc59 Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.he.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.hi.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.hi.png new file mode 100644 index 0000000000..82fd888772 Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.hi.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.hk.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.hk.png new file mode 100644 index 0000000000..e2528a83a9 Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.hk.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.hr.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.hr.png new file mode 100644 index 0000000000..84fe9a01f2 Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.hr.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.hu.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.hu.png new file mode 100644 index 0000000000..01f2c42923 Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.hu.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.id.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.id.png new file mode 100644 index 0000000000..8d4a0e1545 Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.id.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.it.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.it.png new file mode 100644 index 0000000000..1d773db2b1 Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.it.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.ja.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.ja.png new file mode 100644 index 0000000000..b86d435424 Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.ja.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.ko.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.ko.png new file mode 100644 index 0000000000..ebb7c2d9ff Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.ko.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.mo.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.mo.png new file mode 100644 index 0000000000..4bd7dbaaf5 Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.mo.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.mr.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.mr.png new file mode 100644 index 0000000000..41bf5e1224 Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.mr.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.ms.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.ms.png new file mode 100644 index 0000000000..285959ba88 Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.ms.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.ne.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.ne.png new file mode 100644 index 0000000000..82d6855c4d Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.ne.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.nl.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.nl.png new file mode 100644 index 0000000000..e774e1813f Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.nl.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.no.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.no.png new file mode 100644 index 0000000000..135d3bad41 Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.no.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.pa.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.pa.png new file mode 100644 index 0000000000..02b611e1b3 Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.pa.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.pl.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.pl.png new file mode 100644 index 0000000000..9f7a5a51ae Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.pl.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.pt.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.pt.png new file mode 100644 index 0000000000..8240833e48 Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.pt.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.ro.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.ro.png new file mode 100644 index 0000000000..8329ffa1a6 Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.ro.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.ru.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.ru.png new file mode 100644 index 0000000000..03895e6b64 Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.ru.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.sk.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.sk.png new file mode 100644 index 0000000000..e318ccb3bc Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.sk.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.sl.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.sl.png new file mode 100644 index 0000000000..bc44614127 Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.sl.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.sr.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.sr.png new file mode 100644 index 0000000000..bccd8e8c03 Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.sr.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.sv.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.sv.png new file mode 100644 index 0000000000..995590b887 Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.sv.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.sw.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.sw.png new file mode 100644 index 0000000000..dd7a1cf051 Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.sw.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.th.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.th.png new file mode 100644 index 0000000000..23d58ab23e Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.th.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.tl.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.tl.png new file mode 100644 index 0000000000..0622e6a07f Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.tl.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.tr.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.tr.png new file mode 100644 index 0000000000..00a09aa2db Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.tr.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.tw.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.tw.png new file mode 100644 index 0000000000..db32517841 Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.tw.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.ur.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.ur.png new file mode 100644 index 0000000000..14c6c1eb75 Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.ur.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.vi.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.vi.png new file mode 100644 index 0000000000..04adae8813 Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.vi.png differ diff --git a/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.zh.png b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.zh.png new file mode 100644 index 0000000000..f2008b76ed Binary files /dev/null and b/translated_images/github-check-country-locale-comment.15ae33688215cfe678e813c4dc0bf40d5d9341ee36dc95d6cc0684fa9a204224.zh.png differ diff --git a/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.ar.png b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.ar.png new file mode 100644 index 0000000000..63f2ec172e Binary files /dev/null and b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.ar.png differ diff --git a/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.bg.png b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.bg.png new file mode 100644 index 0000000000..fdec217155 Binary files /dev/null and b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.bg.png differ diff --git a/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.bn.png b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.bn.png new file mode 100644 index 0000000000..2cb73f85a0 Binary files /dev/null and b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.bn.png differ diff --git a/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.br.png b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.br.png new file mode 100644 index 0000000000..627dcfa4c1 Binary files /dev/null and b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.br.png differ diff --git a/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.cs.png b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.cs.png new file mode 100644 index 0000000000..82d7072337 Binary files /dev/null and b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.cs.png differ diff --git a/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.da.png b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.da.png new file mode 100644 index 0000000000..1c4d16c655 Binary files /dev/null and b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.da.png differ diff --git a/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.de.png b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.de.png new file mode 100644 index 0000000000..caaa5caa7b Binary files /dev/null and b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.de.png differ diff --git a/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.el.png b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.el.png new file mode 100644 index 0000000000..314ec9928a Binary files /dev/null and b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.el.png differ diff --git a/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.en.png b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.en.png new file mode 100644 index 0000000000..90c45f8f25 Binary files /dev/null and b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.en.png differ diff --git a/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.es.png b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.es.png new file mode 100644 index 0000000000..3c9800fca5 Binary files /dev/null and b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.es.png differ diff --git a/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.fa.png b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.fa.png new file mode 100644 index 0000000000..64774b23ae Binary files /dev/null and b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.fa.png differ diff --git a/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.fi.png b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.fi.png new file mode 100644 index 0000000000..3e0fe2e27b Binary files /dev/null and b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.fi.png differ diff --git a/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.fr.png b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.fr.png new file mode 100644 index 0000000000..0c10227aa5 Binary files /dev/null and b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.fr.png differ diff --git a/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.he.png b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.he.png new file mode 100644 index 0000000000..975e268c38 Binary files /dev/null and b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.he.png differ diff --git a/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.hi.png b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.hi.png new file mode 100644 index 0000000000..256f7d1c4a Binary files /dev/null and b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.hi.png differ diff --git a/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.hk.png b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.hk.png new file mode 100644 index 0000000000..6b0dcee391 Binary files /dev/null and b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.hk.png differ diff --git a/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.hr.png b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.hr.png new file mode 100644 index 0000000000..384f39a16f Binary files /dev/null and b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.hr.png differ diff --git a/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.hu.png b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.hu.png new file mode 100644 index 0000000000..288f5c0907 Binary files /dev/null and b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.hu.png differ diff --git a/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.id.png b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.id.png new file mode 100644 index 0000000000..41e506a4da Binary files /dev/null and b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.id.png differ diff --git a/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.it.png b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.it.png new file mode 100644 index 0000000000..0781224501 Binary files /dev/null and b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.it.png differ diff --git a/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.ja.png b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.ja.png new file mode 100644 index 0000000000..19d5293745 Binary files /dev/null and b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.ja.png differ diff --git a/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.ko.png b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.ko.png new file mode 100644 index 0000000000..22f4084bc1 Binary files /dev/null and b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.ko.png differ diff --git a/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.mo.png b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.mo.png new file mode 100644 index 0000000000..8f81278bb0 Binary files /dev/null and b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.mo.png differ diff --git a/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.mr.png b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.mr.png new file mode 100644 index 0000000000..7f8f04b947 Binary files /dev/null and b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.mr.png differ diff --git a/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.ms.png b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.ms.png new file mode 100644 index 0000000000..535690f914 Binary files /dev/null and b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.ms.png differ diff --git a/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.ne.png b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.ne.png new file mode 100644 index 0000000000..31577ef590 Binary files /dev/null and b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.ne.png differ diff --git a/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.nl.png b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.nl.png new file mode 100644 index 0000000000..34d5f27168 Binary files /dev/null and b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.nl.png differ diff --git a/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.no.png b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.no.png new file mode 100644 index 0000000000..dbd2701251 Binary files /dev/null and b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.no.png differ diff --git a/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.pa.png b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.pa.png new file mode 100644 index 0000000000..cd5966028f Binary files /dev/null and b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.pa.png differ diff --git a/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.pl.png b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.pl.png new file mode 100644 index 0000000000..2ab83c5606 Binary files /dev/null and b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.pl.png differ diff --git a/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.pt.png b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.pt.png new file mode 100644 index 0000000000..b645dc544b Binary files /dev/null and b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.pt.png differ diff --git a/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.ro.png b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.ro.png new file mode 100644 index 0000000000..6eb94277b0 Binary files /dev/null and b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.ro.png differ diff --git a/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.ru.png b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.ru.png new file mode 100644 index 0000000000..52fe5d7cd1 Binary files /dev/null and b/translated_images/github-check-paths-missing-tracking-comment.1442630ba6e07efa327f46d27447178ae1c6d3b9960023dee1a69dd50f8a3653.ru.png differ diff --git a/translated_images/github-check-paths-missing-tracking-comment.1442630{"code":"deadline_exceeded","msg":"operation timed out"}