Skip to content

Commit 701f58c

Browse files
committed
Update
1 parent 128dc09 commit 701f58c

12 files changed

Lines changed: 85 additions & 70 deletions

File tree

‎csharp/BasicChat.cs‎

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,16 @@ public static async Task RunAsync()
1616

1717
// Step 1: Start the Foundry Local service
1818
Console.WriteLine("Starting Foundry Local service...");
19-
var manager = await FoundryLocalManager.StartServiceAsync();
19+
await FoundryLocalManager.CreateAsync(new Configuration { AppName = "FoundryLocalSamples" }, null, default);
20+
var manager = FoundryLocalManager.Instance;
21+
await manager.StartWebServiceAsync(default);
2022

21-
// Step 2: Check if the model is already downloaded
22-
var cachedModels = await manager.ListCachedModelsAsync();
23-
var catalogInfo = await manager.GetModelInfoAsync(aliasOrModelId: alias);
24-
var isCached = cachedModels.Any(m => m.ModelId == catalogInfo?.ModelId);
23+
// Step 2: Get the model from the catalog
24+
var catalog = await manager.GetCatalogAsync(default);
25+
var model = await catalog.GetModelAsync(alias, default);
26+
27+
// Step 3: Check if the model is already downloaded
28+
var isCached = await model.IsCachedAsync(default);
2529

2630
if (isCached)
2731
{
@@ -30,24 +34,24 @@ public static async Task RunAsync()
3034
else
3135
{
3236
Console.WriteLine($"Downloading model: {alias} (this may take several minutes)...");
33-
await manager.DownloadModelAsync(aliasOrModelId: alias);
37+
await model.DownloadAsync(null, default);
3438
Console.WriteLine($"Download complete: {alias}");
3539
}
3640

37-
// Step 3: Load the model into memory
41+
// Step 4: Load the model into memory
3842
Console.WriteLine($"Loading model: {alias}...");
39-
var model = await manager.LoadModelAsync(aliasOrModelId: alias);
40-
Console.WriteLine($"Loaded model: {model?.ModelId}");
41-
Console.WriteLine($"Endpoint: {manager.Endpoint}\n");
43+
await model.LoadAsync(default);
44+
Console.WriteLine($"Loaded model: {model.Id}");
45+
Console.WriteLine($"Endpoint: {manager.Urls[0]}\n");
4246

4347
// Create an OpenAI client pointing to the local service
44-
var key = new ApiKeyCredential(manager.ApiKey);
48+
var key = new ApiKeyCredential("foundry-local");
4549
var client = new OpenAIClient(key, new OpenAIClientOptions
4650
{
47-
Endpoint = manager.Endpoint
51+
Endpoint = new Uri(manager.Urls[0])
4852
});
4953

50-
var chatClient = client.GetChatClient(model?.ModelId);
54+
var chatClient = client.GetChatClient(model.Id);
5155

5256
// Stream a response
5357
var completionUpdates = chatClient.CompleteChatStreaming("What is the golden ratio?");

‎csharp/MultiAgent.cs‎

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,16 @@ public static async Task RunAsync()
1919

2020
// Step 1: Start the Foundry Local service
2121
Console.WriteLine("Starting Foundry Local service...");
22-
var manager = await FoundryLocalManager.StartServiceAsync();
22+
await FoundryLocalManager.CreateAsync(new Configuration { AppName = "FoundryLocalSamples" }, null, default);
23+
var manager = FoundryLocalManager.Instance;
24+
await manager.StartWebServiceAsync(default);
2325

24-
// Step 2: Check if the model is already downloaded
25-
var cachedModels = await manager.ListCachedModelsAsync();
26-
var catalogInfo = await manager.GetModelInfoAsync(aliasOrModelId: alias);
27-
var isCached = cachedModels.Any(m => m.ModelId == catalogInfo?.ModelId);
26+
// Step 2: Get the model from the catalog
27+
var catalog = await manager.GetCatalogAsync(default);
28+
var model = await catalog.GetModelAsync(alias, default);
29+
30+
// Step 3: Check if the model is already downloaded
31+
var isCached = await model.IsCachedAsync(default);
2832

2933
if (isCached)
3034
{
@@ -33,22 +37,22 @@ public static async Task RunAsync()
3337
else
3438
{
3539
Console.WriteLine($"Downloading model: {alias} (this may take several minutes)...");
36-
await manager.DownloadModelAsync(aliasOrModelId: alias);
40+
await model.DownloadAsync(null, default);
3741
Console.WriteLine($"Download complete: {alias}");
3842
}
3943

40-
// Step 3: Load the model into memory
44+
// Step 4: Load the model into memory
4145
Console.WriteLine($"Loading model: {alias}...");
42-
var model = await manager.LoadModelAsync(aliasOrModelId: alias);
43-
Console.WriteLine($"Model: {model?.ModelId}");
44-
Console.WriteLine($"Endpoint: {manager.Endpoint}\n");
46+
await model.LoadAsync(default);
47+
Console.WriteLine($"Model: {model.Id}");
48+
Console.WriteLine($"Endpoint: {manager.Urls[0]}\n");
4549

46-
var key = new ApiKeyCredential(manager.ApiKey);
50+
var key = new ApiKeyCredential("foundry-local");
4751
var openAiClient = new OpenAIClient(key, new OpenAIClientOptions
4852
{
49-
Endpoint = manager.Endpoint
53+
Endpoint = new Uri(manager.Urls[0])
5054
});
51-
var chatClient = openAiClient.GetChatClient(model?.ModelId);
55+
var chatClient = openAiClient.GetChatClient(model.Id);
5256

5357
// ── Define agents using AsAIAgent() ─────────────────────────────
5458
AIAgent researcher = chatClient.AsAIAgent(

‎csharp/RagPipeline.cs‎

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -78,12 +78,16 @@ public static async Task RunAsync()
7878

7979
// Step 1: Start the Foundry Local service
8080
Console.WriteLine("Starting Foundry Local service...");
81-
var manager = await FoundryLocalManager.StartServiceAsync();
81+
await FoundryLocalManager.CreateAsync(new Configuration { AppName = "FoundryLocalSamples" }, null, default);
82+
var manager = FoundryLocalManager.Instance;
83+
await manager.StartWebServiceAsync(default);
8284

83-
// Step 2: Check if the model is already downloaded
84-
var cachedModels = await manager.ListCachedModelsAsync();
85-
var catalogInfo = await manager.GetModelInfoAsync(aliasOrModelId: alias);
86-
var isCached = cachedModels.Any(m => m.ModelId == catalogInfo?.ModelId);
85+
// Step 2: Get the model from the catalog
86+
var catalog = await manager.GetCatalogAsync(default);
87+
var model = await catalog.GetModelAsync(alias, default);
88+
89+
// Step 3: Check if the model is already downloaded
90+
var isCached = await model.IsCachedAsync(default);
8791

8892
if (isCached)
8993
{
@@ -92,21 +96,21 @@ public static async Task RunAsync()
9296
else
9397
{
9498
Console.WriteLine($"Downloading model: {alias} (this may take several minutes)...");
95-
await manager.DownloadModelAsync(aliasOrModelId: alias);
99+
await model.DownloadAsync(null, default);
96100
Console.WriteLine($"Download complete: {alias}");
97101
}
98102

99-
// Step 3: Load the model into memory
103+
// Step 4: Load the model into memory
100104
Console.WriteLine($"Loading model: {alias}...");
101-
var model = await manager.LoadModelAsync(aliasOrModelId: alias);
102-
Console.WriteLine($"Loaded model: {model?.ModelId}");
105+
await model.LoadAsync(default);
106+
Console.WriteLine($"Loaded model: {model.Id}");
103107

104-
var key = new ApiKeyCredential(manager.ApiKey);
108+
var key = new ApiKeyCredential("foundry-local");
105109
var client = new OpenAIClient(key, new OpenAIClientOptions
106110
{
107-
Endpoint = manager.Endpoint
111+
Endpoint = new Uri(manager.Urls[0])
108112
});
109-
var chatClient = client.GetChatClient(model?.ModelId);
113+
var chatClient = client.GetChatClient(model.Id);
110114

111115
// User question
112116
var question = "How do I install Foundry Local and what hardware does it support?";

‎csharp/SingleAgent.cs‎

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,16 @@ public static async Task RunAsync()
1919

2020
// Step 1: Start the Foundry Local service
2121
Console.WriteLine("Starting Foundry Local service...");
22-
var manager = await FoundryLocalManager.StartServiceAsync();
22+
await FoundryLocalManager.CreateAsync(new Configuration { AppName = "FoundryLocalSamples" }, null, default);
23+
var manager = FoundryLocalManager.Instance;
24+
await manager.StartWebServiceAsync(default);
2325

24-
// Step 2: Check if the model is already downloaded
25-
var cachedModels = await manager.ListCachedModelsAsync();
26-
var catalogInfo = await manager.GetModelInfoAsync(aliasOrModelId: alias);
27-
var isCached = cachedModels.Any(m => m.ModelId == catalogInfo?.ModelId);
26+
// Step 2: Get the model from the catalog
27+
var catalog = await manager.GetCatalogAsync(default);
28+
var model = await catalog.GetModelAsync(alias, default);
29+
30+
// Step 3: Check if the model is already downloaded
31+
var isCached = await model.IsCachedAsync(default);
2832

2933
if (isCached)
3034
{
@@ -33,25 +37,25 @@ public static async Task RunAsync()
3337
else
3438
{
3539
Console.WriteLine($"Downloading model: {alias} (this may take several minutes)...");
36-
await manager.DownloadModelAsync(aliasOrModelId: alias);
40+
await model.DownloadAsync(null, default);
3741
Console.WriteLine($"Download complete: {alias}");
3842
}
3943

40-
// Step 3: Load the model into memory
44+
// Step 4: Load the model into memory
4145
Console.WriteLine($"Loading model: {alias}...");
42-
var model = await manager.LoadModelAsync(aliasOrModelId: alias);
43-
Console.WriteLine($"Loaded model: {model?.ModelId}");
44-
Console.WriteLine($"Endpoint: {manager.Endpoint}\n");
46+
await model.LoadAsync(default);
47+
Console.WriteLine($"Loaded model: {model.Id}");
48+
Console.WriteLine($"Endpoint: {manager.Urls[0]}\n");
4549

46-
var key = new ApiKeyCredential(manager.ApiKey);
50+
var key = new ApiKeyCredential("foundry-local");
4751
var client = new OpenAIClient(key, new OpenAIClientOptions
4852
{
49-
Endpoint = manager.Endpoint
53+
Endpoint = new Uri(manager.Urls[0])
5054
});
5155

5256
// Create an AIAgent using the Agent Framework extension method
5357
AIAgent joker = client
54-
.GetChatClient(model?.ModelId)
58+
.GetChatClient(model.Id)
5559
.AsAIAgent(
5660
instructions: "You are good at telling jokes. Keep your jokes short and family-friendly.",
5761
name: "Joker"

‎csharp/csharp.csproj‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22

33
<PropertyGroup>
44
<OutputType>Exe</OutputType>
5-
<TargetFramework>net9.0</TargetFramework>
5+
<TargetFramework>net8.0</TargetFramework>
66
<ImplicitUsings>enable</ImplicitUsings>
77
<Nullable>enable</Nullable>
88
</PropertyGroup>
99

1010
<ItemGroup>
1111
<PackageReference Include="Microsoft.AI.Foundry.Local" Version="[0.8.0, 1.0.0)" />
1212
<PackageReference Include="Microsoft.Agents.AI.OpenAI" Version="1.0.0-rc3" />
13-
<PackageReference Include="OpenAI" Version="[2.0.0, 3.0.0)" />
13+
<PackageReference Include="OpenAI" Version="[2.8.0, 3.0.0)" />
1414
</ItemGroup>
1515

1616
</Project>

‎javascript/package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
"multi-agent": "node foundry-local-multi-agent.mjs"
1111
},
1212
"dependencies": {
13-
"foundry-local-sdk": "^0.1.0",
13+
"foundry-local-sdk": "^0.3.0",
1414
"openai": "^4.0.0"
1515
}
1616
}

‎python/foundry-local-multi-agent.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
import asyncio
1515

16-
from agent_framework.microsoft import FoundryLocalClient
16+
from agent_framework_foundry_local import FoundryLocalClient
1717

1818

1919
async def main():

‎python/foundry-local-with-agf.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
import asyncio
1010

11-
from agent_framework.microsoft import FoundryLocalClient
11+
from agent_framework_foundry_local import FoundryLocalClient
1212

1313

1414
async def main():

‎zava-creative-writer-local/src/api/agents/writer/writer.py‎

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,3 @@ def process(writer_output):
9292
print(chunk, end="", flush=True)
9393
print()
9494
print(process(full))
95-
assignment = "Write a fun and engaging article that includes the research and product information. The article should be between 800 and 1000 words."
96-
result = write(researchContext, research, productContext, products, assignment)
97-
print(result)

‎zava-creative-writer-local/src/csharp/Program.cs‎

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,13 @@
1414
var alias = "phi-3.5-mini";
1515

1616
Console.WriteLine("Starting Foundry Local service...");
17-
var manager = await FoundryLocalManager.StartServiceAsync();
17+
await FoundryLocalManager.CreateAsync(new Configuration { AppName = "ZavaCreativeWriter" }, null, default);
18+
var manager = FoundryLocalManager.Instance;
19+
await manager.StartWebServiceAsync(default);
1820

19-
var cachedModels = await manager.ListCachedModelsAsync();
20-
var catalogInfo = await manager.GetModelInfoAsync(aliasOrModelId: alias);
21-
var isCached = cachedModels.Any(m => m.ModelId == catalogInfo?.ModelId);
21+
var catalog = await manager.GetCatalogAsync(default);
22+
var catalogModel = await catalog.GetModelAsync(alias, default);
23+
var isCached = await catalogModel.IsCachedAsync(default);
2224

2325
if (isCached)
2426
{
@@ -27,19 +29,19 @@
2729
else
2830
{
2931
Console.WriteLine($"Downloading model: {alias} (this may take several minutes)...");
30-
await manager.DownloadModelAsync(aliasOrModelId: alias);
32+
await catalogModel.DownloadAsync(null, default);
3133
Console.WriteLine($"Download complete: {alias}");
3234
}
3335

3436
Console.WriteLine($"Loading model: {alias}...");
35-
var model = await manager.LoadModelAsync(aliasOrModelId: alias);
36-
var modelId = model?.ModelId ?? alias;
37+
await catalogModel.LoadAsync(default);
38+
var modelId = catalogModel.Id;
3739
Console.WriteLine($"Model ready: {modelId}");
3840

39-
var key = new ApiKeyCredential(manager.ApiKey);
41+
var key = new ApiKeyCredential("foundry-local");
4042
var openAiClient = new OpenAIClient(key, new OpenAIClientOptions
4143
{
42-
Endpoint = manager.Endpoint
44+
Endpoint = new Uri(manager.Urls[0])
4345
});
4446
var chatClient = openAiClient.GetChatClient(modelId);
4547

0 commit comments

Comments
 (0)