Skip to content

Commit 6847f0e

Browse files
committed
Add Spanish version of README
1 parent 4d00a0f commit 6847f0e

File tree

2 files changed

+139
-0
lines changed

2 files changed

+139
-0
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,3 +133,5 @@ This library is under development and still requires more work to solidify the p
133133
- Setup CI
134134

135135
Get involved! Lots todo!
136+
137+
[Lea esto en español](README_ES.md)

README_ES.md

Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
# typechat-go
2+
3+
typechat-go es una biblioteca que facilita la construcción de interfaces de lenguaje natural utilizando tipos.
4+
5+
Este proyecto es una implementación en Go del proyecto original [TypeChat](https://github.com/microsoft/TypeChat) de Microsoft.
6+
7+
Visite https://microsoft.github.io/TypeChat para obtener más información sobre lo que le permite hacer.
8+
9+
Esta implementación sigue de manera flexible lo que hace la versión 0.10 de TypeChat con ergonomía ligeramente diferente más apropiada para Go.
10+
11+
Algunas de las diferencias clave son que esta biblioteca tiene menos opiniones sobre cómo se comunica con el LLM, y siempre que proporcione un cliente válido, puede usarlo fácilmente.
12+
13+
## Cómo usar
14+
15+
### Prompt + Tipo de Retorno
16+
17+
Esta funcionalidad le permite pasar un prompt de lenguaje natural y el tipo de resultado esperado que desea que el LLM use al responder. Por ejemplo:
18+
```go
19+
type Classifier struct {
20+
Sentiment string
21+
}
22+
23+
ctx := context.Background()
24+
25+
// Proporcione un cliente de modelo que implemente la interfaz requerida
26+
// es decir, Do(ctx context.Context, prompt string) (response []byte, err error)
27+
// Este modelo puede llamar a OpenAPI, Azure o cualquier LLM. Usted controla el transporte.
28+
model := ...
29+
30+
prompt := typechat.NewPrompt[Classifier](model, "¡Hoy es un buen día!")
31+
result, err := prompt.Execute(ctx)
32+
if err != nil {
33+
...
34+
}
35+
36+
fmt.Println(result.Sentiment) // proporcionado por el LLM
37+
```
38+
39+
Notará que esta implementación está utilizando Generics, por lo que el resultado que obtiene del LLM está completamente tipificado y puede ser utilizado por el resto de su aplicación.
40+
41+
### Prompt + Programa
42+
43+
Esta funcionalidad le permite pasar un prompt de lenguaje natural junto con una interfaz de comportamiento que su aplicación admite. La biblioteca hará que el LLM genere una secuencia de pasos que considera necesarios para realizar una tarea dada.
44+
45+
```go
46+
type API interface {
47+
CreateTweet(message string)
48+
CreateLinkedInMessage(message string)
49+
}
50+
51+
ctx := context.Background()
52+
53+
// Proporcione un cliente de modelo que implemente la interfaz requerida
54+
// es decir, Do(ctx context.Context, prompt string) (response []byte, err error)
55+
// Este modelo puede llamar a OpenAPI, Azure o cualquier LLM. Usted controla el transporte.
56+
model := ...
57+
58+
prompt := typechat.NewPrompt[API](model, "¡Realmente necesito twittear y publicar en mi LinkedIn que he sido promovido!")
59+
program, err := prompt.CreateProgram(ctx)
60+
if err != nil {
61+
...
62+
}
63+
64+
// El programa contendrá las invocaciones necesarias que su aplicación tiene que hacer con la API proporcionada para realizar la tarea identificada por el LLM.
65+
program.Steps[0].Name == "CreateTweet"
66+
program.Steps[0].Args == []any{"¡He sido promovido!"}
67+
68+
program.Steps[1].Name == "CreateLinkedInMessage"
69+
program.Steps[1].Args == []any{"¡He sido promovido!"}
70+
71+
// Puede construir un ejecutor de programas sobre esta estructura.
72+
```
73+
74+
### Ejemplo de Manejo de Errores
75+
76+
Al trabajar con servicios o API externos, es crucial manejar los errores de manera elegante. A continuación, se muestra un ejemplo de cómo manejar errores al usar el método `Execute` de la estructura `Prompt`.
77+
78+
```go
79+
ctx := context.Background()
80+
model := ... // su cliente de modelo
81+
82+
prompt := typechat.NewPrompt[Classifier](model, "Analizar el sentimiento de este texto.")
83+
result, err := prompt.Execute(ctx)
84+
if err != nil {
85+
fmt.Printf("Ocurrió un error: %s\n", err)
86+
return
87+
}
88+
89+
fmt.Printf("Resultado del análisis de sentimiento: %s\n", result.Sentiment)
90+
```
91+
92+
Este ejemplo demuestra cómo capturar y manejar errores devueltos por el método `Execute`, asegurando que su aplicación pueda responder adecuadamente a los fallos.
93+
94+
### Ejemplo de Adaptador Personalizado
95+
96+
Para usar un adaptador personalizado con la biblioteca, necesita crear un adaptador que implemente la interfaz `client`. A continuación, se muestra un ejemplo de cómo crear un adaptador personalizado y usarlo con `NewPrompt`.
97+
98+
```go
99+
type MyCustomAdapter struct {
100+
// Campos y métodos personalizados
101+
}
102+
103+
func (m *MyCustomAdapter) Do(ctx context.Context, prompt []Message) (string, error) {
104+
// Implemente la lógica para enviar el prompt a su servicio y devolver la respuesta
105+
return "respuesta de su servicio", nil
106+
}
107+
108+
ctx := context.Background()
109+
adapter := &MyCustomAdapter{}
110+
111+
prompt := typechat.NewPrompt[Classifier](adapter, "Analizar este texto con mi adaptador personalizado.")
112+
result, err := prompt.Execute(ctx)
113+
if err != nil {
114+
fmt.Printf("Ocurrió un error: %s\n", err)
115+
return
116+
}
117+
118+
fmt.Printf("Resultado del adaptador personalizado: %s\n", result.Sentiment)
119+
```
120+
121+
Este ejemplo demuestra cómo crear un adaptador personalizado que implementa la interfaz `client` y usarlo con `NewPrompt` para enviar prompts a su servicio personalizado.
122+
123+
## Contribuyendo
124+
125+
Esta biblioteca está en desarrollo y aún requiere más trabajo para solidificar las API proporcionadas, así que úsela con precaución. Se realizará un lanzamiento en un futuro cercano.
126+
127+
### Tareas Pendientes
128+
129+
- Más pruebas
130+
- Proporcionar un paquete de adaptador para crear de manera predeterminada con clientes de OpenAI y Azure
131+
- Otros casos de uso como conversaciones
132+
- Descubrir la mejor manera de mantenerse sincronizado con el proyecto original de TypeChat
133+
- Configurar CI
134+
135+
¡Participe! ¡Mucho por hacer!
136+
137+
[Read this in English](README.md)

0 commit comments

Comments
 (0)