Skip to content

Repository files navigation

Introduction

This is a demo web app for SatGPT, an experimental project that uses large language models (LLMs) to retrieve and generate satellite data.

satgpt_compressed.mp4

So far, the app can help retrieve Sentinel 2 optical imagery based on the user's requested area and time of interest in natural language. It is built on the following:

  • OpenAI ChatGPT API - You've probably tried the chat bot... if you haven't played with the API, you should!
  • LangChain - LangChain provides abstractions and common tooling for many LLMs, including OpenAI; this project uses the recently released structured tools to facilitate API requests in natural language
  • STAC & Element84 EarthSearch v1 - The spatiotemporal asset catalogs (STAC) specification is a common way to describe geospatial information; Element84 has launched their version 1 EarthSearch catalog to make public satellite imagery more available and discoverable
  • Holoviz Panel - A python-friendly app development package that works well with the greater Holoviz data & vizualization ecosystem

Getting started

  1. Fork this repo
    • From the repo site on GitHub, you'll want to create your own fork of this project
  2. Add API key(s)
    • From your forked repo, go to "Settings" > "Secrets and variables" > "Codespaces"
    • Add your OpenAI API key as a new repository secret
    • Use OPENAI_API_KEY as the Name (YOUR_SECRET_NAME), and put the key in the Secret field
  3. Launch Codespaces
    • Start a Codespace from the main page of your repo, using the "Code" dropdown and the "Codespaces" tab

    • The Codespace will install all requirements, which will take a few minutes; once the environment is ready, you can launch the app

    • Typically, a panel app is launched using python -m panel serve app.py; in Codespaces the port that the app runs on will be automatically forwarded, but we need to add one extra argument to allow the app to communicate with itself...

    • The argument is --allow-websocket-origin=... and will be equal to one of two values depending on how you decided to run the Codespace:

      • If you are running the Codespace remotely (in your browser), you'll want to note the subdomain that your Codespace launched to (everything ahead of the github.dev in your browser address bar), and add -5006.preview.app.github.dev to that; the full command will be:

      python -m panel serve app.py --allow-websocket-origin=YOUR_SUBDOMAIN-5006.preview.app.github.dev

      • If you are running in VSCode desktop, you'll want to use localhost:

      python -m panel serve app.py --allow-websocket-origin=127.0.0.1:5006

Note: you only need to set this up once. All GitHub accounts now come with 60 CPU hours (30 hours on a 2-CPU instance) of Codespaces use per month. All git commands and authentication should "just work" for your fork, and files will be saved in between commits. It will likely remain the top-supported deployment for SatGPT, which will require the management of one or more individual API keys for users. Further instructions will be provided on how to keep your instance up to date without going through a full rebuild.

Looking ahead

SatGPT was originally built on the OpenAI API without LangChain tools/ agents, using a single prompt and one or two custom CLI tools. It used ShellGPT for automatic execution in a shell REPL and could generate STAC item searches as well as save TIFs or GIFs of the search.

In the future, we would like to re-integrate all of that functionality into a future version of SatGPT built on LangChain and a library of tools specific to satellite image analysis and mission engineering. It'd also be nice to run on LLMs that don't rely sending data to external APIs, which will be possible with LangChain.

About

app test for satgpt updates (langchain + panel)

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - MuFazil/satgpt-app: app test for satgpt updates (langchain + panel) · GitHub
Skip to content

Repository files navigation

Introduction

This is a demo web app for SatGPT, an experimental project that uses large language models (LLMs) to retrieve and generate satellite data.

satgpt_compressed.mp4

So far, the app can help retrieve Sentinel 2 optical imagery based on the user's requested area and time of interest in natural language. It is built on the following:

  • OpenAI ChatGPT API - You've probably tried the chat bot... if you haven't played with the API, you should!
  • LangChain - LangChain provides abstractions and common tooling for many LLMs, including OpenAI; this project uses the recently released structured tools to facilitate API requests in natural language
  • STAC & Element84 EarthSearch v1 - The spatiotemporal asset catalogs (STAC) specification is a common way to describe geospatial information; Element84 has launched their version 1 EarthSearch catalog to make public satellite imagery more available and discoverable
  • Holoviz Panel - A python-friendly app development package that works well with the greater Holoviz data & vizualization ecosystem

Getting started

  1. Fork this repo
    • From the repo site on GitHub, you'll want to create your own fork of this project
  2. Add API key(s)
    • From your forked repo, go to "Settings" > "Secrets and variables" > "Codespaces"
    • Add your OpenAI API key as a new repository secret
    • Use OPENAI_API_KEY as the Name (YOUR_SECRET_NAME), and put the key in the Secret field
  3. Launch Codespaces
    • Start a Codespace from the main page of your repo, using the "Code" dropdown and the "Codespaces" tab

    • The Codespace will install all requirements, which will take a few minutes; once the environment is ready, you can launch the app

    • Typically, a panel app is launched using python -m panel serve app.py; in Codespaces the port that the app runs on will be automatically forwarded, but we need to add one extra argument to allow the app to communicate with itself...

    • The argument is --allow-websocket-origin=... and will be equal to one of two values depending on how you decided to run the Codespace:

      • If you are running the Codespace remotely (in your browser), you'll want to note the subdomain that your Codespace launched to (everything ahead of the github.dev in your browser address bar), and add -5006.preview.app.github.dev to that; the full command will be:

      python -m panel serve app.py --allow-websocket-origin=YOUR_SUBDOMAIN-5006.preview.app.github.dev

      • If you are running in VSCode desktop, you'll want to use localhost:

      python -m panel serve app.py --allow-websocket-origin=127.0.0.1:5006

Note: you only need to set this up once. All GitHub accounts now come with 60 CPU hours (30 hours on a 2-CPU instance) of Codespaces use per month. All git commands and authentication should "just work" for your fork, and files will be saved in between commits. It will likely remain the top-supported deployment for SatGPT, which will require the management of one or more individual API keys for users. Further instructions will be provided on how to keep your instance up to date without going through a full rebuild.

Looking ahead

SatGPT was originally built on the OpenAI API without LangChain tools/ agents, using a single prompt and one or two custom CLI tools. It used ShellGPT for automatic execution in a shell REPL and could generate STAC item searches as well as save TIFs or GIFs of the search.

In the future, we would like to re-integrate all of that functionality into a future version of SatGPT built on LangChain and a library of tools specific to satellite image analysis and mission engineering. It'd also be nice to run on LLMs that don't rely sending data to external APIs, which will be possible with LangChain.

About

app test for satgpt updates (langchain + panel)

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - MuFazil/satgpt-app: app test for satgpt updates (langchain + panel) · GitHub
Skip to content

Repository files navigation

Introduction

This is a demo web app for SatGPT, an experimental project that uses large language models (LLMs) to retrieve and generate satellite data.

satgpt_compressed.mp4

So far, the app can help retrieve Sentinel 2 optical imagery based on the user's requested area and time of interest in natural language. It is built on the following:

  • OpenAI ChatGPT API - You've probably tried the chat bot... if you haven't played with the API, you should!
  • LangChain - LangChain provides abstractions and common tooling for many LLMs, including OpenAI; this project uses the recently released structured tools to facilitate API requests in natural language
  • STAC & Element84 EarthSearch v1 - The spatiotemporal asset catalogs (STAC) specification is a common way to describe geospatial information; Element84 has launched their version 1 EarthSearch catalog to make public satellite imagery more available and discoverable
  • Holoviz Panel - A python-friendly app development package that works well with the greater Holoviz data & vizualization ecosystem

Getting started

  1. Fork this repo
    • From the repo site on GitHub, you'll want to create your own fork of this project
  2. Add API key(s)
    • From your forked repo, go to "Settings" > "Secrets and variables" > "Codespaces"
    • Add your OpenAI API key as a new repository secret
    • Use OPENAI_API_KEY as the Name (YOUR_SECRET_NAME), and put the key in the Secret field
  3. Launch Codespaces
    • Start a Codespace from the main page of your repo, using the "Code" dropdown and the "Codespaces" tab

    • The Codespace will install all requirements, which will take a few minutes; once the environment is ready, you can launch the app

    • Typically, a panel app is launched using python -m panel serve app.py; in Codespaces the port that the app runs on will be automatically forwarded, but we need to add one extra argument to allow the app to communicate with itself...

    • The argument is --allow-websocket-origin=... and will be equal to one of two values depending on how you decided to run the Codespace:

      • If you are running the Codespace remotely (in your browser), you'll want to note the subdomain that your Codespace launched to (everything ahead of the github.dev in your browser address bar), and add -5006.preview.app.github.dev to that; the full command will be:

      python -m panel serve app.py --allow-websocket-origin=YOUR_SUBDOMAIN-5006.preview.app.github.dev

      • If you are running in VSCode desktop, you'll want to use localhost:

      python -m panel serve app.py --allow-websocket-origin=127.0.0.1:5006

Note: you only need to set this up once. All GitHub accounts now come with 60 CPU hours (30 hours on a 2-CPU instance) of Codespaces use per month. All git commands and authentication should "just work" for your fork, and files will be saved in between commits. It will likely remain the top-supported deployment for SatGPT, which will require the management of one or more individual API keys for users. Further instructions will be provided on how to keep your instance up to date without going through a full rebuild.

Looking ahead

SatGPT was originally built on the OpenAI API without LangChain tools/ agents, using a single prompt and one or two custom CLI tools. It used ShellGPT for automatic execution in a shell REPL and could generate STAC item searches as well as save TIFs or GIFs of the search.

In the future, we would like to re-integrate all of that functionality into a future version of SatGPT built on LangChain and a library of tools specific to satellite image analysis and mission engineering. It'd also be nice to run on LLMs that don't rely sending data to external APIs, which will be possible with LangChain.

About

app test for satgpt updates (langchain + panel)

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - MuFazil/satgpt-app: app test for satgpt updates (langchain + panel) · GitHub
Skip to content

Repository files navigation

Introduction

This is a demo web app for SatGPT, an experimental project that uses large language models (LLMs) to retrieve and generate satellite data.

satgpt_compressed.mp4

So far, the app can help retrieve Sentinel 2 optical imagery based on the user's requested area and time of interest in natural language. It is built on the following:

  • OpenAI ChatGPT API - You've probably tried the chat bot... if you haven't played with the API, you should!
  • LangChain - LangChain provides abstractions and common tooling for many LLMs, including OpenAI; this project uses the recently released structured tools to facilitate API requests in natural language
  • STAC & Element84 EarthSearch v1 - The spatiotemporal asset catalogs (STAC) specification is a common way to describe geospatial information; Element84 has launched their version 1 EarthSearch catalog to make public satellite imagery more available and discoverable
  • Holoviz Panel - A python-friendly app development package that works well with the greater Holoviz data & vizualization ecosystem

Getting started

  1. Fork this repo
    • From the repo site on GitHub, you'll want to create your own fork of this project
  2. Add API key(s)
    • From your forked repo, go to "Settings" > "Secrets and variables" > "Codespaces"
    • Add your OpenAI API key as a new repository secret
    • Use OPENAI_API_KEY as the Name (YOUR_SECRET_NAME), and put the key in the Secret field
  3. Launch Codespaces
    • Start a Codespace from the main page of your repo, using the "Code" dropdown and the "Codespaces" tab

    • The Codespace will install all requirements, which will take a few minutes; once the environment is ready, you can launch the app

    • Typically, a panel app is launched using python -m panel serve app.py; in Codespaces the port that the app runs on will be automatically forwarded, but we need to add one extra argument to allow the app to communicate with itself...

    • The argument is --allow-websocket-origin=... and will be equal to one of two values depending on how you decided to run the Codespace:

      • If you are running the Codespace remotely (in your browser), you'll want to note the subdomain that your Codespace launched to (everything ahead of the github.dev in your browser address bar), and add -5006.preview.app.github.dev to that; the full command will be:

      python -m panel serve app.py --allow-websocket-origin=YOUR_SUBDOMAIN-5006.preview.app.github.dev

      • If you are running in VSCode desktop, you'll want to use localhost:

      python -m panel serve app.py --allow-websocket-origin=127.0.0.1:5006

Note: you only need to set this up once. All GitHub accounts now come with 60 CPU hours (30 hours on a 2-CPU instance) of Codespaces use per month. All git commands and authentication should "just work" for your fork, and files will be saved in between commits. It will likely remain the top-supported deployment for SatGPT, which will require the management of one or more individual API keys for users. Further instructions will be provided on how to keep your instance up to date without going through a full rebuild.

Looking ahead

SatGPT was originally built on the OpenAI API without LangChain tools/ agents, using a single prompt and one or two custom CLI tools. It used ShellGPT for automatic execution in a shell REPL and could generate STAC item searches as well as save TIFs or GIFs of the search.

In the future, we would like to re-integrate all of that functionality into a future version of SatGPT built on LangChain and a library of tools specific to satellite image analysis and mission engineering. It'd also be nice to run on LLMs that don't rely sending data to external APIs, which will be possible with LangChain.

About

app test for satgpt updates (langchain + panel)

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - MuFazil/satgpt-app: app test for satgpt updates (langchain + panel) · GitHub
Skip to content

Repository files navigation

Introduction

This is a demo web app for SatGPT, an experimental project that uses large language models (LLMs) to retrieve and generate satellite data.

satgpt_compressed.mp4

So far, the app can help retrieve Sentinel 2 optical imagery based on the user's requested area and time of interest in natural language. It is built on the following:

  • OpenAI ChatGPT API - You've probably tried the chat bot... if you haven't played with the API, you should!
  • LangChain - LangChain provides abstractions and common tooling for many LLMs, including OpenAI; this project uses the recently released structured tools to facilitate API requests in natural language
  • STAC & Element84 EarthSearch v1 - The spatiotemporal asset catalogs (STAC) specification is a common way to describe geospatial information; Element84 has launched their version 1 EarthSearch catalog to make public satellite imagery more available and discoverable
  • Holoviz Panel - A python-friendly app development package that works well with the greater Holoviz data & vizualization ecosystem

Getting started

  1. Fork this repo
    • From the repo site on GitHub, you'll want to create your own fork of this project
  2. Add API key(s)
    • From your forked repo, go to "Settings" > "Secrets and variables" > "Codespaces"
    • Add your OpenAI API key as a new repository secret
    • Use OPENAI_API_KEY as the Name (YOUR_SECRET_NAME), and put the key in the Secret field
  3. Launch Codespaces
    • Start a Codespace from the main page of your repo, using the "Code" dropdown and the "Codespaces" tab

    • The Codespace will install all requirements, which will take a few minutes; once the environment is ready, you can launch the app

    • Typically, a panel app is launched using python -m panel serve app.py; in Codespaces the port that the app runs on will be automatically forwarded, but we need to add one extra argument to allow the app to communicate with itself...

    • The argument is --allow-websocket-origin=... and will be equal to one of two values depending on how you decided to run the Codespace:

      • If you are running the Codespace remotely (in your browser), you'll want to note the subdomain that your Codespace launched to (everything ahead of the github.dev in your browser address bar), and add -5006.preview.app.github.dev to that; the full command will be:

      python -m panel serve app.py --allow-websocket-origin=YOUR_SUBDOMAIN-5006.preview.app.github.dev

      • If you are running in VSCode desktop, you'll want to use localhost:

      python -m panel serve app.py --allow-websocket-origin=127.0.0.1:5006

Note: you only need to set this up once. All GitHub accounts now come with 60 CPU hours (30 hours on a 2-CPU instance) of Codespaces use per month. All git commands and authentication should "just work" for your fork, and files will be saved in between commits. It will likely remain the top-supported deployment for SatGPT, which will require the management of one or more individual API keys for users. Further instructions will be provided on how to keep your instance up to date without going through a full rebuild.

Looking ahead

SatGPT was originally built on the OpenAI API without LangChain tools/ agents, using a single prompt and one or two custom CLI tools. It used ShellGPT for automatic execution in a shell REPL and could generate STAC item searches as well as save TIFs or GIFs of the search.

In the future, we would like to re-integrate all of that functionality into a future version of SatGPT built on LangChain and a library of tools specific to satellite image analysis and mission engineering. It'd also be nice to run on LLMs that don't rely sending data to external APIs, which will be possible with LangChain.

About

app test for satgpt updates (langchain + panel)

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - MuFazil/satgpt-app: app test for satgpt updates (langchain + panel) · GitHub
Skip to content

Repository files navigation

Introduction

This is a demo web app for SatGPT, an experimental project that uses large language models (LLMs) to retrieve and generate satellite data.

satgpt_compressed.mp4

So far, the app can help retrieve Sentinel 2 optical imagery based on the user's requested area and time of interest in natural language. It is built on the following:

  • OpenAI ChatGPT API - You've probably tried the chat bot... if you haven't played with the API, you should!
  • LangChain - LangChain provides abstractions and common tooling for many LLMs, including OpenAI; this project uses the recently released structured tools to facilitate API requests in natural language
  • STAC & Element84 EarthSearch v1 - The spatiotemporal asset catalogs (STAC) specification is a common way to describe geospatial information; Element84 has launched their version 1 EarthSearch catalog to make public satellite imagery more available and discoverable
  • Holoviz Panel - A python-friendly app development package that works well with the greater Holoviz data & vizualization ecosystem

Getting started

  1. Fork this repo
    • From the repo site on GitHub, you'll want to create your own fork of this project
  2. Add API key(s)
    • From your forked repo, go to "Settings" > "Secrets and variables" > "Codespaces"
    • Add your OpenAI API key as a new repository secret
    • Use OPENAI_API_KEY as the Name (YOUR_SECRET_NAME), and put the key in the Secret field
  3. Launch Codespaces
    • Start a Codespace from the main page of your repo, using the "Code" dropdown and the "Codespaces" tab

    • The Codespace will install all requirements, which will take a few minutes; once the environment is ready, you can launch the app

    • Typically, a panel app is launched using python -m panel serve app.py; in Codespaces the port that the app runs on will be automatically forwarded, but we need to add one extra argument to allow the app to communicate with itself...

    • The argument is --allow-websocket-origin=... and will be equal to one of two values depending on how you decided to run the Codespace:

      • If you are running the Codespace remotely (in your browser), you'll want to note the subdomain that your Codespace launched to (everything ahead of the github.dev in your browser address bar), and add -5006.preview.app.github.dev to that; the full command will be:

      python -m panel serve app.py --allow-websocket-origin=YOUR_SUBDOMAIN-5006.preview.app.github.dev

      • If you are running in VSCode desktop, you'll want to use localhost:

      python -m panel serve app.py --allow-websocket-origin=127.0.0.1:5006

Note: you only need to set this up once. All GitHub accounts now come with 60 CPU hours (30 hours on a 2-CPU instance) of Codespaces use per month. All git commands and authentication should "just work" for your fork, and files will be saved in between commits. It will likely remain the top-supported deployment for SatGPT, which will require the management of one or more individual API keys for users. Further instructions will be provided on how to keep your instance up to date without going through a full rebuild.

Looking ahead

SatGPT was originally built on the OpenAI API without LangChain tools/ agents, using a single prompt and one or two custom CLI tools. It used ShellGPT for automatic execution in a shell REPL and could generate STAC item searches as well as save TIFs or GIFs of the search.

In the future, we would like to re-integrate all of that functionality into a future version of SatGPT built on LangChain and a library of tools specific to satellite image analysis and mission engineering. It'd also be nice to run on LLMs that don't rely sending data to external APIs, which will be possible with LangChain.

About

app test for satgpt updates (langchain + panel)

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - MuFazil/satgpt-app: app test for satgpt updates (langchain + panel) · GitHub
Skip to content

Repository files navigation

Introduction

This is a demo web app for SatGPT, an experimental project that uses large language models (LLMs) to retrieve and generate satellite data.

satgpt_compressed.mp4

So far, the app can help retrieve Sentinel 2 optical imagery based on the user's requested area and time of interest in natural language. It is built on the following:

  • OpenAI ChatGPT API - You've probably tried the chat bot... if you haven't played with the API, you should!
  • LangChain - LangChain provides abstractions and common tooling for many LLMs, including OpenAI; this project uses the recently released structured tools to facilitate API requests in natural language
  • STAC & Element84 EarthSearch v1 - The spatiotemporal asset catalogs (STAC) specification is a common way to describe geospatial information; Element84 has launched their version 1 EarthSearch catalog to make public satellite imagery more available and discoverable
  • Holoviz Panel - A python-friendly app development package that works well with the greater Holoviz data & vizualization ecosystem

Getting started

  1. Fork this repo
    • From the repo site on GitHub, you'll want to create your own fork of this project
  2. Add API key(s)
    • From your forked repo, go to "Settings" > "Secrets and variables" > "Codespaces"
    • Add your OpenAI API key as a new repository secret
    • Use OPENAI_API_KEY as the Name (YOUR_SECRET_NAME), and put the key in the Secret field
  3. Launch Codespaces
    • Start a Codespace from the main page of your repo, using the "Code" dropdown and the "Codespaces" tab

    • The Codespace will install all requirements, which will take a few minutes; once the environment is ready, you can launch the app

    • Typically, a panel app is launched using python -m panel serve app.py; in Codespaces the port that the app runs on will be automatically forwarded, but we need to add one extra argument to allow the app to communicate with itself...

    • The argument is --allow-websocket-origin=... and will be equal to one of two values depending on how you decided to run the Codespace:

      • If you are running the Codespace remotely (in your browser), you'll want to note the subdomain that your Codespace launched to (everything ahead of the github.dev in your browser address bar), and add -5006.preview.app.github.dev to that; the full command will be:

      python -m panel serve app.py --allow-websocket-origin=YOUR_SUBDOMAIN-5006.preview.app.github.dev

      • If you are running in VSCode desktop, you'll want to use localhost:

      python -m panel serve app.py --allow-websocket-origin=127.0.0.1:5006

Note: you only need to set this up once. All GitHub accounts now come with 60 CPU hours (30 hours on a 2-CPU instance) of Codespaces use per month. All git commands and authentication should "just work" for your fork, and files will be saved in between commits. It will likely remain the top-supported deployment for SatGPT, which will require the management of one or more individual API keys for users. Further instructions will be provided on how to keep your instance up to date without going through a full rebuild.

Looking ahead

SatGPT was originally built on the OpenAI API without LangChain tools/ agents, using a single prompt and one or two custom CLI tools. It used ShellGPT for automatic execution in a shell REPL and could generate STAC item searches as well as save TIFs or GIFs of the search.

In the future, we would like to re-integrate all of that functionality into a future version of SatGPT built on LangChain and a library of tools specific to satellite image analysis and mission engineering. It'd also be nice to run on LLMs that don't rely sending data to external APIs, which will be possible with LangChain.

About

app test for satgpt updates (langchain + panel)

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - MuFazil/satgpt-app: app test for satgpt updates (langchain + panel) · GitHub
Skip to content

Repository files navigation

Introduction

This is a demo web app for SatGPT, an experimental project that uses large language models (LLMs) to retrieve and generate satellite data.

satgpt_compressed.mp4

So far, the app can help retrieve Sentinel 2 optical imagery based on the user's requested area and time of interest in natural language. It is built on the following:

  • OpenAI ChatGPT API - You've probably tried the chat bot... if you haven't played with the API, you should!
  • LangChain - LangChain provides abstractions and common tooling for many LLMs, including OpenAI; this project uses the recently released structured tools to facilitate API requests in natural language
  • STAC & Element84 EarthSearch v1 - The spatiotemporal asset catalogs (STAC) specification is a common way to describe geospatial information; Element84 has launched their version 1 EarthSearch catalog to make public satellite imagery more available and discoverable
  • Holoviz Panel - A python-friendly app development package that works well with the greater Holoviz data & vizualization ecosystem

Getting started

  1. Fork this repo
    • From the repo site on GitHub, you'll want to create your own fork of this project
  2. Add API key(s)
    • From your forked repo, go to "Settings" > "Secrets and variables" > "Codespaces"
    • Add your OpenAI API key as a new repository secret
    • Use OPENAI_API_KEY as the Name (YOUR_SECRET_NAME), and put the key in the Secret field
  3. Launch Codespaces
    • Start a Codespace from the main page of your repo, using the "Code" dropdown and the "Codespaces" tab

    • The Codespace will install all requirements, which will take a few minutes; once the environment is ready, you can launch the app

    • Typically, a panel app is launched using python -m panel serve app.py; in Codespaces the port that the app runs on will be automatically forwarded, but we need to add one extra argument to allow the app to communicate with itself...

    • The argument is --allow-websocket-origin=... and will be equal to one of two values depending on how you decided to run the Codespace:

      • If you are running the Codespace remotely (in your browser), you'll want to note the subdomain that your Codespace launched to (everything ahead of the github.dev in your browser address bar), and add -5006.preview.app.github.dev to that; the full command will be:

      python -m panel serve app.py --allow-websocket-origin=YOUR_SUBDOMAIN-5006.preview.app.github.dev

      • If you are running in VSCode desktop, you'll want to use localhost:

      python -m panel serve app.py --allow-websocket-origin=127.0.0.1:5006

Note: you only need to set this up once. All GitHub accounts now come with 60 CPU hours (30 hours on a 2-CPU instance) of Codespaces use per month. All git commands and authentication should "just work" for your fork, and files will be saved in between commits. It will likely remain the top-supported deployment for SatGPT, which will require the management of one or more individual API keys for users. Further instructions will be provided on how to keep your instance up to date without going through a full rebuild.

Looking ahead

SatGPT was originally built on the OpenAI API without LangChain tools/ agents, using a single prompt and one or two custom CLI tools. It used ShellGPT for automatic execution in a shell REPL and could generate STAC item searches as well as save TIFs or GIFs of the search.

In the future, we would like to re-integrate all of that functionality into a future version of SatGPT built on LangChain and a library of tools specific to satellite image analysis and mission engineering. It'd also be nice to run on LLMs that don't rely sending data to external APIs, which will be possible with LangChain.

About

app test for satgpt updates (langchain + panel)

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages