-
Notifications
You must be signed in to change notification settings - Fork 342
Fix .NET 10 property directive format in sample files #497
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
achandmsft
merged 3 commits into
openai:main
from
achandmsft:fix-dotnet10-property-directives
Jun 27, 2025
Merged
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,10 +1,176 @@ | ||
| # OpenAI Documentation Examples for .NET | ||
| # OpenAI with .NET 10 - Getting Started Guide | ||
| This readme shows you how to run each OpenAI based sample (.cs) file in this folder directly without a project or additional setup using the latest .NET 10 Preview features. | ||
|
|
||
| ## Prerequisites | ||
|
|
||
| ### 1. Install .NET 10 Preview | ||
|
|
||
|
|
||
| #### Option A: Using Windows Package Manager (winget) - Recommended | ||
| ```powershell | ||
| # Install .NET 10 SDK Preview | ||
| winget install Microsoft.DotNet.SDK.Preview | ||
| ``` | ||
|
|
||
| #### Option B: Manual Download | ||
| 1. Visit the [.NET 10 Download Page](https://dotnet.microsoft.com/download/dotnet/10.0) | ||
| 2. Download and install: **.NET SDK 10.0 Preview** (required for development and `dotnet run`) | ||
|
|
||
| ### 2. Verify Installation | ||
|
|
||
| After installation, verify you have the correct versions: | ||
|
|
||
| ```powershell | ||
| # Check installed SDKs | ||
| dotnet --list-sdks | ||
|
|
||
| # Check version from the guides directory (should show 10.x) | ||
| cd docs/guides | ||
| dotnet --version | ||
| ``` | ||
|
|
||
| You should see output similar to: | ||
| ``` | ||
| 10.0.100-preview.5.25277.114 | ||
| ``` | ||
|
|
||
| ## Setup | ||
|
|
||
| ### 1. Clone the Repository | ||
| ```powershell | ||
| git clone https://github.com/openai/openai-dotnet.git | ||
| cd openai-dotnet | ||
| ``` | ||
|
|
||
| ### 2. Set Your OpenAI API Key | ||
|
|
||
| You need an OpenAI API key to run the samples. Get one from [OpenAI's API platform](https://platform.openai.com/api-keys). | ||
|
|
||
| #### Temporary (Current Session Only) | ||
| ```powershell | ||
| $env:OPENAI_KEY = "your-api-key-here" | ||
| ``` | ||
|
|
||
| #### Permanent Options | ||
|
|
||
| **Option A: Using System Properties (GUI)** | ||
| 1. Press `Win + R`, type `sysdm.cpl`, press Enter | ||
| 2. Click "Environment Variables" | ||
| 3. Under "User variables", click "New" | ||
| 4. Variable name: `OPENAI_KEY` | ||
| 5. Variable value: Your API key | ||
|
|
||
| **Option B: Using PowerShell (Permanent)** | ||
| ```powershell | ||
| [Environment]::SetEnvironmentVariable("OPENAI_KEY", "your-api-key-here", "User") | ||
| ``` | ||
|
|
||
| **Option C: Using Command Prompt as Administrator** | ||
| ```cmd | ||
| setx OPENAI_KEY "your-api-key-here" | ||
| ``` | ||
|
|
||
| ### 3. Verify Environment Variable | ||
| ```powershell | ||
| echo $env:OPENAI_KEY | ||
| ``` | ||
|
|
||
| ## Running the Samples | ||
|
|
||
| The samples use a new .NET 10 feature that allows [running single C# file applications](https://devblogs.microsoft.com/dotnet/announcing-dotnet-run-app/). Each file in this folder is a standalone application. | ||
| The samples use .NET 10's new single-file application feature. Each `.cs` file in the guides folder is a standalone application. | ||
|
|
||
| ### Navigate to the Guides Directory | ||
| ```powershell | ||
| cd docs/guides | ||
| ``` | ||
|
|
||
| ### Run a Sample | ||
| ```powershell | ||
| # Example: Run the simple chat prompt sample | ||
| dotnet run text/chat/chat_simpleprompt.cs | ||
|
|
||
| # Run other samples | ||
| dotnet run text/chat/chat_instructions.cs | ||
| dotnet run text/chat/chat_roles.cs | ||
| ``` | ||
|
|
||
| ### Expected Output | ||
| When you run `chat_simpleprompt.cs`, you should see output similar to: | ||
| ``` | ||
| Under a velvet-purple sky, a gentle unicorn named Luna sprinkled stardust over the dreaming forest, filling every heart with peaceful, magical dreams. | ||
| ``` | ||
|
|
||
| ## Sample File Structure | ||
|
|
||
| The samples are organized as follows: | ||
| ``` | ||
| docs/ | ||
| ├── guides/ | ||
| │ ├── global.json # Specifies .NET 10 preview SDK | ||
| │ ├── README.MD # Basic usage instructions | ||
| │ └── text/ | ||
| │ ├── chat/ | ||
| │ │ ├── chat_simpleprompt.cs # Basic chat completion | ||
| │ │ ├── chat_instructions.cs # Chat with system instructions | ||
| │ │ └── chat_roles.cs # Chat with different roles | ||
| │ └── responses/ | ||
| │ └── ... # Response handling samples | ||
| ``` | ||
|
|
||
| ## Understanding the Single-File Format | ||
|
|
||
| Each sample file contains special directives at the top: | ||
|
|
||
| ```csharp | ||
| // SAMPLE: Description of what this sample does | ||
| #:package [email protected].*-* // NuGet package reference | ||
| #:property PublishAot false // Build properties | ||
|
|
||
| using OpenAI.Chat; // Regular C# code follows | ||
|
|
||
| // Your application code here... | ||
| ``` | ||
|
|
||
| ## Troubleshooting | ||
|
|
||
| ### Problem: "No package found matching input criteria" | ||
| - **Solution**: The .NET 10 preview packages might not be available yet. Try installing from the official Microsoft download page instead. | ||
|
|
||
| ### Problem: `dotnet --version` shows 9.x instead of 10.x | ||
| - **Solution**: You need to install the .NET 10 **SDK** (not just the runtime). The `global.json` file in the guides directory requires the SDK. | ||
|
|
||
| ### Problem: "Couldn't find a project to run" | ||
| - **Solution**: Make sure you're running the command from the `docs/guides` directory and providing the correct path to the `.cs` file. | ||
|
|
||
| ### Problem: "The property directive needs to have two parts" | ||
| - **Solution**: The property directive format should be `#:property PropertyName PropertyValue` (space-separated, not equals sign). | ||
|
|
||
| ### Problem: API errors | ||
| - **Solution**: | ||
| - Verify your `OPENAI_KEY` environment variable is set correctly | ||
| - Check that your API key is valid and has sufficient credits | ||
| - Ensure you're using a valid model name (e.g., "gpt-4", "gpt-3.5-turbo") | ||
|
|
||
| ### Problem: Build errors about missing packages | ||
| - **Solution**: The package directives should automatically download dependencies. If not, try: | ||
| ```powershell | ||
| dotnet restore | ||
| ``` | ||
|
|
||
| ## Additional Resources | ||
|
|
||
| - [OpenAI .NET SDK Documentation](https://github.com/openai/openai-dotnet) | ||
| - [.NET 10 Preview Documentation](https://docs.microsoft.com/en-us/dotnet/core/whats-new/dotnet-10) | ||
| - [OpenAI API Documentation](https://platform.openai.com/docs) | ||
| - [Single-File Applications in .NET 10](https://devblogs.microsoft.com/dotnet/announcing-dotnet-run-app/) | ||
|
|
||
| ## Next Steps | ||
|
|
||
| To run them, you need to install the .NET 10 preview. | ||
| Once you have the basic samples working, you can: | ||
|
|
||
| Then, from the command line, you can run them using the `dotnet run <sample_name>` command, for example: `dotnet run s1-chat_simpleprompt.cs`. | ||
| 1. **Explore other samples** in the `text/` directory | ||
| 2. **Modify the prompts** in the sample files to experiment with different outputs | ||
| 3. **Create your own samples** following the same single-file format | ||
| 4. **Integrate the OpenAI SDK** into your own .NET applications | ||
|
|
||
| Happy coding with OpenAI and .NET 10! 🚀 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,6 +1,7 @@ | ||
| // SAMPLE: Generate text with messages using different roles | ||
| // GUIDANCE: Instructions to run this code: https://aka.ms/oai/net/start | ||
| #:package [email protected].*-* | ||
| #:property PublishAot=false | ||
| #:property PublishAot false | ||
|
|
||
| using OpenAI.Chat; | ||
|
|
||
|
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,6 +1,7 @@ | ||
| // SAMPLE: Generate text from a simple prompt | ||
| // GUIDANCE: Instructions to run this code: https://aka.ms/oai/net/start | ||
| #:package [email protected].*-* | ||
| #:property PublishAot=false | ||
| #:property PublishAot false | ||
|
|
||
| using OpenAI.Chat; | ||
|
|
||
|
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,6 +1,7 @@ | ||
| // SAMPLE: Prompt template with file input variable | ||
| // GUIDANCE: Instructions to run this code: https://aka.ms/oai/net/start | ||
| #:package [email protected].*-* | ||
| #:property PublishAot=false | ||
| #:property PublishAot false | ||
|
|
||
| using OpenAI.Responses; | ||
| using OpenAI.Files; | ||
|
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,6 +1,7 @@ | ||
| // SAMPLE: Generate text with instructions | ||
| // GUIDANCE: Instructions to run this code: https://aka.ms/oai/net/start | ||
| #:package [email protected].*-* | ||
| #:property PublishAot=false | ||
| #:property PublishAot false | ||
|
|
||
| using OpenAI.Responses; | ||
|
|
||
|
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,6 +1,7 @@ | ||
| // SAMPLE: Generate text with a prompt template | ||
| // GUIDANCE: Instructions to run this code: https://aka.ms/oai/net/start | ||
| #:package [email protected].*-* | ||
| #:property PublishAot=false | ||
| #:property PublishAot false | ||
|
|
||
| using OpenAI.Responses; | ||
| using System.ClientModel; | ||
|
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,6 +1,7 @@ | ||
| // SAMPLE: Generate text with messages using different roles | ||
| // GUIDANCE: Instructions to run this code: https://aka.ms/oai/net/start | ||
| #:package [email protected].*-* | ||
| #:property PublishAot=false | ||
| #:property PublishAot false | ||
|
|
||
| using OpenAI.Responses; | ||
|
|
||
|
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,6 +1,7 @@ | ||
| // SAMPLE: Generate text from a simple prompt | ||
| // GUIDANCE: Instructions to run this code: https://aka.ms/oai/net/start | ||
| #:package [email protected].*-* | ||
| #:property PublishAot=false | ||
| #:property PublishAot false | ||
|
|
||
| using OpenAI.Responses; | ||
|
|
||
|
|
||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.