{"id":1626,"date":"2026-06-19T13:47:00","date_gmt":"2026-06-19T16:47:00","guid":{"rendered":"https:\/\/code4delphi.com.br\/blog\/?p=1626"},"modified":"2026-06-19T13:47:00","modified_gmt":"2026-06-19T16:47:00","slug":"ia-multimodal-no-delphi","status":"publish","type":"post","link":"https:\/\/code4delphi.com.br\/blog\/ia-multimodal-no-delphi\/","title":{"rendered":"IA Multimodal no Delphi"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Quando falamos em Intelig\u00eancia Artificial dentro de uma aplica\u00e7\u00e3o, muita gente ainda pensa apenas em texto. O usu\u00e1rio digita uma pergunta, a IA responde, e pronto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mas a IA j\u00e1 evoluiu muito al\u00e9m disso.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hoje, al\u00e9m de texto, tamb\u00e9m podemos trabalhar com recursos <strong>multimodais<\/strong>, permitindo que a aplica\u00e7\u00e3o envie arquivos como imagens, \u00e1udios e documentos para que a IA interprete conte\u00fados visuais e utilize essas informa\u00e7\u00f5es dentro do pr\u00f3prio sistema.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">E o mais interessante: isso tamb\u00e9m pode ser feito em aplica\u00e7\u00f5es Delphi.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Com o <strong><a href=\"https:\/\/www.tmssoftware.com\/site\/tmsaistudio.asp\" target=\"_blank\" rel=\"noreferrer noopener\">TMS AI Studio<\/a><\/strong>, podemos integrar nossas aplica\u00e7\u00f5es Delphi com modelos de IA e explorar recursos mais avan\u00e7ados, incluindo o uso de imagens como entrada para an\u00e1lise.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Na pr\u00e1tica, isso abre muitas possibilidades.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Imagine uma aplica\u00e7\u00e3o onde o usu\u00e1rio envia uma imagem e a IA consegue ajudar a identificar informa\u00e7\u00f5es, interpretar o conte\u00fado visual ou auxiliar em algum processo interno do sistema.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Alguns exemplos de uso seriam:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Analisar uma imagem enviada pelo usu\u00e1rio;<\/li>\n\n\n\n<li>Extrair informa\u00e7\u00f5es visuais de documentos;<\/li>\n\n\n\n<li>Interpretar prints de tela;<\/li>\n\n\n\n<li>Auxiliar em cadastros com base em imagens;<\/li>\n\n\n\n<li>Comparar duas imagens;<\/li>\n\n\n\n<li>Fazer a oceriza\u00e7\u00e3o de documentos.<br><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esse tipo de recurso muda bastante a forma como pensamos a integra\u00e7\u00e3o de IA com sistemas tradicionais. A aplica\u00e7\u00e3o deixa de trabalhar apenas com campos, bot\u00f5es e textos, e passa a permitir intera\u00e7\u00f5es mais naturais com diferentes tipos de conte\u00fado.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No Delphi, isso \u00e9 especialmente interessante para quem j\u00e1 possui sistemas desktop, comerciais, ERPs, CRMs ou ferramentas internas e deseja adicionar recursos modernos sem precisar abandonar a base existente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Veja como \u00e9 f\u00e1cil adicionar arquivos para serem analisados pela IA usando o componente TMSMCPCloudAI:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#f6f6f4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>  TMSMCPCloudAI1.Files.Clear;\n  TMSMCPCloudAI1.AddFile('imagem.jpg', aiftImage);<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dracula-soft\" style=\"background-color: #282A36\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F6F6F4\">  TMSMCPCloudAI1.Files.Clear;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">  TMSMCPCloudAI1.<\/span><span style=\"color: #62E884\">AddFile<\/span><span style=\"color: #F6F6F4\">(<\/span><span style=\"color: #DEE492\">&#39;<\/span><span style=\"color: #E7EE98\">imagem.jpg<\/span><span style=\"color: #DEE492\">&#39;<\/span><span style=\"color: #F6F6F4\">, aiftImage);<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Podem ser adicionados arquivos de v\u00e1rios formatos, como <strong>imagens<\/strong>, arquivos de <strong>texto<\/strong>, <strong>PDFs<\/strong>, <strong>CSV<\/strong>, <strong>bin\u00e1rios<\/strong>, arquivos de <strong>\u00e1udio<\/strong>, <strong>Excel<\/strong>, <strong>Word<\/strong>, entre outros.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ap\u00f3s isso, basta adicionar o prompt com as instru\u00e7\u00f5es sobre o que deve ser feito com os arquivos, e pronto:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#f6f6f4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>  TMSMCPCloudAI1.Context.Text := 'Prompt desejado';\n  TMSMCPCloudAI1.Execute;<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dracula-soft\" style=\"background-color: #282A36\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F6F6F4\">  TMSMCPCloudAI1.Context.Text :<\/span><span style=\"color: #F286C4\">=<\/span><span style=\"color: #F6F6F4\"> <\/span><span style=\"color: #DEE492\">&#39;<\/span><span style=\"color: #E7EE98\">Prompt desejado<\/span><span style=\"color: #DEE492\">&#39;<\/span><span style=\"color: #F6F6F4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">  TMSMCPCloudAI1.Execute;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">E, por \u00faltimo, obter a resposta do processamento feito pela IA no evento OnExecuted do componente.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#f6f6f4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>procedure TImagesMainView.TMSMCPCloudAI1Executed(Sender: TObject;\n  AResponse: TTMSMCPCloudAIResponse;\n  AHttpStatusCode: Integer; AHttpResult: string);\nbegin\n  mmResponse.Lines.Text := AResponse.Content.Text;\nend;<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dracula-soft\" style=\"background-color: #282A36\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F6F6F4\">procedure TImagesMainView.<\/span><span style=\"color: #62E884\">TMSMCPCloudAI1Executed<\/span><span style=\"color: #F6F6F4\">(Sender: TObject;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">  AResponse: TTMSMCPCloudAIResponse;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">  AHttpStatusCode: Integer; AHttpResult: string);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">begin<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">  mmResponse.Lines.Text :<\/span><span style=\"color: #F286C4\">=<\/span><span style=\"color: #F6F6F4\"> AResponse.Content.Text;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F6F6F4\">end;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">A IA multimodal pode ser usada como apoio para o usu\u00e1rio, como recurso de automa\u00e7\u00e3o, como ferramenta de an\u00e1lise ou at\u00e9 como uma camada inteligente dentro do fluxo do sistema.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O ponto principal \u00e9 entender que a IA n\u00e3o precisa ficar limitada a um chat. Pode trabalhar com imagens, documentos e \u00e1udios. E pode devolver respostas \u00fateis para melhorar a experi\u00eancia do usu\u00e1rio e aumentar a produtividade.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No Short em anexo, mostrei de forma simples como esse conceito pode ser aplicado no Delphi usando os componentes do <strong>TMS AI Studio<\/strong>. Temos tamb\u00e9m um v\u00eddeo completo com um passo a passo deste poderoso recurso que pode ser <a href=\"https:\/\/www.youtube.com\/watch?v=l21c8a3GwiA&amp;list=PLLHSz4dOnnN237tIxJI10E5cy1dgXJxgP\" target=\"_blank\" rel=\"noreferrer noopener\">acesso neste link<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<div class=\"video-container\"><iframe loading=\"lazy\" title=\"IA Multimodal no Delphi | #delphi #tmssoftware #IA #009\" width=\"740\" height=\"416\" src=\"https:\/\/www.youtube.com\/embed\/LVSl00Qt0jY?list=PLLHSz4dOnnN3aAG6-5Zj_2Pspfr2pEMX5\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/div>\n<\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c9 mais um exemplo de como o Delphi continua acompanhando as novas tecnologias e permitindo que aplica\u00e7\u00f5es j\u00e1 existentes ganhem recursos modernos de Intelig\u00eancia Artificial.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">E voc\u00ea, j\u00e1 imaginou algum cen\u00e1rio onde sua aplica\u00e7\u00e3o Delphi poderia usar IA para analisar imagens?<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Links \u00fateis:<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83c\udff7\ufe0f Cupom de desconto TMS: 2026Code4Delphi30<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u25b6\ufe0f <a href=\"https:\/\/www.youtube.com\/watch?v=l21c8a3GwiA&amp;list=PLLHSz4dOnnN237tIxJI10E5cy1dgXJxgP\" target=\"_blank\" rel=\"noreferrer noopener\">V\u00eddeo completo de multimodas com Delphi<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2b07\ufe0f <a href=\"https:\/\/github.com\/Code4Delphi\/ia-na-pratica\/tree\/master\/Samples\/Images\" target=\"_blank\" rel=\"noreferrer noopener\">Reposit\u00f3rio com exemplos<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udd17 <a href=\"https:\/\/www.tmssoftware.com\/site\/tmsaistudio.asp\" target=\"_blank\" rel=\"noreferrer noopener\">TMS AI Studio<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Quando falamos em Intelig\u00eancia Artificial dentro de uma aplica\u00e7\u00e3o, muita gente ainda pensa apenas em texto.&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"categories":[1,110,98],"tags":[54,152],"class_list":["post-1626","post","type-post","status-publish","format-standard","hentry","category-geral","category-ia","category-tms","tag-ia","tag-ia-multimodal"],"_links":{"self":[{"href":"https:\/\/code4delphi.com.br\/blog\/wp-json\/wp\/v2\/posts\/1626","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/code4delphi.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/code4delphi.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/code4delphi.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/code4delphi.com.br\/blog\/wp-json\/wp\/v2\/comments?post=1626"}],"version-history":[{"count":5,"href":"https:\/\/code4delphi.com.br\/blog\/wp-json\/wp\/v2\/posts\/1626\/revisions"}],"predecessor-version":[{"id":1631,"href":"https:\/\/code4delphi.com.br\/blog\/wp-json\/wp\/v2\/posts\/1626\/revisions\/1631"}],"wp:attachment":[{"href":"https:\/\/code4delphi.com.br\/blog\/wp-json\/wp\/v2\/media?parent=1626"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/code4delphi.com.br\/blog\/wp-json\/wp\/v2\/categories?post=1626"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/code4delphi.com.br\/blog\/wp-json\/wp\/v2\/tags?post=1626"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}