Skip to content

Commit 0ef1abf

Browse files
authored
v0.10.0 (#80)
## 🌟 TL;DR - Key Highlights - πŸ§ͺ **Complete Evaluation Framework** - Generate synthetic test data, run batch experiments, and visualize results with interactive web dashboard - 🐧 **Linux Support** - Native CLI and UI (RAUX) support for Ubuntu with unified cross-platform installation (currently supports iGPU via llama.cpp/Vulkan backend using the Lemonade server) - πŸ—£οΈ **Enhanced Voice & Chat and new SDKs** - Introduced a new Talk SDK with real-time transcription and comprehensive Chat SDK with conversation memory - πŸ“ **AI Summarizer** - Intelligent meeting transcript and email summarization with multiple output formats (PDF, HTML, JSON) - 🎨 **Blender Integration** - Natural language 3D modeling through MCP server with real-time scene manipulation ## ⚠️ Breaking Changes - **CLI Command Update**: `gaia-cli` has been renamed to `gaia` throughout the codebase - **Before**: `gaia-cli llm "Hello world"` - **After**: `gaia llm "Hello world"` - **Agent Server Architecture**: Removed HTTP/WebSocket agent server dependencies for text-based interactions - **Parameter Changes**: Removed `--agent-name`, `--host`, `--port` parameters from `prompt`, `chat`, `talk`, and `stats` commands ## πŸš€ Major Features ### Enhanced Evaluation Framework - **Comprehensive workflow documentation** with step-by-step examples for meeting transcripts, emails, document Q&A, and third-party model testing - **Improved evaluation metrics** with time tracking for summary generation and percentage-based quality scores - **Robust experiment management** with crash recovery and selective re-runs for new models - **Enhanced reporting** with final results tables, bar charts, and colored score legends - **Interactive web visualization tool** for exploring evaluation results with real-time experiment comparison - **Synthetic data generation** for creating test datasets without privacy concerns **πŸ“– Documentation:** See [eval.md](https://github.com/amd/gaia/blob/main/docs/eval.md) for complete evaluation workflows **πŸ’‘ Quick Start:** ```bash # Complete evaluation workflow gaia groundtruth -d ./test_data --use-case summarization -o ./groundtruth gaia batch-experiment -c experiment_config.json -i ./groundtruth/consolidated_summarization_groundtruth.json -o ./experiments gaia visualize --experiments-dir ./experiments --evaluations-dir ./evaluation ``` ### Linux Platform Support - **Full Linux CLI support** with complete Lemonade server integration - **Cross-platform Python isolation** using standalone distributions - **Enhanced CI/CD pipeline** with dedicated Linux testing workflows - **GAIA UI (RAUX) Linux support** with native Ubuntu compatibility and unified installation strategy **πŸ“– Documentation:** See [cli.md](https://github.com/amd/gaia/blob/main/docs/cli.md) for cross-platform usage and [ui.md](https://github.com/amd/gaia/blob/main/docs/ui.md) for UI setup **πŸ’‘ Try it:** `gaia --version` or `gaia llm "Hello from Linux!"` ### Talk SDK and Audio Pipeline - **Unified voice/text chat integration** with comprehensive SDK - **Improved audio processing** with real-time transcription and diagnostics - **LLMClient streaming integration** replacing WebSocket architecture **πŸ“– Documentation:** See [talk.md](https://github.com/amd/gaia/blob/main/docs/talk.md) for voice interaction setup **πŸ’‘ Try it:** `gaia talk --help` or start a voice conversation with `gaia talk` ### GAIA Summarizer Tool - **AI-powered summarization** for meeting transcripts and emails - **Multiple output formats** (JSON, PDF, HTML, email) with batch processing - **Customizable summary styles** (executive, bullets, detailed, action items) - **Auto-detection** of content type (transcript vs email) for optimized processing - **Batch processing** for entire directories of files **πŸ“– Documentation:** See [cli.md](https://github.com/amd/gaia/blob/main/docs/cli.md) and [features.md](https://github.com/amd/gaia/blob/main/docs/features.md) for complete summarization workflows and all available options **πŸ’‘ Quick Start:** ```bash # Summarize meeting transcript with multiple styles gaia summarize -i meeting_transcript.txt --styles executive action_items ``` ### Chat SDK - **Comprehensive chat interface** with conversation memory and session management - **Multiple abstraction levels** from simple one-off questions to advanced session handling - **Assistant naming support** for personalized AI interactions - **Streaming responses** with real-time output in interactive mode - **Rich interactive commands** (`/clear`, `/history`, `/system`, `/model`, `/stats`) **πŸ“– Documentation:** See `chat.md` for SDK integration guide **πŸ’‘ Quick Start:** ```bash # Interactive chat with conversation memory gaia chat ``` ### Enhanced Blender Integration - **Natural language 3D modeling** through MCP (Model Context Protocol) server integration - **Comprehensive scene management** with object creation, materials, and transformations - **Interactive planning system** for complex 3D scene creation - **CLI command support** with example-based learning and custom queries - **Real-time Blender communication** for immediate 3D visualization **πŸ“– Documentation:** See [blender.md](https://github.com/amd/gaia/blob/main/docs/blender.md) for setup and MCP server configuration **πŸ’‘ Quick Start:** ```bash # Natural language 3D modeling gaia blender --query "Create a red cube and blue sphere" ``` ## πŸ”§ Architecture Improvements - **Simplified CLI architecture** with direct LLM communication (removed agent server dependencies) - **Enhanced Blender MCP integration** with real-time 3D scene manipulation - **Improved error handling** and resource cleanup across components - **Performance optimizations** for cross-platform deployment ## πŸ› Bug Fixes - **Chat CLI improvements** with restored interactive conversation support and conversation history management - **Talk CLI enhancements** with improved audio processing and real-time transcription reliability - **Installation verification fixes** with simplified Lemonade verification and enhanced logging - **Cross-platform compatibility** improvements for both Windows and Linux environments ## πŸ“– Documentation & Tooling - **Comprehensive evaluation documentation** with practical examples and workflows - **Cost estimation tools** for Claude API usage tracking with detailed breakdowns - **Enhanced testing infrastructure** with dedicated Chat SDK CI workflows - **Updated installation processes** with improved reliability - **Interactive web applications** for evaluation visualization and result exploration ## πŸš€ Installation & Upgrade ### Quick Installation - **Windows**: Simply download and run [gaia-windows-setup.exe](https://github.com/amd/gaia/releases/download/v0.10.0/gaia-windows-setup.exe) - **Linux (UI)**: Follow the steps outlined in the [UI installation guide](https://github.com/amd/gaia/blob/main/docs/ui.md) - **Linux (CLI)**: Follow the steps outlined in the [GAIA developer guide](https://github.com/amd/gaia/blob/v0.10.0/docs/dev.md#setup-and-installation) ### Developer Installation ```bash # Install GAIA with all features pip install -e .[talk,dev,eval] ### Upgrading from v0.9.x ```bash # Update your installation pip install --upgrade gaia # Update CLI commands (breaking change) # Old: gaia-cli llm "Hello" # New: gaia llm "Hello" # Verify installation gaia --version gaia llm "Test query to verify functionality" ``` ### Requirements - **Lemonade Server**: Required for LLM functionality (`lemonade-server serve`) - **Blender 4.3+**: Required for 3D modeling features - **Node.js**: Required for evaluation web visualizer
1 parent 124c81d commit 0ef1abf

File tree

100 files changed

+28819
-1769
lines changed

Some content is hidden

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

100 files changed

+28819
-1769
lines changed

β€Ž.claude/settings.local.jsonβ€Ž

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"permissions": {
3+
"allow": [
4+
"Bash(python:*)",
5+
"Bash(where python)",
6+
"Bash(py --version)",
7+
],
8+
"deny": []
9+
}
10+
}

β€Ž.cursor/.cursorignoreβ€Ž

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
.env

β€Ž.env.exampleβ€Ž

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
OPENAI_API_KEY=
2+
GITHUB_TOKEN=
3+
YOUTUBE_API_KEY=
4+
GROQ_API_KEY=
5+
PHOENIX_API_KEY=
6+
HUGGINGFACE_ACCESS_TOKEN=
7+
HF_TOKEN=
8+
ANTHROPIC_API_KEY=

β€Ž.github/actions/install-lemonade/action.ymlβ€Ž

Lines changed: 47 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,18 +22,51 @@ runs:
2222
Add-MpPreference -ExclusionProcess "Lemonade_Server_Installer.exe"
2323
2424
# Download and run installer
25-
Invoke-WebRequest -Uri "https://github.com/lemonade-sdk/lemonade/releases/download/v$env:LEMONADE_VERSION/Lemonade_Server_Installer.exe" -OutFile "C:\temp\Lemonade_Server_Installer.exe"
26-
27-
$installPath = "C:\Users\nimbys\AppData\Local\lemonade_server"
28-
Write-Host "Installing to: $installPath"
29-
30-
$process = Start-Process -FilePath "C:\temp\Lemonade_Server_Installer.exe" -ArgumentList "/S", "/Extras=hybrid", "/Models=Qwen2.5-0.5B-Instruct-CPU", "/D=$installPath" -Wait -PassThru
31-
32-
if ($process.ExitCode -ne 0) {
33-
Write-Host "Lemonade installer failed with exit code: $($process.ExitCode)"
25+
$installerPath = "C:\temp\Lemonade_Server_Installer.exe"
26+
27+
# Remove existing file if it exists
28+
if (Test-Path $installerPath) {
29+
Write-Host "Removing existing installer file"
30+
Remove-Item $installerPath -Force
31+
}
32+
33+
Invoke-WebRequest -Uri "https://github.com/lemonade-sdk/lemonade/releases/download/v$env:LEMONADE_VERSION/Lemonade_Server_Installer.exe" -OutFile $installerPath -UseBasicParsing
34+
35+
# Check downloaded file
36+
if (Test-Path $installerPath) {
37+
$fileInfo = Get-Item $installerPath
38+
Write-Host "Downloaded installer: $($fileInfo.Length) bytes"
39+
40+
# Basic sanity check - installer should be at least 100KB
41+
if ($fileInfo.Length -lt 100000) {
42+
Write-Host "ERROR: Downloaded file is suspiciously small ($($fileInfo.Length) bytes)"
43+
Write-Host "This suggests we downloaded an error page instead of the installer"
44+
45+
# Check if we got HTML error page (without -Raw and -TotalCount together)
46+
$firstBytes = Get-Content $installerPath -Encoding Byte -TotalCount 200
47+
$firstText = [System.Text.Encoding]::ASCII.GetString($firstBytes)
48+
Write-Host "First 200 characters of downloaded file:"
49+
Write-Host $firstText
50+
exit 1
51+
}
52+
} else {
53+
Write-Host "ERROR: Installer file not found after download"
3454
exit 1
3555
}
3656
57+
- name: Run Lemonade Installer
58+
shell: powershell
59+
run: |
60+
Write-Host "Installing Lemonade Server..."
61+
cd C:\temp
62+
Start-Process -FilePath ".\Lemonade_Server_Installer.exe" -ArgumentList "/S /Extras=hybrid /Models=Llama-3.2-3B-Instruct-Hybrid /D=C:\Users\nimbys\AppData\Local\lemonade_server" -Wait
63+
Write-Host "Installer completed"
64+
65+
- name: Verify Installation
66+
shell: powershell
67+
run: |
68+
$installPath = "C:\Users\nimbys\AppData\Local\lemonade_server"
69+
3770
# Remove exclusions after installation
3871
Remove-MpPreference -ExclusionPath "C:\temp\Lemonade_Server_Installer.exe"
3972
Remove-MpPreference -ExclusionProcess "Lemonade_Server_Installer.exe"
@@ -50,6 +83,10 @@ runs:
5083
& $lemonadeExe --version
5184
Write-Host "Lemonade Server installed successfully"
5285
} else {
53-
Write-Host "Lemonade server executable not found"
86+
Write-Host "Lemonade server executable not found at: $lemonadeExe"
87+
if (Test-Path "$installPath\python\Scripts") {
88+
Write-Host "Scripts directory contents:"
89+
Get-ChildItem "$installPath\python\Scripts" | ForEach-Object { Write-Host " - $($_.Name)" }
90+
}
5491
exit 1
5592
}

β€Ž.github/workflows/build_installer.ymlβ€Ž

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
# Copyright(C) 2024-2025 Advanced Micro Devices, Inc. All rights reserved.
22
# SPDX-License-Identifier: MIT
33

4-
name: Build GAIA Installer
4+
# This workflow builds the Windows installer for GAIA using NSIS
5+
# Creates a Windows-specific installer package with all dependencies
6+
# Platform: Windows (NSIS-based installer creation)
7+
8+
name: Build GAIA Installer (Windows)
59

610
on:
711
workflow_call:
@@ -17,14 +21,21 @@ on:
1721
value: ${{ jobs.build-installer.outputs.COMMIT_HASH }}
1822
push:
1923
branches: ["main"]
24+
paths:
25+
- "installer/**"
26+
- "src/**"
2027
pull_request:
2128
branches: ["main"]
2229
types: [opened, synchronize, reopened, ready_for_review]
30+
paths:
31+
- "installer/**"
32+
- "src/**"
2333
merge_group:
2434
workflow_dispatch:
2535

2636
jobs:
2737
build-installer:
38+
name: Build Windows Installer Package
2839
runs-on: windows-latest
2940
if: github.event_name != 'pull_request' || github.event.pull_request.draft == false || contains(github.event.pull_request.labels.*.name, 'ready_for_ci')
3041
outputs:
@@ -81,12 +92,12 @@ jobs:
8192
echo "VERSION=$version" >> $env:GITHUB_OUTPUT
8293
Write-Host "Extracted version: $version"
8394
84-
- name: Build the GAIA installer
95+
- name: Build the Windows installer using NSIS
8596
run: |
8697
cd installer
8798
& 'C:\Program Files (x86)\NSIS\makensis.exe' /DOGA_TOKEN="${{ secrets.OGA_PUBLIC_TOKEN }}" 'Installer.nsi'
8899
89-
# Verify installer was created successfully
100+
# Verify Windows installer was created successfully
90101
if (Test-Path "gaia-windows-setup.exe") {
91102
Write-Host "gaia-windows-setup.exe has been created successfully."
92103
} else {
@@ -102,11 +113,10 @@ jobs:
102113
echo "INSTALLER_HASH=$hash" >> $env:GITHUB_OUTPUT
103114
Write-Host "Installer SHA256: $hash"
104115
105-
- name: Upload installer
116+
- name: Upload Windows installer artifact
106117
uses: actions/upload-artifact@v4
107118
with:
108119
name: gaia-windows-installer-${{ steps.extract_version.outputs.VERSION }}-${{ steps.get_commit.outputs.COMMIT_HASH }}
109120
path: installer\gaia-windows-setup.exe
110-
111121
if-no-files-found: error
112122
retention-days: 7

β€Ž.github/workflows/lint.ymlβ€Ž

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
# Copyright(C) 2024-2025 Advanced Micro Devices, Inc. All rights reserved.
2+
# SPDX-License-Identifier: MIT
3+
4+
# This workflow runs code quality checks (linting) for the entire codebase
5+
# Provides fast feedback on code quality before running platform-specific tests
6+
# Platform: Linux/Ubuntu (cross-platform code analysis)
7+
8+
name: Code Quality (Lint)
9+
10+
on:
11+
workflow_call:
12+
push:
13+
branches: ["main"]
14+
paths:
15+
- "src/**"
16+
- "tests/**"
17+
- "installer/**"
18+
- "groundtruth/**"
19+
- "test_data/**"
20+
pull_request:
21+
branches: ["main"]
22+
types: [opened, synchronize, reopened, ready_for_review]
23+
paths:
24+
- "src/**"
25+
- "tests/**"
26+
- "installer/**"
27+
- "groundtruth/**"
28+
- "test_data/**"
29+
merge_group:
30+
workflow_dispatch:
31+
32+
permissions:
33+
contents: read
34+
35+
jobs:
36+
lint:
37+
name: Run Code Quality Checks
38+
runs-on: ubuntu-latest
39+
if: github.event_name != 'pull_request' || github.event.pull_request.draft == false || contains(github.event.pull_request.labels.*.name, 'ready_for_ci')
40+
steps:
41+
- uses: actions/checkout@v4
42+
43+
- name: Set up Python
44+
uses: actions/setup-python@v5
45+
with:
46+
python-version: '3.10'
47+
48+
- name: Install linting dependencies
49+
run: |
50+
python -m pip install --upgrade pip
51+
pip install black pylint
52+
53+
- name: Lint with Black
54+
run: |
55+
black --check --verbose --config pyproject.toml installer src tests
56+
57+
- name: PyLint
58+
run: |
59+
# Install minimal dependencies needed for pylint to work
60+
pip install -e .
61+
# Run pylint matching the PowerShell script configuration
62+
python -m pylint src/gaia --rcfile .pylintrc --disable C0103,C0301,W0246,W0221,E1102,R0401,E0401,W0718

β€Ž.github/workflows/publish_installer.ymlβ€Ž

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,17 @@ name: Publish GAIA Installer
33
on:
44
push:
55
branches: ["main"]
6+
paths:
7+
- "installer/**"
8+
- "src/**"
69
tags:
710
- v*
811
pull_request:
912
branches: ["main"]
13+
types: [opened, synchronize, reopened, ready_for_review]
14+
paths:
15+
- "installer/**"
16+
- "src/**"
1017
merge_group:
1118
workflow_dispatch:
1219

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
# Copyright(C) 2024-2025 Advanced Micro Devices, Inc. All rights reserved.
2+
# SPDX-License-Identifier: MIT
3+
4+
# This workflow runs tests for the evaluation tool
5+
# Triggers when eval source code or tests are modified
6+
# Platform: Windows only
7+
8+
name: Test Evaluation Tool
9+
10+
on:
11+
workflow_call:
12+
push:
13+
branches: ["main"]
14+
paths:
15+
- "src/gaia/eval/**"
16+
- "src/gaia/eval/configs/**"
17+
- "src/gaia/eval/webapp/**"
18+
- "tests/test_eval*.py"
19+
- "groundtruth/**"
20+
- "test_data/**"
21+
pull_request:
22+
branches: ["main"]
23+
types: [opened, synchronize, reopened, ready_for_review]
24+
paths:
25+
- "src/gaia/eval/**"
26+
- "src/gaia/eval/configs/**"
27+
- "src/gaia/eval/webapp/**"
28+
- "tests/test_eval*.py"
29+
- "groundtruth/**"
30+
- "test_data/**"
31+
workflow_dispatch:
32+
33+
permissions:
34+
contents: read
35+
36+
jobs:
37+
test-eval-windows:
38+
name: Test Eval Tool (Windows)
39+
runs-on: windows-latest
40+
if: github.event_name != 'pull_request' || github.event.pull_request.draft == false || contains(github.event.pull_request.labels.*.name, 'ready_for_ci')
41+
timeout-minutes: 10 # 2 minute target but allow some buffer
42+
43+
steps:
44+
- name: Checkout code
45+
uses: actions/checkout@v4
46+
47+
- name: Set up Python 3.10
48+
uses: actions/setup-python@v5
49+
with:
50+
python-version: '3.10'
51+
52+
- name: Install dependencies
53+
run: |
54+
python -m pip install --upgrade pip
55+
pip install -e .
56+
pip install pytest pytest-cov pytest-mock
57+
pip install anthropic rich
58+
59+
- name: Run eval unit tests
60+
run: |
61+
pytest tests/test_eval.py -v --cov=src/gaia/eval --cov-report=term-missing
62+
63+
- name: Test eval CLI commands
64+
run: |
65+
# Test help command
66+
python -m gaia.cli eval --help
67+
# Test visualize help
68+
python -m gaia.cli visualize --help
69+
70+
- name: Set up Node.js
71+
uses: actions/setup-node@v4
72+
with:
73+
node-version: '18'
74+
75+
- name: Test webapp functionality
76+
run: |
77+
cd src/gaia/eval/webapp
78+
# Install dependencies
79+
npm install
80+
# Run syntax checks
81+
npm test
82+
# Test that server can start (Windows-compatible version)
83+
$env:PORT = 3456 # Use non-default port to avoid conflicts
84+
$process = Start-Process node -ArgumentList "server.js" -PassThru -ErrorAction Stop
85+
Start-Sleep -Seconds 3
86+
if ($process.HasExited) {
87+
Write-Error "Server failed to start or crashed immediately"
88+
exit 1
89+
}
90+
# Try to connect to the server
91+
try {
92+
$response = Invoke-WebRequest -Uri "http://localhost:3456" -TimeoutSec 5 -UseBasicParsing
93+
Write-Output "Server responded with status: $($response.StatusCode)"
94+
} catch {
95+
Write-Error "Server did not respond to HTTP request"
96+
Stop-Process -Id $process.Id -Force -ErrorAction SilentlyContinue
97+
exit 1
98+
}
99+
Stop-Process -Id $process.Id -Force
100+
Write-Output "Webapp server test passed"

0 commit comments

Comments
Β (0)