Cree un complemento ChatGPT en cinco minutos

OpenAI lanzó la API oficial de ChatGPT en marzo de 2023 y hoy lanzó la calificación para el desarrollo y uso de complementos. Muchos desarrolladores y emprendedores están ansiosos por encontrar formas de integrarlo en sus operaciones comerciales.

Sin embargo, todavía es difícil lograrlo:

  • OpenAI proporciona una API sin estado simple para ChatGPT . Los desarrolladores necesitan realizar un seguimiento del historial y el contexto de cada conversación en una base de datos o caché administrada por la aplicación. Los desarrolladores también necesitan administrar y proteger las claves API. Aquí hay mucho código repetitivo que no tiene nada que ver con la lógica empresarial de la aplicación.
  • La interfaz de usuario "natural" para las aplicaciones API ChatGPT es el chat de subprocesos. Pero crear una "interfaz de chat" en un marco de aplicación o web tradicional es muy difícil. De hecho, las interfaces de chat más utilizadas ya existen en aplicaciones de mensajería como Slack, Discord e incluso foros como GitHub Discussions. Necesitábamos una manera fácil de conectar las respuestas API de ChatGPT a un servicio de mensajería existente.

En este artículo, mostraré cómo crear un bot de GitHub sin servidor. Con este bot, los usuarios de GitHub pueden chatear con ChatGPT en Problemas de GitHub. Puedes intentar chatear con ChatGPT planteando un nuevo problema o comentando un problema existente. En otras palabras, este proyecto utiliza la interfaz de usuario de mensajes de hilo de GitHub Issues como interfaz de usuario de chat.
inserte la descripción de la imagen aquí

Figura 1. Aprendiendo a programar en Rust con ChatGPT. Consulte https://github.com/ second-state/chat-with-chatgpt/issues/31

El bot es una función sin servidor escrita en Rust. Simplemente bifurque la plantilla de ejemplo, implemente su bifurcación en flows.network y configúrela con su repositorio de GitHub y sus claves OpenAI. En sólo 5 minutos, puedes tener un bot de GitHub completamente funcional. No es necesario configurar un servidor web o un webhook para la API de GitHub o el servidor de caché/base de datos.

Comprender el repositorio de plantillas

Primero, bifurque el repositorio de plantillas de GitHub . El archivo contiene la aplicación bot (también conocida como función de flujo). La función se llama al inicio. Escucha eventos del repositorio de GitHub y . Estos eventos se habilitan cuando se crea un nuevo problema o un comentario de problema nuevo en el repositorio.src/lib.rsrun()owner/repoissue_commentissues

#[no_mangle]
#[tokio::main(flavor = "current_thread")]
pub async fn run() {
// Setup variables for
//   owner: GitHub org to install the bot
//   repo: GitHub repo to install the bot
//   openai_key_name: Name for your OpenAI API key
// All the values can be set in the source code or as env vars
listen_to_event(&owner, &repo, vec!["issue_comment", "issues"], |payload| {
handler(&owner, &repo, &openai_key_name, payload)
})
.await;
}

handler()La función maneja listen_to_event()el evento recibido. Si el evento es un comentario nuevo en el problema, el bot llama a la API ChatGPT de OpenAI para agregar el texto del comentario a la issue.numberconversación existente identificada por . Recibe una respuesta de ChatGPT y agrega un comentario al problema.

La función de flujo aquí administra de forma automática y transparente el historial de conversaciones con la API ChatGPT en el almacenamiento local. Las claves de la API de OpenAI también se almacenan en el almacenamiento local, de modo que openai_key_namelas claves puedan identificarse por sus nombres de cadena en, en lugar de tenerlas en el código fuente.

EventPayload::IssueCommentEvent(e) => {
if e.comment.user.r#type != "Bot" {
if let Some(b) = e.comment.body {
if let Some(r) = chat_completion (
                    openai_key_name,
&format!("issue#{}", e.issue.number),
&b,
&ChatOptions::default(),
) {
if let Err(e) = issues.create_comment(e.issue.number, r.choice).await {
write_error_log!(e.to_string());
}
}
}
}

Si el evento es un problema nuevo, la función de flujo crea una nueva conversación, issue.numberla identifica y solicita una respuesta de ChatGPT.

EventPayload::IssuesEvent(e) => {
if e.action == IssuesEventAction::Closed {
return;
}
let title = e.issue.title;
let body = e.issue.body.unwrap_or("".to_string());
let q = title + "\n" + &body;
if let Some(r) = chat_completion (
            openai_key_name,
&format!("issue#{}", e.issue.number),
&q,
&ChatOptions::default(),
) {
if let Err(e) = issues.create_comment(e.issue.number, r.choice).await {
write_error_log!(e.to_string());
}
}
}

Cómo implementar funciones de Serverless Flow

Como puede ver, el código de la función de flujo llama a la API del SDK para realizar operaciones complejas. Por ejemplo

  • listen_to_event()La función registra una URL de webhook con la API de GitHub para que handler()se llame a la función cuando ocurran ciertos eventos en GitHub.
  • La chat_completion()función llama a la API ChatGPT con la clave API nombrada y el historial (contexto) de la conversación especificada. Las claves API y el historial de conversaciones se almacenan en una caché de Redis.

Tanto el servidor webhook como la caché de Redis son servicios externos de los que depende el SDK. Esto significa que las funciones de flujo deben ejecutarse en un entorno de host administrado que proporcione dichos servicios externos. Flows.network es el host PaaS (Plataforma como servicio) del SDK de la función de flujo.

Para implementar una función de flujo en flows.network, simplemente importe su código fuente a PaaS.

Primero, inicie sesión en flows.network desde su cuenta de GitHub. Importe el repositorio de GitHub que acaba de bifurcar y que contiene el código fuente de la función de flujo y seleccione "Avanzado".

Tenga en cuenta que no es el repositorio de GitHub donde desea implementar el robot; es el repositorio donde bifurcó el código fuente de la función de flujo chatgpt-github-app.
inserte la descripción de la imagen aquí
Figura 2. Importe el repositorio de la plantilla de función de flujo de su bifurcación a flows.network.

Establezca variables de entorno para apuntar la función de flujo al nombre de la clave de la API de OpenAI ( openai_name_key) y al repositorio de GitHub ( ownery repo).

ownerGitHub y las variables aquí repoapuntan al repositorio de GitHub donde desea implementar el robot, no al repositorio donde está el código fuente de la función de flujo.
inserte la descripción de la imagen aquí

Figura 3. Configuración de variables de entorno para el repositorio de GitHub donde se implementará el bot y el nombre de la clave de la API de OpenAI.

Flows.network buscará el código fuente y utilizará una cargocadena de herramientas estándar para construir el código fuente de Rust en el código de bytes de Wasm. Luego ejecute la función de flujo Wasm en WasmEdge Runtime .

Cómo conectar funciones de Flow a GitHub y OpenAI

Si bien las funciones de flujo requieren conectarse a las API de OpenAI y GitHub, el código fuente no tiene claves API codificadas, tokens de acceso ni lógica OAUTH. El SDK de función de flujo permite a los desarrolladores interactuar de forma fácil y segura con servicios API de SaaS externos.

Flows.network descubrió que las funciones de flujo deben conectarse a OpenAI y a la API de GitHub. La plataforma de flujos proporciona a los desarrolladores flujos de trabajo de interfaz de usuario, lo que les permite:

  • Inicie sesión en GitHub, autorice el acceso a los eventos y registre la función de flujo como un webhook para recibir estos eventos.
  • Asocie una clave API de OpenAI con un nombre openai_key_name .

inserte la descripción de la imagen aquí
Figura 4. Servicios externos requeridos por la función de flujo

Cuando las API de SaaS externas se conectan y autorizan correctamente, aparecerán como "Conectadas" en el panel de funciones de flujo. La función de flujo ahora recibirá listen_to_event()eventos de . También obtendrá acceso transparente a Redis para claves API de OpenAI específicas y contextos de diálogo en caché, lo que permitirá chat_completion()funciones SDK.

Próximo paso

flows.network admite la conexión de diferentes bots para varios SaaS, el bot de GitHub es solo uno de ellos. Obtenga ChatGPT para participar en las discusiones de su grupo conectando la función de flujo a un canal de Slack. A continuación se muestra un ejemplo de un bot ChatGPT basado en Slack.

https://github.com/flows-network/collaborative-chatinserte la descripción de la imagen aquí

Figura 5. Bot Slack ChatGPT

Otro ejemplo es hacer que ChatGPT responda preguntas legales en un canal de Slack. El mensaje se puede especificar en la función de flujo, lo que indica que ChatCPT debe actuar como consultor legal para responder al asesoramiento legal.

https://github.com/flows-network/robo-lawyer inserte la descripción de la imagen aquí
Figura 6. Robot abogado Slack

Además de GitHub y Slack, existen muchos productos SaaS que se pueden integrar en flows.network a través de su API.


inserte la descripción de la imagen aquí

¡La Cumbre Ecológica de Desarrolladores de China Dev.Together, el primer evento de intercambio nacional para profesionales de marketing, operaciones de desarrolladores y relaciones con desarrolladores de to D, se llevará a cabo en Beijing el 25 de marzo!
En esta Cumbre de Ecología de Desarrolladores, creamos un mercado de cofres del tesoro comunitario abierto, invitando al software comunitario de preguntas y respuestas de código abierto Answer, X-Lab, TiDB, flows.network, Fork.ai, ONES y Pando Proto, etc. exposición, que le muestra herramientas operativas prácticas e interesantes en una sola parada, ayudándole a obtener el doble de resultado con la mitad del esfuerzo, obtener un ascenso y aumentar su salario.

Además de herramientas prácticas, los expositores también han preparado interesantes y divertidos mecanismos y periféricos interactivos, en los que todos pueden jugar juntos. Además, hay una tarea de perforar y sellar pasaportes en el lugar, venir al mercado para ser un estampador ambulante y sentir la alegría de **"colección de sellos"**. Colecciona un número determinado de sellos, y también podrás canjearlos por periféricos oficiales personalizados y cajas ciegas sorpresa. ¡Recuerda encontrar sellos ocultos para canjear por regalos!


flows.network


flows.network
es una plataforma sin servidor de bajo código. Comenzando con las herramientas comúnmente utilizadas por los desarrolladores, flows.network permitirá a los desarrolladores y a DevRel automatizar los flujos de trabajo, reducir la carga sobre los desarrolladores y los costos de comunicación, y crear una comunidad de desarrolladores más activa. En flows.network, aprenderá cómo automatizar el flujo de trabajo de DevRel, ahorrando tiempo y esfuerzo. Ven a experimentar el mundo mágico de ChatGPT y gana premios increíbles.
Tareas del stand: los participantes pueden optar por experimentar la demostración de ChatGPT o participar agregando nuestro grupo WeChat. Después de completar cualquier tarea, pueden ir al stand de flows.network para obtener un sello. Además, los participantes también pueden elegir nuestras otras tareas interactivas para ganar premios exquisitos: escuche la explicación de la demostración y obtenga un cable de carga 3 en 1; vea una demostración de una cita y envíe un cuestionario de comentarios para obtener un sombrero o una taza esmaltada; implementación exitosa La aplicación puede recoger una camiseta en el acto.

Necesitas registrarte en la página del evento.

Supongo que te gusta

Origin blog.csdn.net/weixin_42376823/article/details/129753850
Recomendado
Clasificación