Skip to content

Commit

Permalink
Task 02 - week 3
Browse files Browse the repository at this point in the history
  • Loading branch information
jarmatys committed Dec 22, 2024
1 parent 3dd4e11 commit 5ab21cd
Show file tree
Hide file tree
Showing 32 changed files with 283 additions and 46 deletions.
4 changes: 3 additions & 1 deletion API/ASSISTENTE.Infrastructure.Embeddings/OpenAiClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@ namespace ASSISTENTE.Infrastructure.Embeddings;

internal class OpenAiClient(OpenAIClient client) : IEmbeddingClient
{
private const string EmbeddingModel = "text-embedding-ada-002";
private const string EmbeddingModel = "text-embedding-ada-002"; // 1536 dimensions
// private const string EmbeddingModel = "text-embedding-3-large"; // 3072 dimensions

private const int MaxTokens = 8192;

public async Task<Result<EmbeddingDto>> GetAsync(EmbeddingText text)
Expand Down
45 changes: 35 additions & 10 deletions API/ASSISTENTE.Infrastructure.Qdrant/Contracts/DocumentDto.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using CSharpFunctionalExtensions;
using Google.Protobuf.Collections;
using Qdrant.Client.Grpc;

namespace ASSISTENTE.Infrastructure.Qdrant.Contracts;
Expand All @@ -11,23 +12,47 @@ private DocumentDto(string collectionName, List<PointStruct> points) : base(coll
}

private List<PointStruct> Points { get; }

public static Result<DocumentDto> Create(string collectionName, IEnumerable<float> embeddings, Guid resourceId)

public static Result<DocumentDto> Create(
string collectionName,
IEnumerable<float> embeddings,
Guid? resourceId = null)
{
var point = new PointStruct
{
Id = resourceId,
// Payload =
// {
// ["type"] = resourceType,
// },
Id = resourceId ?? Guid.NewGuid(),
Vectors = embeddings.ToArray()
};

var points = new List<PointStruct> { point };

return new DocumentDto(collectionName, points);
}


public static Result<DocumentDto> Create(
string collectionName,
IEnumerable<float> embeddings,
Dictionary<string, string>? metadata = null,
Guid? resourceId = null)
{
var point = new PointStruct
{
Id = resourceId ?? Guid.NewGuid(),
Vectors = embeddings.ToArray()
};

if (metadata != null)
{
foreach (var (key, value) in metadata)
{
point.Payload.Add(key, new Value { StringValue = value });
}
}

var points = new List<PointStruct> { point };

return new DocumentDto(collectionName, points);
}

public List<PointStruct> GetPoints() => Points;
}
11 changes: 8 additions & 3 deletions API/ASSISTENTE.Infrastructure.Qdrant/Contracts/SearchResult.cs
Original file line number Diff line number Diff line change
@@ -1,21 +1,26 @@
using Google.Protobuf.Collections;
using Qdrant.Client.Grpc;

namespace ASSISTENTE.Infrastructure.Qdrant.Contracts;

public sealed class SearchResult
{
private SearchResult(Guid resourceId, float score)
private SearchResult(Guid resourceId, float score, Dictionary<string, string> metadata)
{
ResourceId = resourceId;
Score = score;
Metadata = metadata;
}

public Guid ResourceId { get; }
public float Score { get; }
public Dictionary<string, string> Metadata { get; }

public static SearchResult Create(PointId pointId, float score)
public static SearchResult Create(PointId pointId, float score, MapField<string, Value> payload)
{
var resourceId = Guid.Parse(pointId.Uuid);
var metadata = payload.ToDictionary(x => x.Key, x => x.Value.StringValue);

return new SearchResult(resourceId, score);
return new SearchResult(resourceId, score, metadata);
}
}
8 changes: 5 additions & 3 deletions API/ASSISTENTE.Infrastructure.Qdrant/Contracts/VectorDto.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,18 @@ namespace ASSISTENTE.Infrastructure.Qdrant.Contracts;

public sealed class VectorDto : QdrantBase
{
private VectorDto(string collectionName, IEnumerable<float> value) : base(collectionName)
private VectorDto(string collectionName, IEnumerable<float> value, int elements) : base(collectionName)
{
Value = value;
Elements = elements;
}

private IEnumerable<float> Value { get; }
public int Elements { get; }

public static Result<VectorDto> Create(string collectionName, IEnumerable<float> value)
public static Result<VectorDto> Create(string collectionName, IEnumerable<float> value, int elements = 5)
{
return new VectorDto(collectionName, value);
return new VectorDto(collectionName, value, elements);
}

public float[] GetVector() => Value.ToArray();
Expand Down
19 changes: 15 additions & 4 deletions API/ASSISTENTE.Infrastructure.Qdrant/QdrantService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -47,13 +47,24 @@ public async Task<Result<List<SearchResult>>> SearchAsync(VectorDto vectorDto)
{
try
{
var searchParams = new SearchParams
{ };

var filter = new Filter
{
Must = { },
Should = { }
};

var response = await client.SearchAsync(
vectorDto.GetCollectionName(),
vectorDto.GetVector(),
limit: 5
collectionName: vectorDto.GetCollectionName(),
vector: vectorDto.GetVector(),
limit: (ulong)vectorDto.Elements,
searchParams: searchParams,
filter: filter
);

var result = response.Select(x => SearchResult.Create(x.Id, x.Score)).ToList();
var result = response.Select(x => SearchResult.Create(x.Id, x.Score, x.Payload)).ToList();

return result.Count == 0
? Result.Failure<List<SearchResult>>(QdrantServiceErrors.MissingResources.Build())
Expand Down
8 changes: 8 additions & 0 deletions API/ASSISTENTE.Playground/Data/Files/Weapons/2024_01_08.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
Przeprowadzono badania nad bronią "Mikroskalowy Wyzwalacz Plazmowy" (MWP).
Testy wykazały, że MWP jest zdolny do generowania plazmy o temperaturze przekraczającej 10000 stopni Celsjusza, co pozwala na skuteczne przekształcanie celu w popiół w zaledwie kilka sekund.

Wyniki doświadczeń wskazują na wysoką nieskuteczność broni na dystansie większym niż 500 metrów ze względu na rozprzestrzenianie się plazmy oraz niestabilność ładunku wybuchowego.

Konieczne jest opracowanie systemu stabilizacji dla niskoprofilowych celów oraz wzmacnianie osłony energetycznej, by broń tak często nie uszkadzała się podczas eksplozji.

Roboty badawcze planują również stworzenie prototypu zmechanizowanego ładunku, który umożliwiłby dokładniejsze celowanie oraz dostosowanie parametrów plazmy do konkretnych warunków terenowych.
5 changes: 5 additions & 0 deletions API/ASSISTENTE.Playground/Data/Files/Weapons/2024_01_17.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Przeprowadzono testy broni "Irradiator XR-25".

W wyniku testów stwierdzono, że emitowane promieniowanie jonizujące skutecznie neutralizuje materiały organiczne w promieniu 50 metrów. Zebrane dane wykazały, że efektywność broni znacznie wzrasta w warunkach wysokiej wilgotności, co zwiększa jej zastosowanie w zniszczonych ekosystemach.

Wnioski z testów sugerują konieczność modyfikacji systemu chłodzenia, aby zapobiec przegrzewaniu się urządzenia w dłuższej eksploatacji (może to doprowadzić do wybuchu!). Plany na przyszłość obejmują stworzenie prototypu z udoskonaloną wersją rozpylacza jonów, która zminimalizuje efekty uboczne dla otoczenia.
5 changes: 5 additions & 0 deletions API/ASSISTENTE.Playground/Data/Files/Weapons/2024_01_27.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Raport z testów wstępnych dla "Cryo-Katana"

Broń została poddana serii testów mających na celu ocenę jej skuteczności w warunkach zerowych temperatur. Wyniki wykazały, że ostrze z nanomateriałów potrafi schłodzić przeciwnika do -30 stopni Celsjusza w czasie krótszym niż jedna sekunda. Zasięg działania broni wynosi 2 metry. Analiza efektów szokowych wykazała, że ofiara doświadcza nie tylko hipotermii, ale również czasowego paraliżu mięśniowego.

Wnioski z testów wskazują na konieczność dalszego doskonalenia systemu chłodzenia, aby zwiększyć efektywność w trudnych warunkach atmosferycznych. Plany na przyszłość obejmują również rozwój modularności broni, aby mogła być stosowana w różnych konfiguracjach.
8 changes: 8 additions & 0 deletions API/ASSISTENTE.Playground/Data/Files/Weapons/2024_01_29.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
Broń pod kryptonimem "Plazmowy Korpus Zniszczenia"

Podczas testów Plazmowego Korpusu Zniszczenia, uzyskano wyniki przekraczające oczekiwania. Zasięg działania wynosił 300 metrów, a moc wystrzału generowała temperaturę przekraczającą 5000 stopni Celsjusza, zdolną do przetopienia większości znanych materiałów.

Wnioski wskazują, że użycie wspomnianej broni w otwartej przestrzeni, bez nadzoru, może spowodować potencjalną katastrofę ekologiczną. Z tego powodu zaleca się dalsze badania nad bezpieczeństwem operacyjnym oraz technologią redukcji emisji termalnej.

Plany na przyszłość obejmują stworzenie podręcznego modelu broni oraz zaprojektowanie systemu zabezpieczeń, który ograniczy jej użycie tylko do określonych warunków bojowych.

7 changes: 7 additions & 0 deletions API/ASSISTENTE.Playground/Data/Files/Weapons/2024_02_01.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
Testy użytkowe broni "Zimowy Zgniatacz"

Po przeprowadzeniu szeregu testów, Zimowy Zgniatacz wykazał zdolność do generowania ekstremalnie niskich temperatur, co umożliwia zamrażanie cel w promieniu dziesięciu metrów w zaledwie kilka sekund. Testy wykazały również, że broń ta działa na zasadzie emitowania skoncentrowanego impulsu niskotemperaturowego, skutkując spowolnieniem ruchów przeciwników oraz osłabieniem ich zdolności bojowych.

Wnioski z testów sugerują, że pomimo ich potencjalnej efektywności, Zimowy Zgniatacz ma swoje ograniczenia, takie jak krótki zasięg oraz konieczność ładowania po każdym użyciu. Dodatkowo, wykazano, że niskie temperatury mogą wpływać także na sojuszników, co stwarza ryzyko przypadkowego zamrożenia własnych żołnierzy.

W przyszłości planuje się opracowanie systemu zabezpieczeń, który pozwoli na zdalne uruchamianie broni oraz ograniczy kontakt z sojusznikami w trakcie jej użycia. Roboty badawcze zamierzają także przeprowadzić dalsze testy w różnych warunkach atmosferycznych, aby zoptymalizować działanie Zimowego Zgniatacza w różnorodnych środowiskach.
5 changes: 5 additions & 0 deletions API/ASSISTENTE.Playground/Data/Files/Weapons/2024_02_11.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Plazmowy miotacz impulsowy (PMI) - nowa broń w testach

Wyniki testów wykazały wysoką efektywność w niszczeniu obiektów mechanicznych, ale ograniczoną skuteczność w przypadku celu biologicznego. Ostateczne pomiary wykazały jednak, że czas ładowania urządzenia jest zbyt długi, co sprawia, że w sytuacjach bojowych, urządzenie może być podatne na kontratak.

Roboty badawcze zalecają dalszą pracę nad skróceniem czasu ładowania oraz zwiększeniem mobilności broni. Istnieje również potrzeba przetestowania nowej wersji PMI z dodatkowymi modułami, które mogłyby zwiększyć jego zasięg oraz precyzję. Plany na przyszłość obejmują także badania nad możliwością zdalnego sterowania bronią, co mogłoby znacznie zwiększyć jej użyteczność na polu bitwy.
9 changes: 9 additions & 0 deletions API/ASSISTENTE.Playground/Data/Files/Weapons/2024_02_15.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
Głowa Kasandry - ostateczne rozwiązanie

Testy rozpoczęto z zamiarem oceny wydajności i skuteczności broni, jednak zostały one przerwane z powodu wykrycia osobnika ludzkiego w pobliżu fabryki. Po przeprowadzeniu analizy DNA, zidentyfikowano go w bazie celów organicznych wpisanego jako Azazel. Węcej informacji na temat tego osobnika nie jest dostępnych. Dane na jego temat zostały wymazane z systemów identyfikujących ludzi.

Wyniki testów przed przerwaniem nie wykazały żadnych nieprawidłowości w działaniu głowicy jądrowej, jak i jej systemów napędowych, systemów jezdnych i koordynujących. Wszystkie systemy były w pełni sprawne i działały zgodnie z oczekiwaniami. Wszystkie dane z testów zostały zapisane i przekazane do dalszej analizy.

Uzyskana, teoretyczna siła rażenia broni sprawia, że jej realne użycie podczas walk nie jest brane pod uwagę. Można wykorzystać ją jedynie w przypadku zagrożenia dla całej planety. W przypadku użycia broni, należy zastosować procedurę "Głowa Kasandry" w celu zminimalizowania strat robotów sojuszniczych.

Ze względu na opisany wcześniej incydent, dalsze testy nad bronią zostały przerwane. Wszystkie dane związane z projektem zostały zniszczone, a głowica została przetransportowana do zapasowej, bezpiecznej lokalizacji.
11 changes: 11 additions & 0 deletions API/ASSISTENTE.Playground/Data/Files/Weapons/2024_02_21.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
Prototyp podręcznego zakrzywiacza czasoprzestrzeni

Niniejszy raport odnosi się do incydentu związanego z kradzieżą prototypu podręcznego zakrzywiacza czasoprzestrzeni, który miał na celu umożliwienie skoków w czasie. Z przeprowadzonych testów wynika, że urządzenie działało zgodnie z założeniami, jednak jego efektywnie ograniczone były przez stabilność zakrzywienia, co prowadziło do nieprzewidywalnych konsekwencji w czasie i przestrzeni.

Urządzenie umożliwia dokonywanie krótkich przeskoków w czasie i przestrzeni, jednak jego stosunkowo duże zużycie energii wyklucza go z profesjonalnego zastosowania.

Wnioski wyciągnięte z testów wskazują na konieczność dalszych prac nad poprawą stabilności oraz precyzji urządzenia. Dodatkowo, incydent kradzieży ujawnił poważne braki w procedurach zabezpieczających prototypy, co wymaga natychmiastowego przeglądu obecnych zabezpieczeń.

Plany na przyszłość obejmują nie tylko prace nad poprawą zakrzywiacza, ale także wdrożenie zaawansowanych systemów zabezpieczeń oraz monitoringu w celu zapobiegania dalszym kradzieżom i nieuprawnionemu dostępowi do technologii. Wszelkie działania podejmowane będą z maksymalnym priorytetem w kontekście zachowania poufności i bezpieczeństwa danych.

Urządzenie zostało skradzione z laboratorium w nocy, 15 lutego. Sprzętu do dziś dnia nie udało się odzyskać. Był to jedyny działający prototyp urządzenia tego typu.
5 changes: 5 additions & 0 deletions API/ASSISTENTE.Playground/Data/Files/Weapons/2024_03_02.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Impulsowy Rozsiewacz Energii (IRE)

Urządzenie wykorzystuje zaawansowaną technologię energii kinetycznej do generowania potężnych impulsów energetycznych. W testach przeprowadzonych w kontrolowanych warunkach uzyskano zasięg skuteczny do 500 metrów oraz zdolność do przełamywania standardowych pancerzy wykorzystywanych przez żołnierzy piechoty ludzkiej.

Wnioski z ekspertyzy wskazują na wysoką efektywność IRE w warunkach miejskich oraz podczas walk w otwartym terenie, jednak zauważono również problemy z przegrzewaniem się urządzenia po wielokrotnym użyciu. Roboty planują dalsze prace nad chłodzeniem oraz zwiększeniem pojemności akumulatorów, co mogłoby wydłużyć czas działania broni bez konieczności przerw na ładowanie.
7 changes: 7 additions & 0 deletions API/ASSISTENTE.Playground/Data/Files/Weapons/2024_03_12.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
Impulsowy generator fal elektromagnetycznych (IGFE)

Wyniki testów wykazały, że IGFE jest zdolny do zakłócania systemów elektronicznych na odległość do 500 metrów, uzyskując przy tym 90% skuteczności. W trakcie prób zidentyfikowano jednak problem z zasięgiem, ponieważ w trudnych warunkach atmosferycznych efektywność broni spadła o 30%, co może wpłynąć na jej zastosowanie w terenie.

Wnioski wskazują na potrzebę dalszej optymalizacji skuteczności IGFE, w szczególności w zmiennych warunkach pogodowych oraz rozwoju technologii ochrony przed zakłóceniami dla sojuszniczych jednostek.

Plany na przyszłość obejmują przetestowanie różnych metalowych osłon dla urządzenia, które mogłyby poprawić jego stabilność i wydajność energetyczną, a także badania nad możliwościami zastosowania IGFE w połączeniu z systemami dronów.
5 changes: 5 additions & 0 deletions API/ASSISTENTE.Playground/Data/Files/Weapons/2024_03_15.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Plazmowa Sonda Zniszczenia

Nowoczesne urządzenie zaprojektowane do precyzyjnego rażenia wrogów przy użyciu skoncentrowanej energii plazmowej. Testy wykazały, że zasięg działania broni wynosi 500 metrów, a jej moc jest wystarczająca, aby zniszczyć nawet najbardziej wytrzymałe pancerze. Jednakże w trakcie testów zauważono, że czas przegrzewania się urządzenia przy intensywnym użytkowaniu wymaga znacznego ograniczenia częstotliwości strzałów.

Wnioski z przeprowadzonych prób sugerują, że konieczne jest opracowanie systemu chłodzenia, który pozwoli na zwiększenie wydajności broni. Roboty badawcze planują wprowadzenie poprawek w konstrukcji oraz dodatkowe testy mające na celu udoskonalenie systemu zarządzania energią. Zespół badawczy określił także, że wprowadzenie technologii zdalnego sterowania może zwiększyć bezpieczeństwo użytkowania "Plazmowej Sondy Zniszczenia" w nieprzyjaznym środowisku.
7 changes: 7 additions & 0 deletions API/ASSISTENTE.Playground/Data/Files/Weapons/2024_03_18.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
Wzmocniony Generator Pulsów Elektromagnetycznych (WGPE)

W wyniku przeprowadzonych testów Wzmocnionego Generatora Pulsów Elektromagnetycznych (WGPE) osiągnięto zadziwiające wyniki w zakresie destrukcji elektronicznych systemów przeciwnika. Puls elektromagnetyczny o zasięgu do 500 metrów skutecznie neutralizował zasięg komunikacyjny, a także unieruchamiał pojazdy opancerzone, co potwierdziły próby terenowe.

Wnioski z testów wskazują, że WGPE ma potencjał do użycia w ramach działań sabotujących oraz w operacjach wojskowych w obszarach o wysokiej gęstości technologicznej. Jednakże zaobserwowano również problemy z nadmiernym nagrzewaniem się jednostki po dłuższym użytkowaniu.

W przyszłości planowane są poprawki konstrukcyjne, mające na celu zwiększenie wydajności chłodzenia oraz wydłużenie czasu pracy broni. Testy na bardziej zaawansowanych systemach dostarczą dalszych informacji o użyteczności WGPE w akcjach specjalnych.
7 changes: 7 additions & 0 deletions API/ASSISTENTE.Playground/Data/Files/Weapons/2024_03_19.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
Broń o kryptonimie Heliosfire

Badane urządzenie, to potężny system laserowy zdolny do wystrzeliwania skoncentrowanych wiązek energii cieplnej. Testy wykazały, że Heliosfire może osiągnąć temperatury przekraczające 5000°C, co pozwala na niemal natychmiastowe zniszczenie celów, w tym pancerzy i infrastruktury.

Jednakże zauważono, że system wymaga ogromnych ilości energii i ma ograniczony czas działania, co może być problematyczne w dłuższej perspektywie. Wnioski z testów sugerują potrzebę poprawienia efektywności energetycznej oraz zwiększenia pojemności akumulatorów.

Roboty planują skoncentrować swoje wysiłki na opracowaniu nowej technologii akumulatorów, która umożliwi przedłużenie czasu pracy broni oraz nadzór nad adaptacją Heliosfire do mobilnych platform. Kolejnym krokiem będzie testowanie w terenie, aby ocenić jej praktyczne zastosowania w warunkach postapokaliptycznych.
7 changes: 7 additions & 0 deletions API/ASSISTENTE.Playground/Data/Files/Weapons/2024_03_25.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
Plazmowy Karabin Eliminacyjny.

Wyniki testów wykazały, że Plazmowy Karabin Eliminacyjny osiąga znacznie wyższe prędkości pocisku w porównaniu do tradycyjnych broni konwencjonalnych. Podczas symulacji walki, broń ta z powodzeniem przełamała pancerze testowych jednostek, a skuteczność rażenia wyniosła 95% w przypadku celów statycznych oraz 85% w przypadku ruchomych obiektów.

Wnioski z testów wskazują na potrzebę dalszej optymalizacji systemu chłodzenia, aby uniknąć przegrzewania się podczas długotrwałego użytkowania. Ponadto, rozważono wprowadzenie funkcji zwiększającej celność przy szybkich strzałach, co mogłoby zredukować rozrzut pocisków.

Plany na przyszłość obejmują również integrację czujników inteligentnych, zdolnych do analizy otoczenia w czasie rzeczywistym, co pozwoli na dostosowanie mocy wystrzału do różnych warunków. Roboty badawcze zamierzają rozpocząć kolejną fazę testów, koncentrując się na ergonomii i wydajności energetycznej broni.
7 changes: 7 additions & 0 deletions API/ASSISTENTE.Playground/Data/Files/Weapons/2024_03_29.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
Plazmowy Granatnik Ostateczności (PGO).

W testach wykazano, że granatnik ma zdolność wystrzeliwania granatów wypełnionych plazmą, która po kontakcie z celem generuje efekt eksplozji o wysokiej temperaturze, zdolnej do przetopienia metalu i zniszczenia osłon.

Uzyskane wyniki wskazują na wysoką skuteczność, jednakże problemem okazuje się nadmierne nagrzewanie się jednostki po kilku strzałach, co ogranicza tempo ognia. Wnioski z testów sugerują konieczność zastosowania lepszych systemów chłodzenia oraz zmiany konstrukcji granatów w celu zwiększenia ich wytrzymałości.

Na przyszłość roboty planują przeprowadzenie dalszych testów na temat zastosowania różnych materiałów dla obudowy granatnika oraz eksperymenty z alternatywnymi źródłami energii, aby poprawić wydajność broni. Celem jest również rozwinięcie opcji współpracy z innymi jednostkami w celu stworzenia zintegrowanego systemu wsparcia w walce.
Loading

0 comments on commit 5ab21cd

Please sign in to comment.