Olá a todos! Meu nome é Nataraj e, assim como você, sou fascinado pelo recente progresso da inteligência artificial. Percebendo que precisava ficar por dentro de todos os desenvolvimentos que aconteciam, decidi embarcar em uma jornada pessoal de aprendizado, assim nasceu 100 dias de IA ! Com esta série, aprenderei sobre LLMs e compartilharei ideias, experimentos, opiniões, tendências e aprendizados por meio de postagens em meu blog. Você pode acompanhar a jornada no HackerNoon aqui ou no meu site pessoal aqui . No artigo de hoje, procuraremos construir um Kernel Semântico com a ajuda do GPT-4.
Se você está lendo a série 100 Dias de IA, estou escrevendo um tema comum que você notará: a maioria das postagens tem algum tipo de experimento ou demonstração. No final dos posts também listo ideias que são possíveis com as tecnologias que explorei. Portanto, a próxima pergunta óbvia é: existe uma maneira de transformar facilmente esses experimentos em produtos demonstráveis e compartilhá-los com as pessoas e obter feedback?
Nesta postagem, exploraremos como converter facilmente um experimento de IA em uma demonstração e obter feedback.
Digamos que você queira criar um aplicativo de IA que receba texto e retorne um resumo. E você deseja compartilhar isso com as pessoas e obter feedback. Se você precisar criar um aplicativo da web para este aplicativo, precisará codificar a IU, certificar-se de encontrar uma solução de hospedagem e descobrir como será a pilha inteira. É claro que existem pilhas de aplicativos da web iniciadas que permitirão fazer isso com mais rapidez, mas você não precisa de toda essa complexidade para o seu caso de uso. Em vez disso, usaremos Gradio, que cria uma interface semelhante a um aplicativo da web sem escrever nenhum código para este aplicativo.
Gradio é uma biblioteca python que permite criar facilmente demonstrações de seus aplicativos de IA e compartilhá-las com o público na forma de um aplicativo da web.
Para entender como demonstrar facilmente um experimento de geração de IA com Gradio, construiremos um aplicativo da web de resumo onde você pode fornecer ao aplicativo um texto longo e o aplicativo produzirá o resumo desse texto longo.
Junto com o Gradio, usaremos o aplicativo de rosto de abraço, portanto, para acompanhar, certifique-se de manter sua chave de API de rosto de abraço à mão. Para começar, vamos carregar a chave API do arquivo .env e adicionar os módulos python necessários.
import os import io from IPython.display import Image, display, HTML #from PIL import Image import base64 import openai env_path = '../.env' from dotenv import load_dotenv, find_dotenv _ = load_dotenv(find_dotenv(env_path)) # read local .env file hf_api_key = os.environ['HF_API_KEY']
A lógica central do que queremos alcançar é enviar um texto longo para um modelo e obter um resumo do texto. Definiremos uma função que recebe o texto longo como entrada e chama um modelo no rosto abraçado chamado distilbart . Aqui está a função para fazer isso.
def get_completion(inputs, parameters=None, ENDPOINT_URL=os.environ['HF_API_SUMMARY_BASE']): headers = { "Authorization": f"Bearer {hf_api_key}", "Content-Type": "application/json" } data = { "inputs": inputs } if parameters is not None: data.update({"parameters": parameters}) response = requests.request("POST", ENDPOINT_URL, headers=headers, data=json.dumps(data) ) return json.loads(response.content.decode("utf-8"))
A principal forma de interagir com o Gradio é através da função de interface . Precisamos passar uma função e suas entradas e saídas correspondentes. Observe que definimos uma nova função chamada resume para esse propósito. Esta função recebe uma entrada, que será o texto longo que será resumido e a função chamará a função get_completion da etapa 2 para obter o resumo do texto de entrada e retorná-lo como saída . Na reta final pedimos à gradio que lance a demonstração deste app. Ao fornecer share=True , estamos dizendo ao Gradio para criar um link público que possa ser compartilhado com outras pessoas e também fornecendo o server_port no qual o host local deve ser executado. No código abaixo também personalizamos o título, a descrição e os rótulos dos campos de entrada e saída que você notará na saída.
import gradio as gr def summarize(input): output = get_completion(input) return output[0]['summary_text'] gr.close_all() demo = gr.Interface(fn=summarize, inputs=[gr.Textbox(label="Text to summarize", lines=6)], outputs=[gr.Textbox(label="Result", lines=3)], title="Text summarization with distilbart-cnn", description="Summarize any text using the `shleifer/distilbart-cnn-12-6` model under the hood!" ) demo.launch(share=True, server_port=int(os.environ['PORT1']))
Depois de executar isso, aqui está a aparência da saída em seu navegador em http://127.0.0.1:<seu número de porta>.
É muito fácil demonstrar um projeto com Gradio. A beleza aqui é que você, como desenvolvedor, não precisou criar uma pilha de UI e passar pela complexidade de aprender essa pilha e levá-la para produção. A Gradio faz isso por você.
Gradio oferece diferentes tipos de entrada e saída com os quais você pode criar demonstrações mais complexas e interessantes que podem ser facilmente compartilhadas. Exploraremos mais demonstrações com Gradio e outras ferramentas nos próximos posts.
É isso no dia 12 de 100 dias de IA.
Escrevo um boletim informativo chamado Above Average, onde falo sobre os insights de segunda ordem por trás de tudo o que está acontecendo nas grandes tecnologias. Se você trabalha com tecnologia e não quer ser mediano, inscreva-se .
Siga-me no Twitter , LinkedIn ou HackerNoon para obter as atualizações mais recentes sobre os 100 dias de IA. Se você trabalha com tecnologia, pode estar interessado em ingressar na minha comunidade de profissionais de tecnologia aqui .