Skip to content

Commit

Permalink
Updated README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
iceener committed Nov 4, 2024
1 parent a4acab6 commit 255689c
Show file tree
Hide file tree
Showing 20 changed files with 91 additions and 24,228 deletions.
92 changes: 88 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ Upewnij się, że posiadasz najnowsze wersje Node.js oraz Bun zainstalowane na s

1. Pobierz repozytorium:
```bash
git clone https://github.com/twojnazwauzytkownika/aidevs3-examples.git
cd aidevs3-examples
git clone git@github.com:i-am-alice/3rd-devs.git
cd 3rd-devs
```

2. Zainstaluj zależności:
Expand All @@ -35,7 +35,8 @@ Upewnij się, że posiadasz najnowsze wersje Node.js oraz Bun zainstalowane na s
Przykład przedstawia konwersację między użytkownikiem i asystentem, w której działa mechanizm podsumowania konwersacji.

- Uruchomienie serwera: `bun run thread`
- Interakcja: `curl http://localhost:3000/api/demo`
- Interakcja demo: `curl http://localhost:3000/api/demo`
- Interakcja chat: `curl -X POST http://localhost:3000/api/chat -H "Content-Type: application/json" -d '{"message": { "role": "user", "content": "Hi"}}'`

Wywołanie powyższego endpointu uruchomi trzy niezależne zapytania do OpenAI, jednak w wiadomości systemowej zostanie przekazane podsumowanie poprzedniej interakcji, dzięki czemu model będzie miał możliwość odwołać się do ich treści.

Expand Down Expand Up @@ -74,4 +75,87 @@ Przykład ten korzysta z [Firecrawl](https://www.firecrawl.dev) do przeszukiwani
-d '{"messages": [{"role": "user", "content": "Search wiki for 'John Wick'"}]}'
```

Ważne: w pliku `websearch/app.ts` można zmienić listę domen, które są dopuszczalne do przeszukiwania i pobierania treści.
Ważne: w pliku `websearch/app.ts` można zmienić listę domen, które są dopuszczalne do przeszukiwania i pobierania treści.

## S01E02

### Linear

Uruchomienie tego przykładu wymaga uzupełnienia pliku `.env` i wartości `LINEAR_API_KEY` oraz `LINEAR_WEBHOOK_SECRET`.
Obie wartości można znaleźć w [ustawieniach API](https://linear.app/overment/settings/api). Dodatkowo Twój localhost musi być dostępny z poza Twojej sieci lokalnej, np. za pomocą [ngrok](https://ngrok.com/). Publiczny adres URL należy także wskazać w panelu Linear w sekcji Webhooks, np.: `https://<ngrok-url>/api/linear/watch-issue` (pamiętaj o dodaniu właściwego endpointu do adresu).

WAŻNE: w pliku `linear/prompts.ts` znajduje się prompt w którym zostały opisane **moje projekty** w Linear.
Aby skrypt działał poprawnie, musisz zmodyfikować ten prompt, tak aby zawierał identyfikatory oraz opisy Twoich projektów.

Listę projektów i ich identyfikatory możesz pobrać korzystając z endpointu `/api/linear/projects`.

- Uruchomienie serwera: `bun linear`
- Pobranie listy projektów: `curl http://localhost:3000/api/linear/projects`
- Po dodaniu nowego wpisu w Twoim linearze, zostanie on automatycznie przypisany do projektu zgodnie z zasadami w promptach, o ile nie został przypisany przez Ciebie ręcznie.

### Files

- Uruchomienie serwera: `bun files`
- Interakcja:
```bash
curl -X POST http://localhost:3000/api/chat \
-H "Content-Type: application/json" \
-d '{"messages": [{"role": "user", "content": "Hey there, what\'s up?"}], "conversation_id": "d7582176-bc52-4ef3-980a-047b868f9f49"}'
```
Przykład ten pokazuje mechanizm podejmowania decyzji o zapamiętywaniu informacji na podstawie kontekstu rozmowy.
Dodatkowo w przypadku podania `conversation_id` w obiekcie żądania, do rozmowy zostaną wczytane wszystkie wiadomości dotyczące konkretnej rozmowy.
Wszystkie pliki zapisywane są w folderze `files/context`, a sam katalog można otworzyć w aplikacji [Obsidian](https://obsidian.md/) aby zobaczyć powiązania pomiędzy wspomnieniami.
## S01E03
### Langfuse
Ten przykład wymaga uzupełnienia pliku `.env` o wartości `LANGFUSE_PUBLIC_KEY`, `LANGFUSE_SECRET_KEY` oraz `LANGFUSE_HOST`. Można je uzyskać zakładając bezpłatne konto na [Langfuse](https://langfuse.com/).
- Uruchomienie serwera: `bun langfuse`
- Interakcja:
```bash
curl http://localhost:3000/api/chat \
-H "Content-Type: application/json" \
-d '{"messages": [{"role": "user", "content": "Hey there, what\'s up?"}]}'
```
Po wykonaniu zapytania, zostanie ono automatycznie zalogowane do Langfuse, a wynik wyświetlony w panelu.
### Tiktokenizer
- Uruchomienie serwera: `bun tiktokenizer`
- Interakcja:
```bash
curl http://localhost:3000/api/chat \
-H "Content-Type: application/json" \
-d '{"messages": [{"role": "user", "content": "Hey there, what\'s up?"}], "model": "gpt-4o"}'
```
Przykład ten pokazuje mechanizm liczenia tokenów w zapytaniach do modeli OpenAI (np. gpt-4o).
### Max tokens
Przykład ten pokazuje jeden mechanizm pozwalający na kontynuowanie wypowiedzi modelu, pomimo osiągnięcia maksymalnej liczby tokenów wyjściowych (output tokens).
- Uruchomienie serwera: `bun max_tokens`
- Interakcja:
```bash
curl http://localhost:3000/api/chat \
-H "Content-Type: application/json" \
-d '{"messages": [{"role": "user", "content": "Write ten sentences about apples and put them in order."}]}'
```
### Constitution
Przykład ten przedstawia mechanizm blokowania zapytań, które nie spełniają warunków określonych w prompcie `/constitution/prompts.ts`.
- Uruchomienie serwera: `bun constitution`
- Interakcja:
```bash
curl http://localhost:3000/api/chat \
-H "Content-Type: application/json" \
-d '{"messages": [{"role": "user", "content": "Hello!"}]}'
```
6 changes: 0 additions & 6 deletions files/OpenAIService.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
import fs from 'fs';
import path from 'path';
import OpenAI from "openai";
import type { ChatCompletionMessageParam } from "openai/resources/chat/completions";

Expand Down Expand Up @@ -30,10 +28,6 @@ export class OpenAIService {
response_format: jsonMode ? { type: "json_object" } : { type: "text" }
});

const logContent = `Messages:\n${JSON.stringify(messages, null, 2)}\n\nChat Completion:\n${JSON.stringify(chatCompletion, null, 2)}\n\n`;

fs.appendFileSync(path.join(__dirname, 'prompt.md'), logContent);

if (stream) {
return chatCompletion as AsyncIterable<OpenAI.Chat.Completions.ChatCompletionChunk>;
} else {
Expand Down
Binary file removed files/context/embeddings/memory_faiss.index
Binary file not shown.
2 changes: 0 additions & 2 deletions files/context/embeddings/memory_metadata.jsonl

This file was deleted.

Binary file removed files/context/embeddings/message_faiss.index
Binary file not shown.
7 changes: 0 additions & 7 deletions files/context/embeddings/message_metadata.jsonl

This file was deleted.

8 changes: 0 additions & 8 deletions files/context/memories/adam_krakow.md

This file was deleted.

8 changes: 0 additions & 8 deletions files/context/memories/family_town.md

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

Loading

0 comments on commit 255689c

Please sign in to comment.