Giter Site home page Giter Site logo

redevrx / chat_gpt_sdk Goto Github PK

View Code? Open in Web Editor NEW
304.0 304.0 156.0 9.57 MB

Flutter ChatGPT

Home Page: https://pub.dev/packages/chat_gpt_sdk

License: MIT License

Kotlin 0.05% Swift 0.72% Objective-C 0.01% Dart 80.68% CMake 7.40% C++ 8.74% C 0.56% HTML 0.72% Ruby 1.11%
android dart flutter gpt-3 gpt-4 ios openai

chat_gpt_sdk's Introduction

Hi there πŸ‘‹, I am Kasem Siakhuedong


followers total stars

  • πŸ”­ I’m currently working on Flutter and Android
  • 🌱 I’m currently learning Golang

Language Languages and Tools

Java

Spring

TypeScript

Git

Linux

JavaScript

Vue

NodeJS

Golang

Flutter

Android


chat_gpt_sdk's People

Contributors

bassiuz avatar gamestap99 avatar huanfeng avatar mny459 avatar nomtats avatar orenagiv avatar redevrx avatar romanventskus-u avatar sakushin-udemy avatar vincentengel avatar wliu6v avatar zhangdong avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

chat_gpt_sdk's Issues

Eorror with type cast?

chat_gpt_sdk: ^2.1.7

[OpenAI] request body :{prompt: hello, model: text-davinci-003, temperature: 0.3, max_tokens: 200, top_p: 1.0, frequency_penalty: 0.0, presence_penalty: 0.0, stop: null}
[VERBOSE-2:dart_vm_initializer.cc(41)] Unhandled Exception: type 'List<dynamic>' is not a subtype of type 'List<Map<String, dynamic>>' in type cast
#0      new CompleteResponse.fromJson (package:chat_gpt_sdk/src/model/complete_text/response/complete_response.dart:30:26)
#1      OpenAI.onCompletion.<anonymous closure> (package:chat_gpt_sdk/src/openai.dart:119:35)
#2      OpenAIClient.post (package:chat_gpt_sdk/src/client/openai_client.dart:189:25)
<asynchronous suspension>
[OpenAI] ============= success ==================

[subscription.cancel] there is no event.

@redevrx
When cancelling with subscription.cancel(), I've got no error message.

Can you add the error event to onError()?

openAI.onChatCompletionSSE()
           .listen(() {},
            onDone: () {}
            onError: (e) {}   <==== no cancel error message.
           )

How to catch specific error types?

When making a request, I've run into a quota exceeded error as expected.
I'm trying to gracefully catch this error and display it to the UI via some sort of popup.
However, I can't seem to find the error type in order to assure certain properties are available for extraction.
I'm interested in the code & message error attributes.

Unhandled exception on calling .cancelAIGenerate() during an .onChatCompletionSSE

While I'm listening for the data on the .onChatCompletionSSE method and making a call to .cancelAIGenerate() I get an exception with the stack:

[VERBOSE-2:dart_vm_initializer.cc(41)] Unhandled Exception: type 'HttpException' is not a subtype of type 'DioError' in type cast

#0 OpenAIClient.sse.. openai_client.dart:198
#1 _RootZone.runBinaryGuarded (dart:async/zone.dart:1606:10)
#2 _BufferingStreamSubscription._sendError.sendError (dart:async/stream_impl.dart:358:15)
#3 _BufferingStreamSubscription._sendError (dart:async/stream_impl.dart:376:7)
#4 _BufferingStreamSubscription._addError (dart:async/stream_impl.dart:280:7)
#5 _SinkTransformerStreamSubscription._addError (dart:async/stream_transformers.dart:75:11)
#6 _EventSinkWrapper.addError (dart:async/stream_transformers.dart:17:11)
#7 _HandlerEventSink.addError (dart:async/stream_transformers.dart:226:12)
#8 _SinkTransformerStreamSubscription._handleError (dart:async/stream_transformers.dart:119:24)
#9 _HttpClientResponse.listen. (dart:_http/http_imp<…>`

All the calls to the .onChatCompletionSSE after that are throwing the exception:
`status code :500 message :null

Did anyone meet this behaviour?

This Library Not Working on MacOS Desktop Flutter App

You can mark this as resolved. I have been struggling to figure out why this library wasn't working with my Flutter app. Turns out I'm building this for MacOS which defaults to denying Network requests. I'm a n00b and didn't realize this was the issue.

Thought I'd post the solution here so the next person who spends 2 hours pulling out their hair might stumble over it.

 macOS needs you to request a specific entitlement in order to access the network. To do that open macos/Runner/DebugProfile.entitlements and add the following key-value pair.

<key>com.apple.security.network.client</key>
<true/>
Then do the same thing in macos/Runner/Release.entitlements.

Close and reopen the app and it should be able to connect to the network.

Original post here: https://stackoverflow.com/questions/65458903/socketexception-connection-failed-os-error-operation-not-permitted-errno-1

Hope this is helpful to someone in the future :).

Thanks for a great library!

How to use SSE?

When using the onChatCompletionSSE, the debug print will indeed print every single token individually but it did it all in one go and not continuously while the response is being generated. Why is this the case? Thanks!

Status code: null. Only on Android release build.

At await openAI.onChatCompletion(request: request), I got an error like below.

status code :null message :null data:null

This only happened when I tried a release build on a real Android device, not a debug build on an Android emulator or a debug/release build on an iOS simulator.
Also, the debug build worked fine on the real machine, so it doesn't seem to be a device problem.

Or do I have to do something special on a real Android device?

Package version: 2.0.4

[βœ“] Flutter (Channel stable, 3.7.6, on macOS 13.2.1 22D68 darwin-arm64, locale ja-JP)
    β€’ Flutter version 3.7.6 on channel stable at /Users/yukikomine/flutter
    β€’ Upstream repository https://github.com/flutter/flutter.git
    β€’ Framework revision 12cb4eb7a0 (10 days ago), 2023-03-01 10:29:26 -0800
    β€’ Engine revision ada363ee93
    β€’ Dart version 2.19.3
    β€’ DevTools version 2.20.1

[βœ“] Android toolchain - develop for Android devices (Android SDK version 32.1.0-rc1)
    β€’ Android SDK at /Users/yukikomine/Library/Android/sdk
    β€’ Platform android-33, build-tools 32.1.0-rc1
    β€’ Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java
    β€’ Java version OpenJDK Runtime Environment (build 11.0.12+0-b1504.28-7817840)
    β€’ All Android licenses accepted.

[βœ“] Xcode - develop for iOS and macOS (Xcode 14.2)
    β€’ Xcode at /Applications/Xcode.app/Contents/Developer
    β€’ Build 14C18
    β€’ CocoaPods version 1.11.3

[βœ“] Chrome - develop for the web
    β€’ Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[βœ“] Android Studio (version 2021.2)
    β€’ Android Studio at /Applications/Android Studio.app/Contents
    β€’ Flutter plugin can be installed from:
      πŸ”¨ https://plugins.jetbrains.com/plugin/9212-flutter
    β€’ Dart plugin can be installed from:
      πŸ”¨ https://plugins.jetbrains.com/plugin/6351-dart
    β€’ Java version OpenJDK Runtime Environment (build 11.0.12+0-b1504.28-7817840)

[βœ“] VS Code (version 1.76.0)
    β€’ VS Code at /Applications/Visual Studio Code.app/Contents
    β€’ Flutter extension version 3.60.0

[βœ“] Connected device (3 available)
    β€’ iPhone 8 Plus (mobile) β€’ 083471F2-780D-49E5-A78B-4EE552A1B560 β€’ ios            β€’ com.apple.CoreSimulator.SimRuntime.iOS-15-4 (simulator)
    β€’ macOS (desktop)        β€’ macos                                β€’ darwin-arm64   β€’ macOS 13.2.1 22D68 darwin-arm64
    β€’ Chrome (web)           β€’ chrome                               β€’ web-javascript β€’ Google Chrome 110.0.5481.177

[βœ“] HTTP Host Availability
    β€’ All required HTTP hosts are available

β€’ No issues found!
yukikomine@YukinoMacBook-Pro chat_ai % 

Thank you.

Getting this error even if i provide the token

have Error [401] => Data: {error: {message: You didn't provide an API key. You need to provide your API key in an Authorization header using Bearer auth (i.e. Authorization: Bearer YOUR_KEY), or as the password field (with blank username) if you're accessing the API from your browser and are prompted for a username and password. You can obtain an API key from https://beta.openai.com., type: invalid_request_error, param: null, code: null}}

Uploaded image must be a png and less than 4 mb - ERROR

Can anyone help? I've been stuck on this for days... I even tried converting the path to base64 but nothing work...
by the way the file is png, less than 1MB and is a square.

These suggestion didn't help either: https://community.openai.com/t/using-image-url-in-images-edits-request/27247/3

`
void variation(File image, String name) async {
final request =
Variation(image: EditFile(image.path, name));
final response = await openAI.editor.variation(request);

print(response.data?.last?.url);
}
`

DioException (DioException [receive timeout]: The request took longer than 0:00:30.000000 to receive data. It was aborted.)

When using openAI .onChatCompletionSSE(),
if receiving timeout, there is no error event in your library.

Can you solve it?

This is my logs from flutter.

[log] error
[log] DioException (DioException [receive timeout]: The request took longer than 0:00:30.000000 to receive data. It was aborted.)
[log] #0      DioMixin.fetch.<anonymous closure>
dio_mixin.dart:533
#1      _RootZone.runUnary (dart:async/zone.dart:1661:54)
#2      _FutureListener.handleError (dart:async/future_impl.dart:165:22)
#3      Future._propagateToListeners.handleError (dart:async/future_impl.dart:796:47)
#4      Future._propagateToListeners (dart:async/future_impl.dart:817:13)
#5      Future._completeError (dart:async/future_impl.dart:592:5)
#6      _SyncCompleter._completeError (dart:async/future_impl.dart:51:12)
#7      _Completer.completeError (dart:async/future_impl.dart:23:5)
#8      Future.any.onError (dart:async/future.dart:620:45)
#9      _RootZone.runBinary (dart:async/zone.dart:1666:54)
#10     _FutureListener.handleError (dart:async/future_impl.dart:162:22)
#11     Future._propagateToListeners.handleError (dart:async/future_impl.dart:796:47)
#12     Future._propagateToListeners (dart:async/future_impl.dart:817:13)
#13     Future._completeError (dart:async/future_impl.dart:592:5)
#14     Future._asyncCompleteError.<anonymous closure> (dart:async/future_impl.dart:683:7)
#15     _microtaskLoop (dart:async/schedule_microtask.dart:40:21)
#16     _startMicrotaskLoop (dart:async/schedule_microtask.dart:49:5)

can we support conversationId and parentMessageId?

To maintain a conversation, it is helpful to use consistent prompts throughout. Is this currently being done? If not, could you please add the conversationId and parentMessageId so that we can achieve this?

The name 'ChatCTResponseSSE' isn't a type, so it can't be used as a type argument.

The method "onChatCompletionSSE" in chat_gpt_sdk/src/openai.dart is supposed to return a "Stream", but the "ChatCTResponseSSE" Class is not found within the package.

While the Class itself does exist in chat_gpt_sdk/src/model/chat_complete/response/chat_response_sse.dart of version 2.1.6, it seems that there is an issue with its definition within the package.

Have others been encountering the same issue?

Deprecated Usage - New Exemple - Explanation -

Hi, I would like to help but it's to much work for me, I dont know how.. So I open this issue.

Deprecated Methods
onChatCompletionStream so why is this in the readme page as an example?
onCompletionStream so this one?

Better explanation:

openai.onCompletionStream() Function deprecated!!!
The functionopenai.onCompletionStream() is used to receive a real-time stream response from the OpenAI GPT-3 API using a complete text request. DEPRECATED DONT USE THIS

The function openai.onCompletion() is similar to the former but returns the response as a Promise which will be resolved when the response is ready.

The function openai.onChatCompletion() is used to conduct a conversation between a user and a virtual agent, using OpenAI's GPT-3 model to generate agent responses.

The function openai.onChatCompletionSSE() is similar to the former but uses the Server Sent Events (SSE) protocol to receive real-time responses in an event stream format.

You can use others AI like ada, just put in your model linke this:
final request = CompleteText(
prompt: _textController.text
maxTokens: 500,
model: kTextDavinci3,
);
for davinci

if you change this (kTextDavinci3) to another one it will work as fine. You can change it like:

final request = CompleteText(
prompt: _textController.text
maxTokens: 500,
model: kTextDavinci3,
);
ext-davinci-003
ext-davinci-002
ode-davinci-002
gpt-3.5-turbo
gpt-3.5-turbo-0301
text-embedding-ada-002 and other that you can find on https://platform.openai.com/docs/api-reference/embeddings/create
if you change the model, just put it as a string like this:

final request = CompleteText(
prompt: _textController.text
maxTokens: 500,
model: "ext-davinci-002",
);

BUT BE AWEAR SOME MODELS WORK IN DIFERENT KIND OF FUNCTION:
Exemple, gpt-3.5-turbo does't work with CompleteText it wil work fine with ChatCompleteText.

I could help more but... I have 2 jobs and I leave im Brasil have no time to program as I would like, I have to.
I work at the morgue and have to pull bodies to survive.

ChatGPT 3.5 Turbo Implemented yet?

Hi.

Is it ChatGPT 3.5 Turbo implemented yet?
OpenAI release the new one version. Eash bots have their own role.
For example health bots, so the conversation should be talking about health..

Thank you

Error 401 API key in an Authorization header API key issue

I already updated my latest genereted API key but still getting this issue.

flutter (28683): have Error [401] => Data: {error: {message: You didn't provide an API key. You need to provide your API key in an Authorization header using Bearer auth (i.e. Authorization: Bearer YOUR_KEY), or as the password field (with blank username) if you're accessing the API from your browser and are prompted for a username and password. You can obtain an API key from https://beta.openai.com., type: invalid_request_error, param: null, code: null}}

Manage null finish reason.

Hi,

Sometimes, OpenAI return null on finish_reason field. Now, it throws an Unhandled Exception.

Sample :
response body :{id: chatcmpl-6r7uM1mnZrqJVsLtbVsKf6ufEN8tS, object: chat.completion, created: 1678119802, model: gpt-3.5-turbo-0301, usage: {prompt_tokens: 320, completion_tokens: 152, total_tokens: 472}, choices: [{message: {role: assistant, content: Bien sΓ»r, voici quelques restaurants que je vous recommande Γ  Petrovac : I/flutter (30158): (...)}, finish_reason: null, index: 0}]} E/flutter (30158): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: type 'Null' is not a subtype of type 'String' E/flutter (30158): #0 new ChatChoice.fromJson (package:chat_gpt_sdk/src/model/chat_complete/response/chat_choice.dart:14:27) E/flutter (30158): #1 new ChatCTResponse.fromJson.<anonymous closure> (package:chat_gpt_sdk/src/model/chat_complete/response/ChatCTResponse.dart:24:51)

Thanks, ClΓ©ment.

Handle the case that the response_format is b64_json.

Add b64_json to GenerateImgRes to handle the case that the response_format is b64_json.

class ImageData {
  ImageData({this.url, this.b64_json});

  String? url;
  String? b64_json;

  factory ImageData.fromJson(Map<String, dynamic> json) =>
      ImageData(url: json["url"], b64_json: json["b64_json"]);

  Map<String, dynamic> toJson() => {"url": url, "b64_json": b64_json};
}

How do I copy this official Python API to edit my prompt?

curl https://api.openai.com/v1/edits \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "text-davinci-edit-001",
    "input": "What day of the wek is it?",
    "instruction": "Fix the spelling mistakes"
  }'

I tried

final String instruction_en =
    "Correct all the spelling and grammar errors and explain the errors";

class ChatApi {
  static final openAI = OpenAI.instance.build(
      token: token,
      baseOption: HttpSetup(receiveTimeout: const Duration(seconds: 5)),
      isLog: true);

  ChatApi() {
    openAI.setToken(token);
  }

  Future<String> editPrompt(ChatMessage chatMessage) async {
    final response = await openAI.editor.prompt(EditRequest(
        model: EditModel.textEditModel,
        input: chatMessage.content,
        instruction: instruction_en));

    print("response: $response");
    return response.choices.last.text;
  }
}

and my result was gibberish for my prompt
" I go skool and stady engrish" although VSCode ChatGPT Genie would return a good response and so does the online chatbot at Chatgpt.org/chat.

[Help wanted] The request connection took longer than 0:00:20.000000. It was aborted.

While running the example, I encountered the following error 1. If I set the proxy for HttpSetup, I encounter error 2.

Error 1:
(base) ➜ example git:(main) βœ— flutter run
Launching lib/main.dart on iPhone 13 in debug mode...
Running Xcode build...
└─Compiling, linking and signing... 2,703ms
Xcode build done. 7.3s
Syncing files to device iPhone 13... 123ms

Flutter run key commands.
r Hot reload. πŸ”₯πŸ”₯πŸ”₯
R Hot restart.
h List all available interactive commands.
d Detach (terminate "flutter run" but leave application running).
c Clear the screen
q Quit (terminate the application on the device).

πŸ’ͺ Running with sound null safety πŸ’ͺ

An Observatory debugger and profiler on iPhone 13 is available at: http://127.0.0.1:65388/S7AYxR2iYWY=/
The Flutter DevTools debugger and profiler on iPhone 13 is available at: http://127.0.0.1:9101?uri=http://127.0.0.1:65388/S7AYxR2iYWY=/

Performing hot restart...
Restarted application in 354ms.
flutter:
[VERBOSE-2:dart_vm_initializer.cc(41)] Unhandled Exception:
status code :null message :The request connection took longer than 0:00:20.000000. It was aborted.
data:null

Error 2:
void initState() {
openAI = OpenAI.instance.build(
token: token,
baseOption: HttpSetup(
proxy: "localhost:1087",
receiveTimeout: const Duration(seconds: 20),
connectTimeout: const Duration(seconds: 20)),
isLog: true);
super.initState();
}

(base) ➜ example git:(main) βœ— flutter run
Launching lib/main.dart on iPhone 13 in debug mode...
Running Xcode build...
└─Compiling, linking and signing... 2,496ms
Xcode build done. 8.8s
Syncing files to device iPhone 13... 108ms

Flutter run key commands.
r Hot reload. πŸ”₯πŸ”₯πŸ”₯
R Hot restart.
h List all available interactive commands.
d Detach (terminate "flutter run" but leave application running).
c Clear the screen
q Quit (terminate the application on the device).

πŸ’ͺ Running with sound null safety πŸ’ͺ

An Observatory debugger and profiler on iPhone 13 is available at: http://127.0.0.1:49416/nGCSjrR8sk8=/
The Flutter DevTools debugger and profiler on iPhone 13 is available at: http://127.0.0.1:9101?uri=http://127.0.0.1:49416/nGCSjrR8sk8=/
flutter:
[VERBOSE-2:dart_vm_initializer.cc(41)] Unhandled Exception:
status code :null message :null
data:null

have Error [null] => Data: null error

When trying to talk to ChatGPT it crashes on some questions. For example;

final request = CompleteReq(
          prompt: prompt, model: kTranslateModelV3, max_tokens: 200);
      subscription = ChatGPT.instance
          .builder(token,
              baseOption: HttpSetup(receiveTimeout: 6000))
          .onCompleteStream(request: request)
          .asBroadcastStream()
          .listen((res) async {
       //same code
      });

While trying to talk to ChatGPT in this way, some questions remain unanswered and 'have Error [null] => Data: null error' gives this error.
In my opinion, an update is needed to fix this error, if the value returns empty, a different function should work, just like onDone or onError...

Add More Languages

Hi.

Can you add more language translate method?
Such as Vietnamese.. Indonesia, Tagalog etc..

Thank you

Need for a working example

I have checked the example and it does not seem to work.
I would like to create a simple but working example for first time users.
If I create it, will it be adopted?

The first prompt doesn't give result

I'm trying to undestand if it is my problem or it is related to the library, but when I ask the first question, I never get a response.
This is the snippet of code I'm using (stripped from unuseful stuff for the purpouse):

`
ChatGPT? chatGPT;
StreamSubscription? _subscription;
...

void _sendMessage() {
ChatMessage message = ChatMessage(text: _controller.text, sender: "Piero");

final request = CompleteReq(
    prompt: message.text, model: kTranslateModelV3, max_tokens: 500);

_subscription = chatGPT!
    .builder(token, orgId: "", baseOption: HttpSetup(receiveTimeout: 60000))
    .onCompleteStream(request: request)
    .listen((response) {
  print(response!.choices[0].text);
  ChatMessage botMessage =
      ChatMessage(text: response.choices[0].text, sender: "bot");

});

}
`
Starting from the second message everything works fine

About data from database

How do I make the chat to answer with the data I provide? if it can not answer, the user will contact with a real specialist

Retry last request

Is there a built-in way to retry the last request?

For instance:
The user was busy sending messages to and fro, and at some time the library responded with an error.
Rather than the user typing the prompt out again, some sort of retry button could ask the library to try again in hopes of a successful response.

Sometime response finish_reason is Null

When a request is sent, the text value of choice is present, but sometimes the value of finish_reason is passed as null, and an error occurs when attempting type conversion.

image

image

image

Function Calling: None is not of type 'object' - 'messages.0.function_call

Hello! Im trying function calling feature with this example:

  void gptFunctionCalling() async {
    final request = ChatCompleteText(
        messages: [
          Messages(
              role: Role.user,
              content: "What is the weather like in Boston?",
              name: "get_current_weather"),
        ],
        maxToken: 200,
        model: GptTurbo0631Model(),
        functions: [
          FunctionData(
              name: "get_current_weather",
              description: "Get the current weather in a given location",
              parameters: {
                "type": "object",
                "properties": {
                  "location": {
                    "type": "string",
                    "description": "The city and state, e.g. San Francisco, CA"
                  },
                  "unit": {
                    "type": "string",
                    "enum": ["celsius", "fahrenheit"]
                  }
                },
                "required": ["location"]
              })
        ],
        functionCall: FunctionCall.auto);

    ChatCTResponse? response = await openAI.onChatCompletion(request: request);
    debugPrint("$response");
  }

But dont work, i'm getting this error:
Unhandled Exception: status code :400 message :{message: None is not of type 'object' - 'messages.0.function_call', code: null, type: invalid_request_error}

extend ChatModel?

I'm new to ChatGPT, so forgive me if get things wrong.
When I create my own model via Fine-Tuning I get back a model id.
As far as I have understood, this model id needs to be send in the request.

      final request = ChatCompleteText(messages: [
        Map.of({"role": "system", "content": 'You are  an answering machine'}),
      ], maxToken: 200, model: local_chat_model.08709709724zl);

How do you extend the chat_gpt_sdk ChatModel with a custom model?

Is there an option for consistent session?

Use case:
Consistent chat with the model.

Example:
Request (me): Hi, my favorite color is green.
Response (model): That's cool
Request (me): What is my favorite color?
Response (model): I don't know

--> Model does not "remember" the first text. When using chatGPT via the OpenAI website, the model is able to remember the context of previous conversation.
Is this possible with this package?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.