Skip to content

Commit

Permalink
docs: Added mkdocs.
Browse files Browse the repository at this point in the history
  • Loading branch information
HavenDV committed Aug 19, 2024
1 parent 107873d commit 12051b9
Show file tree
Hide file tree
Showing 17 changed files with 607 additions and 258 deletions.
54 changes: 54 additions & 0 deletions .github/workflows/mkdocs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
name: MKDocs Deploy
on:
push:
branches:
- main
paths:
- 'docs/**'
- 'mkdocs.yml'
- 'examples/**'

# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write

# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Pages
uses: actions/configure-pages@v5

- name: Install dependencies
run: pip install mkdocs-material

- name: Generate docs
run: dotnet run --project src/helpers/GenerateDocs/GenerateDocs.csproj .

- name: Build with MkDocs
run: mkdocs build -d ./_site

- name: Upload artifact
uses: actions/upload-pages-artifact@v3

deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
7 changes: 7 additions & 0 deletions Ollama.sln
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "workflows", "workflows", "{
.github\dependabot.yml = .github\dependabot.yml
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GenerateDocs", "src\helpers\GenerateDocs\GenerateDocs.csproj", "{E1D4D0DA-5A4C-4253-B690-C581FB23EA03}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand Down Expand Up @@ -77,6 +79,10 @@ Global
{8198FC7A-4DCA-4E18-B812-BE953985BF7E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8198FC7A-4DCA-4E18-B812-BE953985BF7E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8198FC7A-4DCA-4E18-B812-BE953985BF7E}.Release|Any CPU.Build.0 = Release|Any CPU
{E1D4D0DA-5A4C-4253-B690-C581FB23EA03}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E1D4D0DA-5A4C-4253-B690-C581FB23EA03}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E1D4D0DA-5A4C-4253-B690-C581FB23EA03}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E1D4D0DA-5A4C-4253-B690-C581FB23EA03}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand All @@ -90,6 +96,7 @@ Global
{824E0F5F-0272-4EAE-BCC3-CB6F4E88EC12} = {61E7E11E-4558-434C-ACE8-06316A3097B3}
{8198FC7A-4DCA-4E18-B812-BE953985BF7E} = {AAA11B78-2764-4520-A97E-46AA7089A588}
{95FEBA37-963B-4E42-A49C-33905341480C} = {E793AF18-4371-4EBD-96FC-195EB1798855}
{E1D4D0DA-5A4C-4253-B690-C581FB23EA03} = {C612F166-61F7-4552-A52B-2494F45DB431}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {CED9A020-DBA5-4BE6-8096-75E528648EC1}
Expand Down
102 changes: 102 additions & 0 deletions docs/css/extra.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
/* Logo title */
.md-header__topic:first-child {
font-weight: initial !important;
}

/* Code font size in <details> */
details .linenos, details code {
font-size: inherit !important;
}

/* Code block / tab in details */
details > summary + .highlight:last-child, details > summary + .tabbed-set:last-child { margin: 0 -0.6rem !important; }
details > summary + .highlight:last-child > .highlighttable { margin: 0 !important; }

/* Table full width */
.md-typeset__table { display: block !important; }
.md-typeset table:not(.highlighttable) { display: table !important; }

.md-typeset table:not([class]) th {
min-width: 0rem;
}

.headerlink { transform: translateY(-2.5px); }

.md-nav__link[for=__toc] .md-icon { margin-left: auto !important; }

blockquote.page-time {
margin: 20px 0 !important;
border-left-color: #64b5f6 !important; /* Just change the color value and that's it*/
}
blockquote.page-copyright {
margin: 20px 0 !important;
border-left-color: #ff1700 !important; /* Just change the color value and that's it*/
}
blockquote.page-copyright i.md-icon {
display: inline-block;
margin-right: 5px;
transform: translateY(3.5px);
width: 18px;
}

#myBtn {
display: none;
position: fixed;
bottom: 100px;
right: 16px;
z-index: 99;
border: none;
outline: none;
color: #8590a6;
cursor: pointer;
padding: .7rem;
border-radius: .4rem;
}

#myBtn:hover {
background-color: #d3d3d3;
}

#color-button > button {
cursor: pointer;
transition: opacity .25s;
display: inline-block;
width: 6.5rem;
margin-bottom: 0.2rem;
padding: 1.2rem 0.4rem 0.2rem;
font-size: 0.64rem;
text-align: left;
}

#color-button > button[data-md-color-primary] {
background-color: var(--md-primary-fg-color);
color: var(--md-primary-bg-color);
}
#color-button > button[data-md-color-primary=white] {
box-shadow: inset 0 0 0.05rem rgb(0 0 0 / 54%);
}

#color-button > button[data-md-color-accent] {
background-color: var(--md-accent-fg-color);
color: var(--md-code-bg-color);
}

mjx-container > img {
width: 0;
height: 0;
}

[data-md-color-scheme="slate"] {
--md-primary-fg-color: #2e303e;
--md-accent-fg-color: #00bda4;
--md-typeset-a-color: #526cfe;
}

[data-md-color-scheme="slate"] .md-typeset img {
background: white;
filter: brightness(0.9);
}

[data-md-color-scheme="slate"] .md-typeset img[src$=".svg"] {
border: 4px solid white;
}
Binary file added docs/media/icon128.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
108 changes: 108 additions & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
site_name: OpenAI .NET Documentation
nav:
- Overview: index.md
# EXAMPLES #

# - Quick Start: QuickStart.md
# - Architecture: Architecture.md
# - FAQ: FAQ.md
# - Contributing Guide: ContributingGuide.md
# - Tutorials:
# - Configure the native library loading: Tutorials/NativeLibraryConfig.md
# - Use executors: Tutorials/Executors.md
# - Use ChatSession: Tutorials/ChatSession.md
# - Understand LLamaContext: Tutorials/UnderstandLLamaContext.md
# - Get embeddings: Tutorials/GetEmbeddings.md
# - Quantize the model: Tutorials/Quantization.md
#
# - Advanced Tutorials:
# - Customize the native library loading: AdvancedTutorials/CustomizeNativeLibraryLoading.md
#
# - Integrations:
# - semantic-kernel integration: Integrations/semantic-kernel.md
# - kernel-memory integration: Integrations/kernel-memory.md
# - BotSharp integration: Integrations/BotSharp.md
# - Langchain integration: Integrations/Langchain.md
#
# - Examples:
# - Bacthed executor - multi-output to one input: Examples/BatchedExecutorFork.md
# - Batched executor - basic guidance: Examples/BatchedExecutorGuidance.md
# - Batched executor - rewinding to an earlier state: Examples/BatchedExecutorRewind.md

theme:
name: material
static_templates:
- 404.html
language: 'en'
palette:
# Palette toggle for light mode
- media: "(prefers-color-scheme: light)"
scheme: default
primary: white
accent: red
toggle:
icon: material/weather-sunny
name: Switch to dark mode

# Palette toggle for dark mode
- media: "(prefers-color-scheme: dark)"
scheme: slate
primary: blue
accent: blue
toggle:
icon: material/weather-night
name: Switch to light mode
include_search_page: false
search_index_only: true
favicon: 'media/icon128.png'
icon:
logo: 'material/file-document'
features:
- content.action.edit
- navigation.instant
font:
text: 'Fira Sans'
code: 'Fira Mono'

extra:
version:
provider: mike

extra_css:
- 'css/extra.css?v=14'

markdown_extensions:
- admonition
- def_list
- footnotes
- meta
- toc:
permalink: ""
slugify: !!python/name:pymdownx.slugs.uslugify
- pymdownx.arithmatex:
generic: true
- pymdownx.caret
- pymdownx.critic
- pymdownx.details
- pymdownx.emoji:
emoji_generator: !!python/name:pymdownx.emoji.to_svg
- pymdownx.highlight:
linenums: true
- pymdownx.inlinehilite
- pymdownx.keys
- pymdownx.magiclink
- pymdownx.mark
- pymdownx.snippets:
check_paths: true
- pymdownx.progressbar
- pymdownx.smartsymbols
- pymdownx.superfences:
custom_fences:
- name: math
class: arithmatex
format: !!python/name:pymdownx.arithmatex.fence_mathjax_format
- pymdownx.tasklist:
custom_checkbox: true
- pymdownx.tilde
- pymdownx.tabbed:
alternate_style: true
9 changes: 9 additions & 0 deletions src/helpers/GenerateDocs/GenerateDocs.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>

</Project>
38 changes: 38 additions & 0 deletions src/helpers/GenerateDocs/Program.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
var solutionDirectory = args.ElementAtOrDefault(0) ?? Path.GetFullPath(Path.Combine(Directory.GetCurrentDirectory(), "../../../../../.."));
var sampleDirectory = Path.Combine(solutionDirectory, "src", "tests", "Ollama.IntegrationTests");
var mkDocsPath = Path.Combine(solutionDirectory, "mkdocs.yml");

var newDir = Path.Combine(solutionDirectory, "docs", "samples");
Directory.CreateDirectory(newDir);

File.Copy(
Path.Combine(solutionDirectory, "README.md"),
Path.Combine(solutionDirectory, "docs", "index.md"),
overwrite: true);

Console.WriteLine($"Generating samples from {sampleDirectory}...");
foreach (var path in Directory.EnumerateFiles(sampleDirectory, "Tests.*.cs", SearchOption.AllDirectories))
{
var code = await File.ReadAllTextAsync(path);

var start = code.IndexOf("\n {", StringComparison.Ordinal);
var end = code.IndexOf("\n }", StringComparison.Ordinal);
code = code.Substring(start + 4, end - start + 4);

var lines = code.Split('\n')[1..^2];
code = string.Join('\n', lines.Select(x => x.Length > 8 ? x[8..] : string.Empty));

var newPath = Path.Combine(newDir, $"{Path.GetExtension(Path.GetFileNameWithoutExtension(path)).TrimStart('.')}.md");
await File.WriteAllTextAsync(newPath, $@"```csharp
{code}
```");
}

var mkDocs = await File.ReadAllTextAsync(mkDocsPath);
var newMkDocs = mkDocs.Replace(
"# EXAMPLES #",
$"- Examples:{string.Concat(Directory.EnumerateFiles(Path.Combine(solutionDirectory, "docs", "samples"), "*.md")
.Select(x => $@"
- {Path.GetFileNameWithoutExtension(x)}: samples/{Path.GetFileNameWithoutExtension(x)}.md"))}");
await File.WriteAllTextAsync(mkDocsPath, newMkDocs);

19 changes: 19 additions & 0 deletions src/tests/Ollama.IntegrationTests/Tests.Chat.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
namespace Ollama.IntegrationTests;

public partial class Tests
{
[TestMethod]
public async Task Chat()
{
#if DEBUG
await using var container = await PrepareEnvironmentAsync(EnvironmentType.Local, "llama3");
#else
await using var container = await PrepareEnvironmentAsync(EnvironmentType.Container, "llama3");
#endif

var chat = container.ApiClient.Chat("llama3");
var message = await chat.SendAsync("answer 5 random words");

Console.WriteLine(message.Content);
}
}
Loading

0 comments on commit 12051b9

Please sign in to comment.