En este tutorial, aprenderás a crear una aplicación desde cero que aprovecha el poder de la IA generativa de ChatGPT (OpenAI) para interactuar con los usuarios en tiempo real. Perfecto para principiantes y profesionales que quieran llevar su desarrollo al siguiente nivel y generar un producto atractivo. Usaremos React Native para la app móvil y Node.js para el backend.
Paso 1: Configurar el Backend con OpenAI API
1.1 Crear una cuenta en OpenAI
- Ve a OpenAI y regístrate.
- Genera tu clave de API en la sección de «API Keys».
1.2 Configura tu servidor backend
Usaremos Node.js con Express. Crea un proyecto:
mkdir chatgpt-app && cd chatgpt-app npm init -y npm install express dotenv body-parser openai
Crea un archivo .env
para tu clave:
OPENAI_API_KEY=tu_clave_aqui
Código del servidor (server.js
):
const express = require('express'); const bodyParser = require('body-parser'); const { Configuration, OpenAIApi } = require('openai'); require('dotenv').config(); const app = express(); app.use(bodyParser.json()); const configuration = new Configuration({ apiKey: process.env.OPENAI_API_KEY, }); const openai = new OpenAIApi(configuration); app.post('/chat', async (req, res) => { const { message } = req.body; try { const response = await openai.createCompletion({ model: 'text-davinci-003', prompt: message, max_tokens: 150, }); res.json({ reply: response.data.choices[0].text.trim() }); } catch (error) { res.status(500).send(error.toString()); } }); app.listen(3000, () => console.log('Server running on http://localhost:3000'));
Inicia el servidor:
node server.js
Paso 2: Crear la App Móvil con React Native
2.1 Instalar el entorno
Asegúrate de tener Node.js, npm, y Expo CLI:
npm install -g expo-cli
Crea un nuevo proyecto:
expo init chatgpt-app cd chatgpt-app npm install axios
2.2 Diseñar la interfaz
Edita el archivo App.js
:
import React, { useState } from 'react'; import { View, Text, TextInput, Button, StyleSheet, ScrollView } from 'react-native'; import axios from 'axios'; export default function App() { const [input, setInput] = useState(''); const [messages, setMessages] = useState([]); const sendMessage = async () => { if (!input.trim()) return; const userMessage = { sender: 'user', text: input }; setMessages([...messages, userMessage]); setInput(''); try { const response = await axios.post('http://<TU_IP>:3000/chat', { message: input }); const botMessage = { sender: 'bot', text: response.data.reply }; setMessages((prev) => [...prev, botMessage]); } catch (error) { console.error(error); } }; return ( <View style={styles.container}> <ScrollView style={styles.chat}> {messages.map((msg, index) => ( <Text key={index} style={[styles.message, msg.sender === 'user' ? styles.user : styles.bot]} > {msg.text} </Text> ))} </ScrollView> <View style={styles.inputContainer}> <TextInput style={styles.input} value={input} onChangeText={setInput} placeholder="Escribe tu mensaje..." /> <Button title="Enviar" onPress={sendMessage} /> </View> </View> ); } const styles = StyleSheet.create({ container: { flex: 1, padding: 20, backgroundColor: '#f4f4f4' }, chat: { flex: 1, marginBottom: 10 }, message: { marginVertical: 5, padding: 10, borderRadius: 5 }, user: { backgroundColor: '#007aff', color: '#fff', alignSelf: 'flex-end' }, bot: { backgroundColor: '#e5e5ea', alignSelf: 'flex-start' }, inputContainer: { flexDirection: 'row', alignItems: 'center' }, input: { flex: 1, borderWidth: 1, borderColor: '#ccc', borderRadius: 5, padding: 10, marginRight: 10 }, });
Paso 3: Probar la App
- Asegúrate de que el servidor esté corriendo en tu máquina local.
- Inicia la app móvil:
expo start
- Escanea el código QR con la app de Expo Go y prueba la interacción.
Ingeniero en Informática, Investigador, me encanta crear cosas o arreglarlas y darles una nueva vida. Escritor y poeta. Más de 20 APPs publicadas y un libro en Amazon.