Skip to content

Commit e759a71

Browse files
Merge branch 'microsoft:main' into main
2 parents 96c1456 + 1874eeb commit e759a71

File tree

481 files changed

+18849
-4059
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

481 files changed

+18849
-4059
lines changed

.github/_typos.toml

+1
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ prompty = "prompty" # prompty is a format name.
4242
ist = "ist" # German language
4343
dall = "dall" # OpenAI model name
4444
pn = "pn" # Kiota parameter
45+
nin = "nin" # MongoDB "not in" operator
4546

4647
[default.extend-identifiers]
4748
ags = "ags" # Azure Graph Service

.github/workflows/codeql-analysis.yml

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ name: "CodeQL"
66

77
on:
88
push:
9-
branches: ["main", "experimental*", "feature*", "*-development"]
9+
# TODO: Add "feature*" back in again, once we determine the cause of the ongoing CodeQL failures.
10+
branches: ["main", "experimental*", "*-development"]
1011
schedule:
1112
- cron: "17 11 * * 2"
1213

.github/workflows/dotnet-build-and-test.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -104,9 +104,9 @@ jobs:
104104
shell: bash
105105
if: github.event_name != 'pull_request' && matrix.integration-tests
106106
run: |
107-
export INTEGRATION_TEST_PROJECTS=$(find ./dotnet -type f -name "*IntegrationTests.csproj" | grep -v "Experimental.Orchestration.Flow.IntegrationTests.csproj" | tr '\n' ' ')
107+
export INTEGRATION_TEST_PROJECTS=$(find ./dotnet -type f -name "*IntegrationTests.csproj" | grep -v "Experimental.Orchestration.Flow.IntegrationTests.csproj" | grep -v "VectorDataIntegrationTests.csproj" | tr '\n' ' ')
108108
for project in $INTEGRATION_TEST_PROJECTS; do
109-
dotnet test -c ${{ matrix.configuration }} $project --no-build -v Normal --logger trx
109+
dotnet test -f net8.0 -c ${{ matrix.configuration }} $project --no-build -v Normal --logger trx
110110
done
111111
env:
112112
# Azure OpenAI Deployments

docs/decisions/0032-agents.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -376,7 +376,7 @@ await WriteMessagesAsync(chat.InvokeAsync(agent1));
376376
await WriteMessagesAsync(chat.InvokeAsync(agent2));
377377

378378
// The entire history may be accessed.
379-
// Agent specific history is an adapataton of the primary history.
379+
// Agent specific history is an adaptaton of the primary history.
380380
await WriteMessagesAsync(chat.GetHistoryAsync());
381381
await WriteMessagesAsync(chat.GetHistoryAsync(agent1));
382382
await WriteMessagesAsync(chat.GetHistoryAsync(agent2));
@@ -401,7 +401,7 @@ await write_message(chat.invoke(agent1))
401401
await write_message(chat.invoke(agent2))
402402

403403
# The entire history may be accessed.
404-
# Agent specific history is an adapataton of the primary history.
404+
# Agent specific history is an adaptaton of the primary history.
405405
await write_message(chat.get_history())
406406
await write_message(chat.get_history(agent1))
407407
await write_message(chat.get_history(agent2))
@@ -470,4 +470,4 @@ chat.add_agent(agent3)
470470

471471
# Execute the chat until termination
472472
await write_message(chat.invoke())
473-
```
473+
```

docs/decisions/0042-samples-restructure.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ samples/
7070
Pros:
7171

7272
- Simpler and Less verbose structure (Worse is Better: Less is more approach)
73-
- Beginers will be presented (sibling folders) to other tutorials that may fit better on their need and use case.
73+
- Beginners will be presented (sibling folders) to other tutorials that may fit better on their need and use case.
7474
- Getting started will not be imposed.
7575

7676
Cons:
@@ -101,7 +101,7 @@ Pros:
101101

102102
Cons:
103103

104-
- If the Getting starded example does not have a valid example for the customer it has go back on other folders for more content.
104+
- If the Getting started example does not have a valid example for the customer it has go back on other folders for more content.
105105

106106
### Option 3 - Conservative + Use Cases Based Root Categorization
107107

@@ -130,7 +130,7 @@ Cons:
130130
- More verbose structure adds extra friction to find the samples.
131131
- `KernelContent` or `Modalities` is a internal term that may not be clear for the customer
132132
- `Documentation` may be confused a documents only folder, which actually contains code samples used in documentation. (not clear message)
133-
- `Use Cases` may suggest an idea of real world use cases implemented, where in reality those are simple demostrations of a SK feature.
133+
- `Use Cases` may suggest an idea of real world use cases implemented, where in reality those are simple demonstrations of a SK feature.
134134

135135
## KernelSyntaxExamples Decomposition Options
136136

@@ -449,7 +449,7 @@ Cons:
449449

450450
### KernelSyntaxExamples Decomposition Option 2 - Concept by Components Flattened Version
451451

452-
Similar approach to Option 1, but with a flattened structure using a single level of folders to avoid deep nesting and complexity authough keeping easy to navigate around the componentized concepts.
452+
Similar approach to Option 1, but with a flattened structure using a single level of folders to avoid deep nesting and complexity although keeping easy to navigate around the componentized concepts.
453453

454454
Large (Less files per folder):
455455

docs/decisions/0046-java-repository-separation.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ Also managing repository policies that are preferred by all languages is a chall
2727
complex build process to account for building multiple languages. If a user makes accidental changes to the repository outside their own language,
2828
or make changes to the common files, require sign off from other languages, leading to delays as we
2929
require review from users in other languages. Similarly common files such as GitHub Actions workflows, `.gitignore`, VS Code settings, `README.md`, `.editorconfig` etc, become
30-
more complex as they have to simutaniously support multiple languages.
30+
more complex as they have to simultaneously support multiple languages.
3131

3232
In a community point of view, having a separate repo will foster community engagement, allowing developers to contribute, share ideas, and collaborate on the Java projects only.
3333
Additionally, it enables transparent tracking of contributions, making it easy to identify top contributors and acknowledge their efforts.

docs/decisions/0047-azure-open-ai-connectors.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ A documentation guidance and samples/examples will be created to guide on how to
3737

3838
## OpenAI SDK limitations
3939

40-
The new OpenAI SDK introduce some limitations that need to be considered and pontentially can introduce breaking changes if not remediated by our internal implementation.
40+
The new OpenAI SDK introduce some limitations that need to be considered and potentially can introduce breaking changes if not remediated by our internal implementation.
4141

4242
- #### ⚠️ No support for multiple results (Choices) per request.
4343

docs/decisions/0049-agents-assistantsV2.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -154,9 +154,9 @@ A pending change has been authored that introduces `FunctionChoiceBehavior` as a
154154

155155
#### Assistant Invocation Options
156156

157-
When invoking an `OpenAIAssistantAgent` directly (no-chat), definition that only apply to a discrete run may be specified. These definition are defined as `OpenAIAssistantInvocationOptions` and ovetake precedence over any corresponding assistant or thread definition.
157+
When invoking an `OpenAIAssistantAgent` directly (no-chat), definition that only apply to a discrete run may be specified. These definition are defined as `OpenAIAssistantInvocationOptions` and overtake precedence over any corresponding assistant or thread definition.
158158

159-
> Note: These definition are also impacted by the `ToolCallBehavior` / `FunctionChoiceBehavior` quadary.
159+
> Note: These definition are also impacted by the `ToolCallBehavior` / `FunctionChoiceBehavior` quandary.
160160
161161
<p align="center">
162162
<kbd><img src="diagrams/assistant-invocationsettings.png" style="width: 370pt;"></kbd>

docs/decisions/0050-updated-vector-store-design.md

+5-5
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ classDiagram
113113
class IVectorRecordStore~TModel~{
114114
<<interface>>
115115
+Upsert(TModel record) string
116-
+UpserBatch(TModel record) string
116+
+UpsertBatch(TModel record) string
117117
+Get(string key) TModel
118118
+GetBatch(string[] keys) TModel[]
119119
+Delete(string key)
@@ -619,7 +619,7 @@ Option 1 is problematic on its own, since we have to allow consumers to create c
619619
a single interface like this, it will require them to implement many methods that they do not want to change. Options 4 & 5, gives us more flexibility while
620620
still preserving the ease of use of an aggregated interface as described in Option 1.
621621

622-
Option 2 doesn't give us the flexbility we need for break glass scenarios, since it only allows certain types of collections to be created. It also means
622+
Option 2 doesn't give us the flexibility we need for break glass scenarios, since it only allows certain types of collections to be created. It also means
623623
that each time a new collection type is required it introduces a breaking change, so it is not a viable option.
624624

625625
Since collection create and configuration and the possible options vary considerable across different database types, we will need to support an easy
@@ -964,14 +964,14 @@ builder.Services.AddTransient<IFunctionInvocationFilter, CacheSetFunctionFilter>
964964
### Collection Creation
965965

966966
7. Release Collection Creation public interface.
967-
8. Create cross db collection creation config that supports common functionality, and per daatabase implementation that supports this configuration.
967+
8. Create cross db collection creation config that supports common functionality, and per database implementation that supports this configuration.
968968
9. Add support for registering collection creation with SK container to allow automatic dependency injection.
969969

970970
### First Party Memory Features and well known model support
971971

972972
10. Add model and mappers for legacy SK MemoryStore interface, so that consumers using this has an upgrade path to the new memory storage stack.
973973
11. Add model and mappers for popular loader systems, like Kernel Memory or LlamaIndex.
974-
11. Explore adding first party implementations for common scenarios, e.g. semantic caching. Specfics TBD.
974+
11. Explore adding first party implementations for common scenarios, e.g. semantic caching. Specifics TBD.
975975

976976
### Cross Cutting Requirements
977977

@@ -983,7 +983,7 @@ Need the following for all features:
983983
- Common Exception Handling
984984
- Samples, including:
985985
- Usage scenario for collection and record management using custom model and configured collection creation.
986-
- A simple consumption example like semantic caching, specfics TBD.
986+
- A simple consumption example like semantic caching, specifics TBD.
987987
- Adding your own collection creation implementation.
988988
- Adding your own custom model mapper.
989989
- Documentation, including:

docs/decisions/0058-vector-search-design.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ class AzureAISearchVectorStoreRecordCollection<TRecord> : IVectorSearch<TRecord>
247247
One of the main requirements is to allow future extensibility with additional query types.
248248
One way to achieve this is to use an abstract base class that can auto implement new methods
249249
that throw with NotSupported unless overridden by each implementation. This behavior would
250-
be similar to Option 1. With Option 1 though, the same bahvior is achieved via extension methods.
250+
be similar to Option 1. With Option 1 though, the same behavior is achieved via extension methods.
251251
The set of methods end up being the same with Option 1 and Option 3, except that Option 1 also has
252252
a Search method that takes `VectorSearchQuery` as input.
253253

docs/decisions/0061-function-call-behavior.md

+2-3
Original file line numberDiff line numberDiff line change
@@ -242,8 +242,7 @@ More details can be found here: [Serialize polymorphic types](https://learn.micr
242242
To support custom function choice behaviors, the custom types should be registered for polymorphic deserialization.
243243
Clearly, the approach using the JsonDerivedType attribute is not viable, as users cannot annotate `FunctionChoiceBehavior` SK class.
244244
However, they could register their custom type resolver that would register their custom type(s) if they had access to JsonSerializerOptions used by JsonSerializer during deserialization.
245-
Unfortunately, SK does not expose those options publicly today. Even if it had, there are YAML prompts that are deserialized by the YamlDotNet library that would require same custom types s
246-
upplied via YAML specific deserializer extensibility mechanisms - YamlTypeConverter.
245+
Unfortunately, SK does not expose those options publicly today. Even if it had, there are YAML prompts that are deserialized by the YamlDotNet library that would require same custom types supplied via YAML specific deserializer extensibility mechanisms - YamlTypeConverter.
247246
This would mean that if a user wants the same custom function calling choice to be used in both YAML and JSON prompts, they would have to register the same custom type twice - for JSON
248247
via a custom type resolver and for YAML via a custom YamlTypeConverter. That would also require a mechanism of supplying custom resolvers/converters to all SK `CreateFunctionFrom*Prompt` extension methods.
249248

@@ -378,4 +377,4 @@ There were a few decisions taken during the ADR review:
378377
- Option 1.1 was chosen as the preferred option for the new function call behavior model.
379378
- It was decided to postpone the implementation of the inheritance mechanism that allows a service to inherit the parent function choice behavior configuration.
380379
- It was decided that the Breaking Glass support is out of scope for now, but it may be included later if necessary.
381-
- Option 2.5, which presumes supplying function call choices and function invocation configurations via prompt execution settings, was preferred over the other options due to its simplicity, absence of breaking changes, and familiar developer experience.
380+
- Option 2.5, which presumes supplying function call choices and function invocation configurations via prompt execution settings, was preferred over the other options due to its simplicity, absence of breaking changes, and familiar developer experience.

0 commit comments

Comments
 (0)