mirror of
https://github.com/aljazceru/dev-gpt.git
synced 2025-12-19 22:54:21 +01:00
👩🔬 refactor: rename repo
This commit is contained in:
6
.github/workflows/ci.yml
vendored
6
.github/workflows/ci.yml
vendored
@@ -87,7 +87,7 @@ jobs:
|
||||
VERSION: ${{ env.VERSION }}
|
||||
shell: bash
|
||||
run: |
|
||||
if docker pull jinaai/gpt-dev:$VERSION; then
|
||||
if docker pull jinaai/dev-gpt:$VERSION; then
|
||||
echo "Executor version/tag is used already. Please update the tag"
|
||||
exit 1
|
||||
else
|
||||
@@ -109,7 +109,7 @@ jobs:
|
||||
if: steps.check.outputs.changed == 'true'
|
||||
uses: docker/build-push-action@v2
|
||||
with:
|
||||
context: src/options/generate/static_files/base_image
|
||||
context: dev_gpt/options/generate/static_files/base_image
|
||||
push: true
|
||||
tags: jinaai/gpt-dev:${{ env.VERSION }}
|
||||
tags: jinaai/dev-gpt:${{ env.VERSION }}
|
||||
|
||||
|
||||
2
.gitignore
vendored
2
.gitignore
vendored
@@ -3,5 +3,5 @@
|
||||
.env
|
||||
data
|
||||
build
|
||||
gptdeploy.egg-info
|
||||
dev-gpt.egg-info
|
||||
dist
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
include requirements.txt
|
||||
include gptdeploy.cmd
|
||||
include dev-gpt.cmd
|
||||
recursive-include src/options/generate/static_files/ *
|
||||
127
README.md
127
README.md
@@ -1,9 +1,9 @@
|
||||
<h1 align="center">
|
||||
GPT Deploy: One line to generate them all 🧙🚀
|
||||
Dev GPT : One line to generate them all 🧙🚀
|
||||
</h1>
|
||||
|
||||
<p align="center">
|
||||
<img src="res/gpt-deploy-logo.png" alt="Jina NOW logo" width="150px">
|
||||
<img src="res/dev-gpt-logo.png" alt="Jina NOW logo" width="150px">
|
||||
</p>
|
||||
<p align="center">
|
||||
Turn your natural language descriptions into fully functional, deployed AI-powered microservices with a single command!
|
||||
@@ -17,29 +17,30 @@ Your imagination is the limit!
|
||||
<a href="https://coverage-badge.samuelcolvin.workers.dev/redirect/tiangolo/fastapi" target="_blank">
|
||||
<img src="https://coverage-badge.samuelcolvin.workers.dev/tiangolo/fastapi.svg" alt="Coverage">
|
||||
</a>
|
||||
<a href="https://pypi.org/project/gptdeploy" target="_blank">
|
||||
<img src="https://img.shields.io/pypi/v/gptdeploy?color=%2334D058&label=pypi%20package" alt="Package version">
|
||||
<a href="https://pypi.org/project/dev-gpt" target="_blank">
|
||||
<img src="https://img.shields.io/pypi/v/dev-gpt?color=%2334D058&label=pypi%20package" alt="Package version">
|
||||
</a>
|
||||
<a href="https://pypi.org/project/gptdeploy" target="_blank">
|
||||
<img src="https://img.shields.io/pypi/pyversions/gptdeploy.svg?color=%2334D058" alt="Supported Python versions">
|
||||
<a href="https://pypi.org/project/dev-gpt" target="_blank">
|
||||
<img src="https://img.shields.io/pypi/pyversions/dev-gpt.svg?color=%2334D058" alt="Supported Python versions">
|
||||
</a>
|
||||
<a href="https://github.com/tiangolo/gptdeploy/actions?query=workflow%3ATest+event%3Apush+branch%3Amaster" target="_blank">
|
||||
<a href="https://github.com/tiangolo/dev-gpt/actions?query=workflow%3ATest+event%3Apush+branch%3Amaster" target="_blank">
|
||||
<img src="https://img.shields.io/badge/platform-mac%20%7C%20linux%20%7C%20windows-blue" alt="Supported platforms">
|
||||
</a>
|
||||
<a href="https://pypistats.org/packages/gptdeploy" target="_blank">
|
||||
<img src="https://img.shields.io/pypi/dm/gptdeploy?color=%2334D058&label=pypi%20downloads" alt="Downloads">
|
||||
<a href="https://pypistats.org/packages/dev-gpt" target="_blank">
|
||||
<img src="https://img.shields.io/pypi/dm/dev-gpt?color=%2334D058&label=pypi%20downloads" alt="Downloads">
|
||||
</a>
|
||||
<a href="https://discord.gg/ESn8ED6Fyn" target="_blank">
|
||||
<img src="https://img.shields.io/badge/chat_on-Discord-7289DA?logo=discord&logoColor=white" alt="Discord Chat">
|
||||
</a>
|
||||
|
||||
|
||||
[](https://user-images.githubusercontent.com/11627845/231530421-272a66aa-4260-4e17-ab7a-ba66adca754c.mp4)
|
||||
[//]: # ([](https://user-images.githubusercontent.com/11627845/231530421-272a66aa-4260-4e17-ab7a-ba66adca754c.mp4))
|
||||
|
||||
</p>
|
||||
This project streamlines the creation and deployment of AI-powered microservices.
|
||||
Simply describe your task using natural language, and the system will automatically build and deploy your microservice.
|
||||
To ensure the microservice accurately aligns with your intended task a test scenario is required.
|
||||
You get guidance from our three agents:
|
||||
|
||||
|
||||
## Quickstart
|
||||
### Requirements
|
||||
@@ -47,8 +48,8 @@ To ensure the microservice accurately aligns with your intended task a test scen
|
||||
|
||||
### Installation
|
||||
```bash
|
||||
pip install gptdeploy
|
||||
gptdeploy configure --key <your openai api key>
|
||||
pip install dev-gpt
|
||||
dev-gpt configure --key <your openai api key>
|
||||
```
|
||||
If you set the environment variable `OPENAI_API_KEY`, the configuration step can be skipped.
|
||||
Your api key must have access to gpt-4 to use this tool.
|
||||
@@ -56,7 +57,7 @@ We are working on a way to use gpt-3.5-turbo as well.
|
||||
|
||||
### Generate Microservice
|
||||
```bash
|
||||
gptdeploy generate \
|
||||
dev-gpt generate \
|
||||
--description "<description of the microservice>" \
|
||||
--model <gpt-3.5 or gpt-4> \
|
||||
--path </path/to/local/folder>
|
||||
@@ -70,13 +71,13 @@ but will not be able to generate as complex microservices. (default: largest you
|
||||
The creation process should take between 5 and 15 minutes.
|
||||
During this time, GPT iteratively builds your microservice until it finds a strategy that make your test scenario pass.
|
||||
|
||||
Be aware that the costs you have to pay for openai vary between $0.50 and $3.00 per microservice (using GPT-4).
|
||||
Be aware that the costs you have to pay for openai vary between $0.50 and $3.00 per microservice using GPT-4 or $0.05 to $0.30 for GPT-3.5-Trubo.
|
||||
|
||||
### Run Microservice
|
||||
Run the microservice locally in docker. In case docker is not running on your machine, it will try to run it without docker.
|
||||
With this command a playground opens in your browser where you can test the microservice.
|
||||
```bash
|
||||
gptdeploy run --path <path to microservice>
|
||||
dev-gpt run --path <path to microservice>
|
||||
```
|
||||
|
||||
|
||||
@@ -85,7 +86,7 @@ If you want to deploy your microservice to the cloud a [Jina account](https://cl
|
||||
When creating a Jina account, you get some free credits, which you can use to deploy your microservice ($0.025/hour).
|
||||
If you run out of credits, you can purchase more.
|
||||
```bash
|
||||
gptdeploy deploy --microservice_path <path to microservice>
|
||||
dev-gpt deploy --microservice_path <path to microservice>
|
||||
```
|
||||
|
||||
|
||||
@@ -97,11 +98,11 @@ jc delete <microservice id>
|
||||
```
|
||||
|
||||
## Examples
|
||||
In this section you can get a feeling for the kind of microservices that can be generated with GPT Deploy.
|
||||
In this section you can get a feeling for the kind of microservices that can be generated with Dev-GPT.
|
||||
|
||||
### Compliment Generator
|
||||
```bash
|
||||
gptdeploy generate \
|
||||
dev-gpt generate \
|
||||
--description "The user writes something and gets a related deep compliment." \
|
||||
--model gpt-4
|
||||
```
|
||||
@@ -110,7 +111,7 @@ gptdeploy generate \
|
||||
|
||||
### Extract and summarize news articles given a URL
|
||||
```bash
|
||||
gptdeploy generate \
|
||||
dev-gpt generate \
|
||||
--description "Extract text from a news article URL using Newspaper3k library and generate a summary using gpt. Example input: http://fox13now.com/2013/12/30/new-year-new-laws-obamacare-pot-guns-and-drones/" \
|
||||
--model gpt-4
|
||||
```
|
||||
@@ -118,7 +119,7 @@ gptdeploy generate \
|
||||
|
||||
### Chemical Formula Visualization
|
||||
```bash
|
||||
gptdeploy generate \
|
||||
dev-gpt generate \
|
||||
--description "Convert a chemical formula into a 2D chemical structure diagram. Example inputs: C=C, CN=C=O, CCC(=O)O" \
|
||||
--model gpt-4
|
||||
```
|
||||
@@ -126,7 +127,7 @@ gptdeploy generate \
|
||||
|
||||
### 2d rendering of 3d model
|
||||
```bash
|
||||
gptdeploy generate \
|
||||
dev-gpt generate \
|
||||
--description "create a 2d rendering of a whole 3d object and x,y,z object rotation using trimesh and pyrender.OffscreenRenderer with os.environ['PYOPENGL_PLATFORM'] = 'egl' and freeglut3-dev library - example input: https://graphics.stanford.edu/courses/cs148-10-summer/as3/code/as3/teapot.obj" \
|
||||
--model gpt-4
|
||||
```
|
||||
@@ -134,7 +135,7 @@ gptdeploy generate \
|
||||
|
||||
### Product Recommendation
|
||||
```bash
|
||||
gptdeploy generate \
|
||||
dev-gpt generate \
|
||||
--description "Generate personalized product recommendations based on user product browsing history and the product categories fashion, electronics and sport. Example: Input: browsing history: prod1(electronics),prod2(fashion),prod3(fashion), output: p4(fashion)" \
|
||||
--model gpt-4
|
||||
```
|
||||
@@ -142,7 +143,7 @@ gptdeploy generate \
|
||||
|
||||
### Hacker News Search
|
||||
```bash
|
||||
gptdeploy generate \
|
||||
dev-gpt generate \
|
||||
--description "Given a search query, find articles on hacker news using the hacker news api and return a list of (title, author, website_link, first_image_on_the_website)" \
|
||||
--model gpt-4
|
||||
````
|
||||
@@ -151,7 +152,7 @@ gptdeploy generate \
|
||||
### Animal Detector
|
||||
```bash
|
||||
|
||||
gptdeploy generate \
|
||||
dev-gpt generate \
|
||||
--description "Given an image, return the image with bounding boxes of all animals (https://pjreddie.com/media/files/yolov3.weights, https://raw.githubusercontent.com/pjreddie/darknet/master/cfg/yolov3.cfg), Example input: https://images.unsplash.com/photo-1444212477490-ca407925329e" \
|
||||
--model gpt-4
|
||||
```
|
||||
@@ -159,15 +160,15 @@ gptdeploy generate \
|
||||
|
||||
### Meme Generator
|
||||
```bash
|
||||
gptdeploy generate \
|
||||
--description "Generate a meme from an image and a caption. Example input: https://media.wired.com/photos/5f87340d114b38fa1f8339f9/master/w_1600%2Cc_limit/Ideas_Surprised_Pikachu_HD.jpg, TOP:When you discovered GPTDeploy" \
|
||||
dev-gpt generate \
|
||||
--description "Generate a meme from an image and a caption. Example input: https://media.wired.com/photos/5f87340d114b38fa1f8339f9/master/w_1600%2Cc_limit/Ideas_Surprised_Pikachu_HD.jpg, TOP:When you discovered GPT Dev" \
|
||||
--model gpt-4
|
||||
```
|
||||
<img src="res/meme_example.png" alt="Meme Generator" width="400" />
|
||||
|
||||
### Rhyme Generator
|
||||
```bash
|
||||
gptdeploy generate \
|
||||
dev-gpt generate \
|
||||
--description "Given a word, return a list of rhyming words using the datamuse api" \
|
||||
--model gpt-4
|
||||
```
|
||||
@@ -175,7 +176,7 @@ gptdeploy generate \
|
||||
|
||||
### Word Cloud Generator
|
||||
```bash
|
||||
gptdeploy generate \
|
||||
dev-gpt generate \
|
||||
--description "Generate a word cloud from a given text" \
|
||||
--model gpt-4
|
||||
```
|
||||
@@ -183,7 +184,7 @@ gptdeploy generate \
|
||||
|
||||
### 3d model info
|
||||
```bash
|
||||
gptdeploy generate \
|
||||
dev-gpt generate \
|
||||
--description "Given a 3d object, return vertex count and face count. Example: https://raw.githubusercontent.com/polygonjs/polygonjs-assets/master/models/wolf.obj" \
|
||||
--model gpt-4
|
||||
```
|
||||
@@ -191,7 +192,7 @@ gptdeploy generate \
|
||||
|
||||
### Table extraction
|
||||
```bash
|
||||
gptdeploy generate \
|
||||
dev-gpt generate \
|
||||
--description "Given a URL, extract all tables as csv. Example: http://www.ins.tn/statistiques/90" \
|
||||
--model gpt-4
|
||||
```
|
||||
@@ -199,7 +200,7 @@ gptdeploy generate \
|
||||
|
||||
### Audio to mel spectrogram
|
||||
```bash
|
||||
gptdeploy generate \
|
||||
dev-gpt generate \
|
||||
--description "Create mel spectrogram from audio file. Example: https://cdn.pixabay.com/download/audio/2023/02/28/audio_550d815fa5.mp3" \
|
||||
--model gpt-4
|
||||
```
|
||||
@@ -207,7 +208,7 @@ gptdeploy generate \
|
||||
|
||||
### Text to speech
|
||||
```bash
|
||||
gptdeploy generate \
|
||||
dev-gpt generate \
|
||||
--description "Convert text to speech" \
|
||||
--model gpt-4
|
||||
```
|
||||
@@ -220,7 +221,7 @@ gptdeploy generate \
|
||||
|
||||
### Heatmap Generator
|
||||
```bash
|
||||
gptdeploy generate \
|
||||
dev-gpt generate \
|
||||
--description "Create a heatmap from an image and a list of relative coordinates. Example input: https://images.unsplash.com/photo-1574786198875-49f5d09fe2d2, [[0.1, 0.2], [0.3, 0.4], [0.5, 0.6], [0.2, 0.1], [0.7, 0.2], [0.4, 0.2]]" \
|
||||
--model gpt-4
|
||||
```
|
||||
@@ -228,7 +229,7 @@ gptdeploy generate \
|
||||
|
||||
### QR Code Generator
|
||||
```bash
|
||||
gptdeploy generate \
|
||||
dev-gpt generate \
|
||||
--description "Generate QR code from URL. Example input: https://www.example.com" \
|
||||
--model gpt-4
|
||||
```
|
||||
@@ -237,7 +238,7 @@ gptdeploy generate \
|
||||
### Mandelbrot Set Visualizer
|
||||
|
||||
```bash
|
||||
gptdeploy generate \
|
||||
dev-gpt generate \
|
||||
--description "Visualize the Mandelbrot set with custom parameters. Example input: center=-0+1i, zoom=1.0, size=800x800, iterations=1000" \
|
||||
--model gpt-4
|
||||
```
|
||||
@@ -247,7 +248,7 @@ gptdeploy generate \
|
||||
### Markdown to HTML Converter
|
||||
|
||||
```bash
|
||||
gptdeploy generate --description "Convert markdown to HTML"
|
||||
dev-gpt generate --description "Convert markdown to HTML"
|
||||
```
|
||||
|
||||
<img src="res/markdown_to_html_example.png" alt="Markdown to HTML Converter" width="400" />
|
||||
@@ -261,7 +262,7 @@ gptdeploy generate --description "Convert markdown to HTML"
|
||||
|
||||
[//]: # (```bash)
|
||||
|
||||
[//]: # (gptdeploy generate --description "Given a password, return a score from 1 to 10 indicating the strength of the password" --test "Pa$$w0rd => 1/5, !Akfdh%.ytRadf => 5/5")
|
||||
[//]: # (dev-gpt generate --description "Given a password, return a score from 1 to 10 indicating the strength of the password" --test "Pa$$w0rd => 1/5, !Akfdh%.ytRadf => 5/5")
|
||||
|
||||
[//]: # (```)
|
||||
|
||||
@@ -269,7 +270,7 @@ gptdeploy generate --description "Convert markdown to HTML"
|
||||
|
||||
[//]: # (```bash)
|
||||
|
||||
[//]: # (gptdeploy generate --description "Convert text to morse code" --test "Hello, welcome to GPT Deploy!")
|
||||
[//]: # (dev-gpt generate --description "Convert text to morse code" --test "Hello, welcome to GPT Dev!")
|
||||
|
||||
[//]: # (```)
|
||||
|
||||
@@ -277,7 +278,7 @@ gptdeploy generate --description "Convert markdown to HTML"
|
||||
|
||||
[//]: # (```bash)
|
||||
|
||||
[//]: # (gptdeploy generate --description "Given an IP address, return the geolocation information" --test "142.251.46.174")
|
||||
[//]: # (dev-gpt generate --description "Given an IP address, return the geolocation information" --test "142.251.46.174")
|
||||
|
||||
[//]: # (```)
|
||||
|
||||
@@ -285,7 +286,7 @@ gptdeploy generate --description "Convert markdown to HTML"
|
||||
|
||||
[//]: # (```bash)
|
||||
|
||||
[//]: # (gptdeploy generate --description "Converts any currency into any other" --test "1 usd to eur")
|
||||
[//]: # (dev-gpt generate --description "Converts any currency into any other" --test "1 usd to eur")
|
||||
|
||||
[//]: # (```)
|
||||
|
||||
@@ -293,7 +294,7 @@ gptdeploy generate --description "Convert markdown to HTML"
|
||||
|
||||
[//]: # (```bash)
|
||||
|
||||
[//]: # (gptdeploy generate --description "Given an image, resize it to a specified width and height" --test "https://images.unsplash.com/photo-1602738328654-51ab2ae6c4ff")
|
||||
[//]: # (dev-gpt generate --description "Given an image, resize it to a specified width and height" --test "https://images.unsplash.com/photo-1602738328654-51ab2ae6c4ff")
|
||||
|
||||
[//]: # (```)
|
||||
|
||||
@@ -301,7 +302,7 @@ gptdeploy generate --description "Convert markdown to HTML"
|
||||
|
||||
[//]: # (```bash)
|
||||
|
||||
[//]: # (gptdeploy generate --description "Given a city, return the current weather" --test "Berlin")
|
||||
[//]: # (dev-gpt generate --description "Given a city, return the current weather" --test "Berlin")
|
||||
|
||||
[//]: # (```)
|
||||
|
||||
@@ -310,7 +311,7 @@ gptdeploy generate --description "Convert markdown to HTML"
|
||||
|
||||
[//]: # (```bash)
|
||||
|
||||
[//]: # (gptdeploy generate --description "Given a sudoku puzzle, return the solution" --test "[[2, 5, 0, 0, 3, 0, 9, 0, 1], [0, 1, 0, 0, 0, 4, 0, 0, 0], [4, 0, 7, 0, 0, 0, 2, 0, 8], [0, 0, 5, 2, 0, 0, 0, 0, 0], [0, 0, 0, 0, 9, 8, 1, 0, 0], [0, 4, 0, 0, 0, 3, 0, 0, 0], [0, 0, 0, 3, 6, 0, 0, 7, 2], [0, 7, 0, 0, 0, 0, 0, 0, 3], [9, 0, 3, 0, 0, 0, 6, 0, 4]]")
|
||||
[//]: # (dev-gpt generate --description "Given a sudoku puzzle, return the solution" --test "[[2, 5, 0, 0, 3, 0, 9, 0, 1], [0, 1, 0, 0, 0, 4, 0, 0, 0], [4, 0, 7, 0, 0, 0, 2, 0, 8], [0, 0, 5, 2, 0, 0, 0, 0, 0], [0, 0, 0, 0, 9, 8, 1, 0, 0], [0, 4, 0, 0, 0, 3, 0, 0, 0], [0, 0, 0, 3, 6, 0, 0, 7, 2], [0, 7, 0, 0, 0, 0, 0, 0, 3], [9, 0, 3, 0, 0, 0, 6, 0, 4]]")
|
||||
|
||||
[//]: # (```)
|
||||
|
||||
@@ -319,7 +320,7 @@ gptdeploy generate --description "Convert markdown to HTML"
|
||||
|
||||
[//]: # (```bash)
|
||||
|
||||
[//]: # (gptdeploy generate --description "Estimate a company's carbon footprint based on factors like transportation, electricity usage, waste production etc..." --test "Jina AI")
|
||||
[//]: # (dev-gpt generate --description "Estimate a company's carbon footprint based on factors like transportation, electricity usage, waste production etc..." --test "Jina AI")
|
||||
|
||||
[//]: # (```)
|
||||
|
||||
@@ -328,7 +329,7 @@ gptdeploy generate --description "Convert markdown to HTML"
|
||||
|
||||
[//]: # (```bash)
|
||||
|
||||
[//]: # (gptdeploy generate --description "Create a microservice that estimates the value of a property based on factors like location, property type, age, and square footage." --test "Berlin Friedrichshain, Flat, 100m², 10 years old")
|
||||
[//]: # (dev-gpt generate --description "Create a microservice that estimates the value of a property based on factors like location, property type, age, and square footage." --test "Berlin Friedrichshain, Flat, 100m², 10 years old")
|
||||
|
||||
[//]: # (```)
|
||||
|
||||
@@ -337,7 +338,7 @@ gptdeploy generate --description "Convert markdown to HTML"
|
||||
|
||||
[//]: # (```bash)
|
||||
|
||||
[//]: # (gptdeploy generate --description "Align two DNA or RNA sequences using the Needleman-Wunsch algorithm" --test "AGTC, GTCA")
|
||||
[//]: # (dev-gpt generate --description "Align two DNA or RNA sequences using the Needleman-Wunsch algorithm" --test "AGTC, GTCA")
|
||||
|
||||
[//]: # (```)
|
||||
|
||||
@@ -346,7 +347,7 @@ gptdeploy generate --description "Convert markdown to HTML"
|
||||
|
||||
[//]: # (```bash)
|
||||
|
||||
[//]: # (gptdeploy generate --description "Generate a barcode from a string" --test "Hello, welcome to GPT Deploy!")
|
||||
[//]: # (dev-gpt generate --description "Generate a barcode from a string" --test "Hello, welcome to Dev-GPT!")
|
||||
|
||||
[//]: # (```)
|
||||
|
||||
@@ -355,7 +356,7 @@ gptdeploy generate --description "Convert markdown to HTML"
|
||||
|
||||
[//]: # (```bash)
|
||||
|
||||
[//]: # (gptdeploy generate --description "Compress a file using the gzip algorithm" --test "content of the file: Hello, welcome to GPT Deploy!")
|
||||
[//]: # (dev-gpt generate --description "Compress a file using the gzip algorithm" --test "content of the file: Hello, welcome to Dev-GPT!")
|
||||
|
||||
[//]: # (```)
|
||||
|
||||
@@ -364,7 +365,7 @@ gptdeploy generate --description "Convert markdown to HTML"
|
||||
|
||||
[//]: # (```bash)
|
||||
|
||||
[//]: # (gptdeploy generate --description "Add a watermark (GPT Deploy) to an image" --test "https://images.unsplash.com/photo-1602738328654-51ab2ae6c4ff")
|
||||
[//]: # (dev-gpt generate --description "Add a watermark (Dev-GPT) to an image" --test "https://images.unsplash.com/photo-1602738328654-51ab2ae6c4ff")
|
||||
|
||||
[//]: # (```)
|
||||
|
||||
@@ -373,7 +374,7 @@ gptdeploy generate --description "Convert markdown to HTML"
|
||||
|
||||
[//]: # (```bash)
|
||||
|
||||
[//]: # (gptdeploy generate --description "Extract metadata from a file" --test "https://images.unsplash.com/photo-1602738328654-51ab2ae6c4ff")
|
||||
[//]: # (dev-gpt generate --description "Extract metadata from a file" --test "https://images.unsplash.com/photo-1602738328654-51ab2ae6c4ff")
|
||||
|
||||
[//]: # (```)
|
||||
|
||||
@@ -382,7 +383,7 @@ gptdeploy generate --description "Convert markdown to HTML"
|
||||
|
||||
[//]: # (```bash)
|
||||
|
||||
[//]: # (gptdeploy generate --description "Extract a thumbnail from a video" --test "http://techslides.com/demos/sample-videos/small.mp4")
|
||||
[//]: # (dev-gpt generate --description "Extract a thumbnail from a video" --test "http://techslides.com/demos/sample-videos/small.mp4")
|
||||
|
||||
[//]: # (```)
|
||||
|
||||
@@ -391,7 +392,7 @@ gptdeploy generate --description "Convert markdown to HTML"
|
||||
|
||||
[//]: # (```bash)
|
||||
|
||||
[//]: # (gptdeploy generate --description "Create a gif from a list of images" --test "https://images.unsplash.com/photo-1564725075388-cc8338732289, https://images.unsplash.com/photo-1584555684040-bad07f46a21f, https://images.unsplash.com/photo-1584555613497-9ecf9dd06f68")
|
||||
[//]: # (dev-gpt generate --description "Create a gif from a list of images" --test "https://images.unsplash.com/photo-1564725075388-cc8338732289, https://images.unsplash.com/photo-1584555684040-bad07f46a21f, https://images.unsplash.com/photo-1584555613497-9ecf9dd06f68")
|
||||
|
||||
[//]: # (```)
|
||||
|
||||
@@ -404,7 +405,7 @@ gptdeploy generate --description "Convert markdown to HTML"
|
||||
[//]: # ()
|
||||
[//]: # (```bash)
|
||||
|
||||
[//]: # (gptdeploy generate --description "Visualize a sound file and output the visualization as video combined with the sound" --test "some/mp3/file.mp3")
|
||||
[//]: # (dev-gpt generate --description "Visualize a sound file and output the visualization as video combined with the sound" --test "some/mp3/file.mp3")
|
||||
|
||||
[//]: # (```)
|
||||
|
||||
@@ -414,7 +415,7 @@ gptdeploy generate --description "Convert markdown to HTML"
|
||||
|
||||
[//]: # (```bash)
|
||||
|
||||
[//]: # (gptdeploy generate --description "creates aesthetically pleasing color palettes based on a seed color, using color theory principles like complementary or analogous colors" --test "red")
|
||||
[//]: # (dev-gpt generate --description "creates aesthetically pleasing color palettes based on a seed color, using color theory principles like complementary or analogous colors" --test "red")
|
||||
|
||||
[//]: # (```)
|
||||
|
||||
@@ -423,7 +424,7 @@ gptdeploy generate --description "Convert markdown to HTML"
|
||||
|
||||
[//]: # (```bash)
|
||||
|
||||
[//]: # (gptdeploy generate --description "Generate a depth map from a 3d Object" --test "https://raw.githubusercontent.com/polygonjs/polygonjs-assets/master/models/wolf.obj")
|
||||
[//]: # (dev-gpt generate --description "Generate a depth map from a 3d Object" --test "https://raw.githubusercontent.com/polygonjs/polygonjs-assets/master/models/wolf.obj")
|
||||
|
||||
[//]: # (```)
|
||||
|
||||
@@ -435,7 +436,7 @@ gptdeploy generate --description "Convert markdown to HTML"
|
||||
|
||||
[//]: # (```bash)
|
||||
|
||||
[//]: # (gptdeploy generate --description "Convert image to ASCII art" --test "https://images.unsplash.com/photo-1602738328654-51ab2ae6c4ff")
|
||||
[//]: # (dev-gpt generate --description "Convert image to ASCII art" --test "https://images.unsplash.com/photo-1602738328654-51ab2ae6c4ff")
|
||||
|
||||
[//]: # (```)
|
||||
|
||||
@@ -478,14 +479,14 @@ graph TB
|
||||
|
||||
```
|
||||
|
||||
1. GPT Deploy identifies several strategies to implement your task.
|
||||
1. Dev-GPT identifies several strategies to implement your task.
|
||||
2. It tests each strategy until it finds one that works.
|
||||
3. For each strategy, it generates the following files:
|
||||
- microservice.py: This is the main implementation of the microservice.
|
||||
- test_microservice.py: These are test cases to ensure the microservice works as expected.
|
||||
- requirements.txt: This file lists the packages needed by the microservice and its tests.
|
||||
- Dockerfile: This file is used to run the microservice in a container and also runs the tests when building the image.
|
||||
4. GPT Deploy attempts to build the image. If the build fails, it uses the error message to apply a fix and tries again to build the image.
|
||||
4. Dev-GPT attempts to build the image. If the build fails, it uses the error message to apply a fix and tries again to build the image.
|
||||
5. Once it finds a successful strategy, it:
|
||||
- Pushes the Docker image to the registry.
|
||||
- Deploys the microservice.
|
||||
@@ -509,7 +510,7 @@ next steps:
|
||||
|
||||
Nice to have:
|
||||
- [ ] smooth rendering animation of the responses
|
||||
- [ ] if the user runs gptdeploy without any arguments, show the help message
|
||||
- [ ] if the user runs dev-gpt without any arguments, show the help message
|
||||
- [ ] don't show this message:
|
||||
🔐 You are logged in to Jina AI as florian.hoenicke (username:auth0-unified-448f11965ce142b6).
|
||||
To log out, use jina auth logout.
|
||||
@@ -528,9 +529,9 @@ Make sure it is only printed twice in case it changed.
|
||||
- [ ] allow to update your microservice by providing feedback
|
||||
- [ ] support for other large language models like Open Assistent
|
||||
- [ ] for cost savings, it should be possible to insert less context during the code generation of the main functionality - no jina knowledge is required
|
||||
- [ ] use gptdeploy list to show all deployments
|
||||
- [ ] gptdeploy delete to delete a deployment
|
||||
- [ ] gptdeploy update to update a deployment
|
||||
- [ ] use dev-gpt list to show all deployments
|
||||
- [ ] dev-gpt delete to delete a deployment
|
||||
- [ ] dev-gpt update to update a deployment
|
||||
- [ ] test param optional - in case the test param is not there first ask gpt if more information is required to write a test - like access to pdf data
|
||||
- [ ] section for microservices built by the community
|
||||
- [ ] test feedback for playground generation (could be part of the debugging)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from src import main
|
||||
from dev_gpt import main
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
3
dev_gpt/__init__.py
Normal file
3
dev_gpt/__init__.py
Normal file
@@ -0,0 +1,3 @@
|
||||
__version__ = '0.18.35'
|
||||
|
||||
from dev_gpt.cli import main
|
||||
@@ -14,17 +14,17 @@ from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler
|
||||
from requests.exceptions import ConnectionError, ChunkedEncodingError
|
||||
from urllib3.exceptions import InvalidChunkLength
|
||||
|
||||
from src.constants import PRICING_GPT4_PROMPT, PRICING_GPT4_GENERATION, PRICING_GPT3_5_TURBO_PROMPT, \
|
||||
from dev_gpt.constants import PRICING_GPT4_PROMPT, PRICING_GPT4_GENERATION, PRICING_GPT3_5_TURBO_PROMPT, \
|
||||
PRICING_GPT3_5_TURBO_GENERATION, CHARS_PER_TOKEN
|
||||
from src.options.generate.templates_system import template_system_message_base
|
||||
from src.utils.string_tools import print_colored
|
||||
from dev_gpt.options.generate.templates_system import template_system_message_base
|
||||
from dev_gpt.utils.string_tools import print_colored
|
||||
|
||||
|
||||
def configure_openai_api_key():
|
||||
if 'OPENAI_API_KEY' not in os.environ:
|
||||
print_colored('You need to set OPENAI_API_KEY in your environment.', '''
|
||||
Run:
|
||||
gptdeploy configure --key <your_openai_api_key>
|
||||
dev-gpt configure --key <your_openai_api_key>
|
||||
|
||||
If you have updated it already, please restart your terminal.
|
||||
''', 'red')
|
||||
@@ -16,9 +16,9 @@ from hubble.executor.helper import upload_file, archive_package, get_full_versio
|
||||
from jcloud.flow import CloudFlow
|
||||
from jina import Flow
|
||||
|
||||
from src.constants import DEMO_TOKEN
|
||||
from src.utils.io import suppress_stdout, is_docker_running
|
||||
from src.utils.string_tools import print_colored
|
||||
from dev_gpt.constants import DEMO_TOKEN
|
||||
from dev_gpt.utils.io import suppress_stdout, is_docker_running
|
||||
from dev_gpt.utils.string_tools import print_colored
|
||||
|
||||
|
||||
def wait_until_app_is_ready(url):
|
||||
@@ -42,7 +42,7 @@ def open_streamlit_app(host: str):
|
||||
|
||||
def redirect_callback(href):
|
||||
print(
|
||||
f'You need login to Jina first to use GPTDeploy\n'
|
||||
f'You need login to Jina first to use Dev GPT\n'
|
||||
f'Please open this link if it does not open automatically in your browser: {href}'
|
||||
)
|
||||
webbrowser.open(href, new=0, autoraise=True)
|
||||
@@ -52,10 +52,10 @@ def jina_auth_login():
|
||||
try:
|
||||
hubble.Client(jsonify=True).get_user_info(log_error=False)
|
||||
except hubble.AuthenticationRequiredError:
|
||||
print('You need login to Jina first to use GPTDeploy')
|
||||
print('You need login to Jina first to use dev-gpt')
|
||||
print_colored('', '''
|
||||
If you just created an account, it can happen that the login callback is not working.
|
||||
In this case, please cancel this run, rerun your gptdeploy command and login into your account again.
|
||||
In this case, please cancel this run, rerun your dev-gpt command and login into your account again.
|
||||
''', 'green'
|
||||
)
|
||||
hubble.login(prompt='login', redirect_callback=redirect_callback)
|
||||
@@ -166,9 +166,9 @@ def deploy_on_jcloud(executor_name, microservice_path):
|
||||
raise SystemExit(f'''
|
||||
Looks like you either ran out of credits or something went wrong in the generation and we didn't catch it.
|
||||
To check if you ran out of credits, please go to https://cloud.jina.ai.
|
||||
If you have credits left, please create an issue here https://github.com/jina-ai/gptdeploy/issues/new/choose
|
||||
If you have credits left, please create an issue here https://github.com/jina-ai/dev-gpt/issues/new/choose
|
||||
and add details on the microservice you are trying to create.
|
||||
In that case, you can upgrade your GPT Deploy version, if not using latest, and try again.
|
||||
In that case, you can upgrade your Dev-GPT version, if not using latest, and try again.
|
||||
''') from e
|
||||
if i == 2:
|
||||
raise Exception('''
|
||||
@@ -200,7 +200,7 @@ It might be important to run your microservice within a docker container.
|
||||
Your machine might not have all the dependencies installed.
|
||||
You have 3 options:
|
||||
a) start the docker daemon
|
||||
b) run gptdeploy deploy... to deploy your microservice on Jina Cloud. All dependencies will be installed there.
|
||||
b) run dev-gpt deploy... to deploy your microservice on Jina Cloud. All dependencies will be installed there.
|
||||
c) try to run your microservice locally without docker. It is worth a try but might fail.
|
||||
'''
|
||||
)
|
||||
@@ -242,7 +242,7 @@ jcloud:
|
||||
version: 3.15.1.dev14
|
||||
labels:
|
||||
creator: microchain
|
||||
name: gptdeploy
|
||||
name: dev-gpt
|
||||
gateway:
|
||||
{f"uses: {prefix}://{get_user_name(DEMO_TOKEN)}/Gateway{executor_name}:latest" if use_custom_gateway else ""}
|
||||
{"" if use_docker else "install-requirements: True"}
|
||||
@@ -1,12 +1,12 @@
|
||||
from src import env # noqa: F401 to make sure certain environment variables are set
|
||||
from dev_gpt import env # noqa: F401 to make sure certain environment variables are set
|
||||
import functools
|
||||
import os
|
||||
|
||||
import click
|
||||
|
||||
from src.apis.gpt import configure_openai_api_key
|
||||
from src.apis.jina_cloud import jina_auth_login
|
||||
from src.options.configure.key_handling import set_api_key
|
||||
from dev_gpt.apis.gpt import configure_openai_api_key
|
||||
from dev_gpt.apis.jina_cloud import jina_auth_login
|
||||
from dev_gpt.options.configure.key_handling import set_api_key
|
||||
|
||||
def openai_api_key_needed(func):
|
||||
def wrapper(*args, **kwargs):
|
||||
@@ -25,7 +25,7 @@ def exception_interceptor(func):
|
||||
|
||||
😱😱😱 Sorry for this experience.
|
||||
Could you please report an issue about this on our github repo? We'll try to fix it asap.
|
||||
https://github.com/jina-ai/gptdeploy/issues/new
|
||||
https://github.com/jina-ai/dev-gpt/issues/new
|
||||
''') from e
|
||||
return wrapper
|
||||
|
||||
@@ -68,7 +68,7 @@ def generate(
|
||||
click.echo(f"Error: The path {path} you provided via --path is not empty. Please choose a directory that does not exist or is empty.")
|
||||
return
|
||||
|
||||
from src.options.generate.generator import Generator
|
||||
from dev_gpt.options.generate.generator import Generator
|
||||
generator = Generator(description, path=path, model=model)
|
||||
generator.generate()
|
||||
|
||||
@@ -76,7 +76,7 @@ def generate(
|
||||
@main.command()
|
||||
@path_param
|
||||
def run(path):
|
||||
from src.options.run import Runner
|
||||
from dev_gpt.options.run import Runner
|
||||
path = os.path.expanduser(path)
|
||||
path = os.path.abspath(path)
|
||||
Runner().run(path)
|
||||
@@ -86,7 +86,7 @@ def run(path):
|
||||
@path_param
|
||||
def deploy(path):
|
||||
jina_auth_login()
|
||||
from src.options.deploy.deployer import Deployer
|
||||
from dev_gpt.options.deploy.deployer import Deployer
|
||||
path = os.path.expanduser(path)
|
||||
path = os.path.abspath(path)
|
||||
Deployer().deploy(path)
|
||||
@@ -1,6 +1,6 @@
|
||||
import os
|
||||
|
||||
from src.constants import REQUIREMENTS_FILE_NAME, DOCKER_FILE_NAME, IMPLEMENTATION_FILE_NAME, TEST_EXECUTOR_FILE_NAME
|
||||
from dev_gpt.constants import REQUIREMENTS_FILE_NAME, DOCKER_FILE_NAME, IMPLEMENTATION_FILE_NAME, TEST_EXECUTOR_FILE_NAME
|
||||
|
||||
|
||||
def list_dirs_no_hidden(path):
|
||||
@@ -41,7 +41,7 @@ def validate_folder_is_correct(microservice_path):
|
||||
if not os.path.isdir(microservice_path):
|
||||
raise ValueError(f'Path {microservice_path} is not a directory')
|
||||
if len(list_dirs_no_hidden(microservice_path)) == 0:
|
||||
raise ValueError(f'Path {microservice_path} is empty. Please generate a microservice first. Type `gptdeploy generate` for further instructions.')
|
||||
raise ValueError(f'Path {microservice_path} is empty. Please generate a microservice first. Type `dev-gpt generate` for further instructions.')
|
||||
if len(list_dirs_no_hidden(microservice_path)) > 1:
|
||||
raise ValueError(f'Path {microservice_path} needs to contain only one folder. Please make sure that you only have one microservice in this folder.')
|
||||
latest_version_path = get_latest_version_path(microservice_path)
|
||||
@@ -1,5 +1,5 @@
|
||||
from src.apis.jina_cloud import deploy_on_jcloud
|
||||
from src.options import validate_folder_is_correct, get_executor_name, get_latest_version_path
|
||||
from dev_gpt.apis.jina_cloud import deploy_on_jcloud
|
||||
from dev_gpt.options import validate_folder_is_correct, get_executor_name, get_latest_version_path
|
||||
|
||||
|
||||
class Deployer:
|
||||
@@ -10,16 +10,16 @@ from langchain import PromptTemplate
|
||||
from langchain.schema import SystemMessage, HumanMessage, AIMessage
|
||||
from pydantic.dataclasses import dataclass
|
||||
|
||||
from src.apis import gpt
|
||||
from src.apis.gpt import _GPTConversation
|
||||
from src.apis.jina_cloud import process_error_message, push_executor, is_executor_in_hub
|
||||
from src.apis.pypi import is_package_on_pypi, get_latest_package_version, clean_requirements_txt
|
||||
from src.constants import FILE_AND_TAG_PAIRS, NUM_IMPLEMENTATION_STRATEGIES, MAX_DEBUGGING_ITERATIONS, \
|
||||
from dev_gpt.apis import gpt
|
||||
from dev_gpt.apis.gpt import _GPTConversation
|
||||
from dev_gpt.apis.jina_cloud import process_error_message, push_executor, is_executor_in_hub
|
||||
from dev_gpt.apis.pypi import is_package_on_pypi, get_latest_package_version, clean_requirements_txt
|
||||
from dev_gpt.constants import FILE_AND_TAG_PAIRS, NUM_IMPLEMENTATION_STRATEGIES, MAX_DEBUGGING_ITERATIONS, \
|
||||
BLACKLISTED_PACKAGES, EXECUTOR_FILE_NAME, TEST_EXECUTOR_FILE_NAME, TEST_EXECUTOR_FILE_TAG, \
|
||||
REQUIREMENTS_FILE_NAME, REQUIREMENTS_FILE_TAG, DOCKER_FILE_NAME, IMPLEMENTATION_FILE_NAME, \
|
||||
IMPLEMENTATION_FILE_TAG, LANGUAGE_PACKAGES, UNNECESSARY_PACKAGES, DOCKER_BASE_IMAGE_VERSION
|
||||
from src.options.generate.templates_system import system_task_iteration, system_task_introduction, system_test_iteration
|
||||
from src.options.generate.templates_user import template_generate_microservice_name, \
|
||||
IMPLEMENTATION_FILE_TAG, LANGUAGE_PACKAGES, UNNECESSARY_PACKAGES
|
||||
from dev_gpt.options.generate.templates_system import system_task_iteration, system_task_introduction, system_test_iteration
|
||||
from dev_gpt.options.generate.templates_user import template_generate_microservice_name, \
|
||||
template_generate_possible_packages, \
|
||||
template_solve_code_issue, \
|
||||
template_solve_pip_dependency_issue, template_is_dependency_issue, template_generate_playground, \
|
||||
@@ -27,9 +27,9 @@ from src.options.generate.templates_user import template_generate_microservice_n
|
||||
template_chain_of_thought, template_summarize_error, \
|
||||
template_solve_apt_get_dependency_issue, template_pm_task_iteration, \
|
||||
template_pm_test_iteration
|
||||
from src.options.generate.ui import get_random_employee
|
||||
from src.utils.io import persist_file, get_all_microservice_files_with_content, get_microservice_path
|
||||
from src.utils.string_tools import print_colored
|
||||
from dev_gpt.options.generate.ui import get_random_employee
|
||||
from dev_gpt.utils.io import persist_file, get_all_microservice_files_with_content, get_microservice_path
|
||||
from dev_gpt.utils.string_tools import print_colored
|
||||
|
||||
|
||||
@dataclass
|
||||
@@ -148,7 +148,7 @@ metas:
|
||||
|
||||
with open(os.path.join(os.path.dirname(__file__), 'static_files', 'microservice', 'jina_wrapper.py'), 'r', encoding='utf-8') as f:
|
||||
microservice_executor_boilerplate = f.read()
|
||||
microservice_executor_code = microservice_executor_boilerplate.replace('class GPTDeployExecutor(Executor):',
|
||||
microservice_executor_code = microservice_executor_boilerplate.replace('class Dev-GPTExecutor(Executor):',
|
||||
f'class {microservice_name}(Executor):')
|
||||
persist_file(microservice_executor_code, os.path.join(MICROSERVICE_FOLDER_v1, EXECUTOR_FILE_NAME))
|
||||
|
||||
@@ -194,7 +194,7 @@ metas:
|
||||
tag_name=REQUIREMENTS_FILE_TAG,
|
||||
)[REQUIREMENTS_FILE_NAME]
|
||||
|
||||
# I deactivated this because 3.5-turbo was halucinating packages that were not needed
|
||||
# I deactivated this because 3.5-turbo was hallucinating packages that were not needed
|
||||
# now, in the first iteration the default dockerfile is used
|
||||
# self.generate_and_persist_file(
|
||||
# section_title='Generate Dockerfile',
|
||||
@@ -449,8 +449,8 @@ pytest
|
||||
continue
|
||||
print(f'''
|
||||
You can now run or deploy your microservice:
|
||||
gptdeploy run --path {self.microservice_root_path}
|
||||
gptdeploy deploy --path {self.microservice_root_path}
|
||||
dev-gpt run --path {self.microservice_root_path}
|
||||
dev-gpt deploy --path {self.microservice_root_path}
|
||||
'''
|
||||
)
|
||||
return 0
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM jinaai/gpt-dev:{{DOCKER_BASE_IMAGE_VERSION}}
|
||||
FROM jinaai/dev-gpt:{{DOCKER_BASE_IMAGE_VERSION}}
|
||||
|
||||
RUN apt-get install --no-install-recommends -y {{APT_GET_PACKAGES}}
|
||||
|
||||
@@ -4,7 +4,7 @@ import json
|
||||
from .microservice import func
|
||||
|
||||
|
||||
class GPTDeployExecutor(Executor):
|
||||
class DevGPTExecutor(Executor):
|
||||
def __init__(self, **kwargs):
|
||||
super().__init__(**kwargs)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from src.options.generate.templates_user import not_allowed_docker_string, not_allowed_function_string
|
||||
from dev_gpt.options.generate.templates_user import not_allowed_docker_string, not_allowed_function_string
|
||||
|
||||
|
||||
template_system_message_base = f'''It is September 2021.
|
||||
@@ -1,6 +1,6 @@
|
||||
from langchain import PromptTemplate
|
||||
|
||||
from src.constants import IMPLEMENTATION_FILE_NAME
|
||||
from dev_gpt.constants import IMPLEMENTATION_FILE_NAME
|
||||
|
||||
general_guidelines_string = '''The code you write is production ready. Every file starts with comments describing what the code is doing before the first import. Comments can only be written within code blocks.
|
||||
Then all imports are listed.
|
||||
@@ -345,7 +345,7 @@ The playground must look like it was made by a professional designer.
|
||||
All the ui elements are well thought out to make them visually appealing and easy to use.
|
||||
Don't mention the word Playground in the title.
|
||||
The playground contains many emojis that fit the theme of the playground and has an emoji as favicon.
|
||||
The playground encourages the user to deploy their own microservice by clicking on this link: https://github.com/jina-ai/gptdeploy
|
||||
The playground encourages the user to deploy their own microservice by clicking on this link: https://github.com/jina-ai/dev-gpt
|
||||
The playground uses the following code to send a request to the microservice:
|
||||
```
|
||||
from jina import Client, Document, DocumentArray
|
||||
@@ -359,7 +359,7 @@ The playground displays a code block containing the microservice specific curl c
|
||||
While the exact payload in the curl might change, the host and deployment ID always stay the same. Example:
|
||||
```
|
||||
deployment_id = os.environ.get("K8S_NAMESPACE_NAME", "")
|
||||
host = f'https://gptdeploy-{{deployment_id.split("-")[1]}}.wolf.jina.ai/post' if deployment_id else "http://localhost:8080/post"
|
||||
host = f'https://dev-gpt-{{deployment_id.split("-")[1]}}.wolf.jina.ai/post' if deployment_id else "http://localhost:8080/post"
|
||||
with st.expander("See curl command"):
|
||||
st.code(
|
||||
f'curl -X \\'POST\\' \\'host\\' -H \\'accept: application/json\\' -H \\'Content-Type: application/json\\' -d \\'{{{{"data": [{{{{"text": "hello, world!"}}}}]}}}}\\'',
|
||||
1
dev_gpt/options/run/__init__.py
Normal file
1
dev_gpt/options/run/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from dev_gpt.options.run.runner import Runner
|
||||
@@ -1,5 +1,5 @@
|
||||
from src.apis.jina_cloud import run_locally
|
||||
from src.options import validate_folder_is_correct, get_executor_name, get_latest_version_path
|
||||
from dev_gpt.apis.jina_cloud import run_locally
|
||||
from dev_gpt.options import validate_folder_is_correct, get_executor_name, get_latest_version_path
|
||||
|
||||
|
||||
class Runner():
|
||||
18359
res/3d/DNA.obj
18359
res/3d/DNA.obj
File diff suppressed because it is too large
Load Diff
@@ -1,702 +0,0 @@
|
||||
newmtl Medieval_bone0
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone0.jpg
|
||||
newmtl Medieval_bone1
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone1_1.jpg
|
||||
newmtl Medieval_bone2
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone2_2.jpg
|
||||
newmtl Medieval_bone3
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone3_3.jpg
|
||||
newmtl Medieval_bone4
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone4_4.jpg
|
||||
newmtl Medieval_bone5
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone5_5.jpg
|
||||
newmtl Medieval_bone6
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone6_6.jpg
|
||||
newmtl Medieval_bone7
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone7_7.jpg
|
||||
newmtl Medieval_bone8
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone8_8.jpg
|
||||
newmtl Medieval_bone9
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone9_9.jpg
|
||||
newmtl Medieval_bone10
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone10_10.jpg
|
||||
newmtl Medieval_bone11
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone11_11.jpg
|
||||
newmtl Medieval_bone12
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone12_12.jpg
|
||||
newmtl Medieval_bone13
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone13_13.jpg
|
||||
newmtl Medieval_bone14
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone14_14.jpg
|
||||
newmtl Medieval_bone15
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone15_15.jpg
|
||||
newmtl Medieval_bone16
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone16_16.jpg
|
||||
newmtl Medieval_bone17
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone17_17.jpg
|
||||
newmtl Medieval_bone18
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone18_18.jpg
|
||||
newmtl Medieval_bone19
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone19_19.jpg
|
||||
newmtl Medieval_bone20
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone20_20.jpg
|
||||
newmtl Medieval_bone21
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone21_21.jpg
|
||||
newmtl Medieval_bone22
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone22_22.jpg
|
||||
newmtl Medieval_bone23
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone23_23.jpg
|
||||
newmtl Medieval_bone24
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone24_24.jpg
|
||||
newmtl Medieval_bone25
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone25_25.jpg
|
||||
newmtl Medieval_bone26
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone26_26.jpg
|
||||
newmtl Medieval_bone27
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone27_27.jpg
|
||||
newmtl Medieval_bone28
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone28_28.jpg
|
||||
newmtl Medieval_bone29
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone29_29.jpg
|
||||
newmtl Medieval_bone30
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone30_30.jpg
|
||||
newmtl Medieval_bone31
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone31_31.jpg
|
||||
newmtl Medieval_bone32
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone32_32.jpg
|
||||
newmtl Medieval_bone33
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone33_33.jpg
|
||||
newmtl Medieval_bone34
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone34_34.jpg
|
||||
newmtl Medieval_bone35
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone35_35.jpg
|
||||
newmtl Medieval_bone36
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone36_36.jpg
|
||||
newmtl Medieval_bone37
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone37_37.jpg
|
||||
newmtl Medieval_bone38
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone38_38.jpg
|
||||
newmtl Medieval_bone39
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone39_39.jpg
|
||||
newmtl Medieval_bone40
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone40_40.jpg
|
||||
newmtl Medieval_bone41
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone41_41.jpg
|
||||
newmtl Medieval_bone42
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone42_42.jpg
|
||||
newmtl Medieval_bone43
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone43_43.jpg
|
||||
newmtl Medieval_bone44
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone44_44.jpg
|
||||
newmtl Medieval_bone45
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone45_45.jpg
|
||||
newmtl Medieval_bone46
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone46_46.jpg
|
||||
newmtl Medieval_bone47
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone47_47.jpg
|
||||
newmtl Medieval_bone48
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone48_48.jpg
|
||||
newmtl Medieval_bone49
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone49_49.jpg
|
||||
newmtl Medieval_bone50
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone50_50.jpg
|
||||
newmtl Medieval_bone51
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone51_51.jpg
|
||||
newmtl Medieval_bone52
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone52_52.jpg
|
||||
newmtl Medieval_bone53
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone53_53.jpg
|
||||
newmtl Medieval_bone54
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone54_54.jpg
|
||||
newmtl Medieval_bone55
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone55_55.jpg
|
||||
newmtl Medieval_bone56
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone56_56.jpg
|
||||
newmtl Medieval_bone57
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone57_57.jpg
|
||||
newmtl Medieval_bone58
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone58_58.jpg
|
||||
newmtl Medieval_bone59
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone59_59.jpg
|
||||
newmtl Medieval_bone60
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone60_60.jpg
|
||||
newmtl Medieval_bone61
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone61_61.jpg
|
||||
newmtl Medieval_bone62
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone62_62.jpg
|
||||
newmtl Medieval_bone63
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone63_63.jpg
|
||||
newmtl Medieval_bone64
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone64_64.jpg
|
||||
newmtl Medieval_bone65
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone65_65.jpg
|
||||
newmtl Medieval_bone66
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone66_66.jpg
|
||||
newmtl Medieval_bone67
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone67_67.jpg
|
||||
newmtl Medieval_bone68
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone68_68.jpg
|
||||
newmtl Medieval_bone69
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone69_69.jpg
|
||||
newmtl Medieval_bone70
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone70_70.jpg
|
||||
newmtl Medieval_bone71
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone71_71.jpg
|
||||
newmtl Medieval_bone72
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone72_72.jpg
|
||||
newmtl Medieval_bone73
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone73_73.jpg
|
||||
newmtl Medieval_bone74
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone74_74.jpg
|
||||
newmtl Medieval_bone75
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone75_75.jpg
|
||||
newmtl Medieval_bone76
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone76_76.jpg
|
||||
newmtl Medieval_bone77
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone77_77.jpg
|
||||
newmtl Medieval_bone78
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone78_78.jpg
|
||||
newmtl Medieval_bone79
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone79_79.jpg
|
||||
newmtl Medieval_bone80
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone80_80.jpg
|
||||
newmtl Medieval_bone81
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone81_81.jpg
|
||||
newmtl Medieval_bone82
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone82_82.jpg
|
||||
newmtl Medieval_bone83
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone83_83.jpg
|
||||
newmtl Medieval_bone84
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone84_84.jpg
|
||||
newmtl Medieval_bone85
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone85_85.jpg
|
||||
newmtl Medieval_bone86
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone86_86.jpg
|
||||
newmtl Medieval_bone87
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone87_87.jpg
|
||||
newmtl Medieval_bone88
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone88_88.jpg
|
||||
newmtl Medieval_bone89
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone89_89.jpg
|
||||
newmtl Medieval_bone90
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone90_90.jpg
|
||||
newmtl Medieval_bone91
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone91_91.jpg
|
||||
newmtl Medieval_bone92
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone92_92.jpg
|
||||
newmtl Medieval_bone93
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone93_93.jpg
|
||||
newmtl Medieval_bone94
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone94_94.jpg
|
||||
newmtl Medieval_bone95
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone95_95.jpg
|
||||
newmtl Medieval_bone96
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone96_96.jpg
|
||||
newmtl Medieval_bone97
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone97_97.jpg
|
||||
newmtl Medieval_bone98
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone98_98.jpg
|
||||
newmtl Medieval_bone99
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone99_99.jpg
|
||||
newmtl Medieval_bone100
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone100_100.jpg
|
||||
newmtl Medieval_bone101
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone101_101.jpg
|
||||
newmtl Medieval_bone102
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone102_102.jpg
|
||||
newmtl Medieval_bone103
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone103_103.jpg
|
||||
newmtl Medieval_bone104
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone104_104.jpg
|
||||
newmtl Medieval_bone105
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone105_105.jpg
|
||||
newmtl Medieval_bone106
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone106_106.jpg
|
||||
newmtl Medieval_bone107
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone107_107.jpg
|
||||
newmtl Medieval_bone108
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone108_108.jpg
|
||||
newmtl Medieval_bone109
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone109_109.jpg
|
||||
newmtl Medieval_bone110
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone110_110.jpg
|
||||
newmtl Medieval_bone111
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone111_111.jpg
|
||||
newmtl Medieval_bone112
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone112_112.jpg
|
||||
newmtl Medieval_bone113
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone113_113.jpg
|
||||
newmtl Medieval_bone114
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone114_114.jpg
|
||||
newmtl Medieval_bone115
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone115_115.jpg
|
||||
newmtl Medieval_bone116
|
||||
Ka 0 0 0
|
||||
Ns 6.82096
|
||||
Ks 1 1 1
|
||||
Kd 0.930023 0.847167 0.686777
|
||||
map_Kd Medieval_bone116_116.jpg
|
||||
424509
res/3d/t-rex/T-Rex.obj
424509
res/3d/t-rex/T-Rex.obj
File diff suppressed because it is too large
Load Diff
|
Before Width: | Height: | Size: 437 KiB After Width: | Height: | Size: 437 KiB |
@@ -7,7 +7,7 @@
|
||||
|
||||
set -ex
|
||||
|
||||
INIT_FILE='src/__init__.py'
|
||||
INIT_FILE='dev_gpt/__init__.py'
|
||||
VER_TAG='__version__ = '
|
||||
RELEASENOTE='./node_modules/.bin/git-release-notes'
|
||||
|
||||
|
||||
8
setup.py
8
setup.py
@@ -8,7 +8,7 @@ def read_requirements():
|
||||
|
||||
|
||||
try:
|
||||
libinfo_py = path.join('src', '__init__.py')
|
||||
libinfo_py = path.join('dev_gpt', '__init__.py')
|
||||
libinfo_content = open(libinfo_py, 'r', encoding='utf8').readlines()
|
||||
version_line = [l.strip() for l in libinfo_content if l.startswith('__version__')][
|
||||
0
|
||||
@@ -26,14 +26,14 @@ setup(
|
||||
long_description_content_type='text/markdown',
|
||||
author='Florian Hönicke',
|
||||
author_email='florian.hoenicke@jina.ai',
|
||||
url='https://github.com/jina-ai/gptdeploy',
|
||||
url='https://github.com/jina-ai/dev-gpt',
|
||||
packages=find_packages(),
|
||||
include_package_data=True,
|
||||
install_requires=read_requirements(),
|
||||
scripts=['gptdeploy.py'],
|
||||
scripts=['dev_gpt.py'],
|
||||
entry_points={
|
||||
'console_scripts': [
|
||||
'gptdeploy = src:main',
|
||||
'dev-gpt = dev_gpt:main',
|
||||
],
|
||||
},
|
||||
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
__version__ = '0.18.35'
|
||||
|
||||
from src.cli import main
|
||||
@@ -1 +0,0 @@
|
||||
from src.options.run.runner import Runner
|
||||
@@ -2,7 +2,7 @@ import os
|
||||
|
||||
import pytest
|
||||
|
||||
from src.options.generate.generator import Generator
|
||||
from dev_gpt.options.generate.generator import Generator
|
||||
|
||||
|
||||
# The cognitive difficulty level is determined by the number of requirements the microservice has.
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import os
|
||||
|
||||
from src.apis.jina_cloud import is_executor_in_hub
|
||||
from src.apis.pypi import is_package_on_pypi, clean_requirements_txt
|
||||
from src.options.generate.generator import Generator
|
||||
from dev_gpt.apis.jina_cloud import is_executor_in_hub
|
||||
from dev_gpt.apis.pypi import is_package_on_pypi, clean_requirements_txt
|
||||
from dev_gpt.options.generate.generator import Generator
|
||||
|
||||
|
||||
def test_is_microservice_in_hub():
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import pytest
|
||||
|
||||
from src.options.generate.generator import Generator
|
||||
from dev_gpt.options.generate.generator import Generator
|
||||
|
||||
def create_code_block(with_backticks, asterisks, with_highlight_info, file_name, start_inline, content):
|
||||
code_block = f'''
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from src.apis.jina_cloud import clean_color_codes
|
||||
from dev_gpt.apis.jina_cloud import clean_color_codes
|
||||
|
||||
|
||||
def test_clean_color_codes():
|
||||
|
||||
Reference in New Issue
Block a user