I’ve now had some projects in which one question seems to come up repeatedly, and that is, if UUID and GUID are the same. The issue has new relevance as in many systems based on microservice architectures, an UUID or GUID is used as global identifier of a data record, object instance, or similar entities. Let’s start with an UUID: it’s a unique identifier with 128 bit length (16 bytes). It is structured as defined
Full TextCategory: #CSHARP
Generate Machine-Readable Output from OpenAIs ChatGPT in .NET
OpenAI ChatGPT can be a customized API for your application by generating machine-readable output for your prompt. The model behind can be either the current GPT-4 model or a fine-tuned model with your own business data provided via an extended context or functions. This article shows you how to generate machine-readable JSON from OpenAI ChatGPT using OkGoDoIt OpenAI-API using C#/.NET. Generating machine-readable output can be a challenge as ChatGPTs prompt closure is non-deterministic. I write
Full TextAdding your own data as context to OpenAIs ChatGPT in .NET
My last post on OpenAI ChatGPT showed how to use ChatGPT in a .NET application using the Azure.AI.OpenAI library. This package went meanwhile to beta version 1.11.0-beta.1 and thus the usage of the ChatCompletionOptions has changed a little bit, you guess you will note it in your applications and tests. For todays example I use OkGoDoIt OpenAI-API library, as I want to show you how to connect to OpenAI without using Azure services and also
Full TextA .NET Perspective on OpenAIs ChatGPT
So, let’s get to OpenAI ChatGPT, as it resounds throughout the land, how big and good it is 😉 Also there might be some open-source LLMs with equal capabilities, let’s have a specific look at that LLM as it’s currently the most relevant for business applications. For .NET applications it’s relevant, that Microsoft offers OpenAI ChatGPT through its Azure subscription. Most companies will use the Azure API wrappers for OpenAI ChatGPT usage, simply because most
Full TextSnapshot Isolation in SQL Server
And now to something completely different: a database topic. I avoid posts about this as there’s enough material about .NET, EF, and databases in general available. However after a professional discussion about transactions and snapshot isolation in SQL server, I feel this topic might be interesting for some .NET developers. If you open a transaction and insert something in a table, or update this table, this table is locked. If you now select data from
Full TextUse HTTP/3 in your C#/.NET 7/8 application
Let’s talk about HTTP/3. It’s enabled by default in .NET 8 and supported in .NET 7 via the kestrel web server. HTTP/3 changes a lot of what you’ve known about web application protocols: it is secure by including TLS 1.3 in it’s stack and supports fast binary streaming by utilizing UDP as base protocol instead of TCP. You can understand it’s impact even better when you compare it to HTTP/1.1 and HTTP/2. HTTP/1.1 was a
Full TextEfficient representation of sparse matrices in .NET
Sparse matrices are required fore image processing and AI applications. You can use them to scale, rotate, or translate other matrices or even do a combination of all those operations. You can also precompute sparse matrices in order to pre-define fix operations and execute them very efficiently. Sparse matrices are matrices, which contain only a small number of allocated elements, while the majority of elements has the value zero. An easy example is the diagonal
Full TextEfficient Vector / Tensor Multiplication with AVX in C# / .NET
You might have seen that .NET 8 will offer AVX-512 (Advanced Vector Extensions) support for high-performance vector multiplication as they occur in image processing or AI applications. When are you are .NET guy, you might have asked yourself if it’s really worth using AVX features for vector multiplication in order to improve your application performance? In my blog I compared the use of an AVX-128 bit command from System.Runtime.Intrinsics with the manual implementation of an
Full Text.NET Data Exchange with Legacy Components using C++/CLI
In my projects I often see brown-field development environments, where the software under development consists of new components in a modern language as well as legacy components. The most often combination – in my experience – is C# on the top layer and C++/C on the bottom layer. Sometimes you will also find alas languages like Fortran or Cobol on the lowest layers, but those languages are a separate topic. So how can you interact
Full Text