cjwbw / magicoder

LLMs with open-source code snippets for generating low-bias and high-quality instruction data for code.

  • Public
  • 356 runs
  • L40S
  • GitHub
  • Paper
  • License

Input

string
Shift + Return to add a new line

Input instruction.

Default: "Write a snake game in Python using the turtle library (the game is created by Magicoder)."

number
(minimum: 0, maximum: 1)

Adjusts randomness of outputs, 1 is random and 0 is deterministic.

Default: 0

integer

Maximum number of tokens to generate. A word is generally 2-3 tokens.

Default: 2048

Output

Here is a simple snake game in Python using the turtle library. ```python import turtle import time import random delay = 0.1 # Score score = 0 high_score = 0 # Set up the screen wn = turtle.Screen() wn.title("Snake Game by Magicoder") wn.bgcolor("green") wn.setup(width=600, height=600) wn.tracer(0) # Turns off the screen updates # Snake head head = turtle.Turtle() head.speed(0) head.shape("square") head.color("black") head.penup() head.goto(0, 0) head.direction = "stop" # Snake food food = turtle.Turtle() food.speed(0) food.shape("circle") food.color("red") food.penup() food.goto(0, 100) segments = [] # Pen pen = turtle.Turtle() pen.speed(0) pen.shape("square") pen.color("white") pen.penup() pen.hideturtle() pen.goto(0, 260) pen.write("Score: 0 High Score: 0", align="center", font=("Courier", 24, "normal")) # Functions def go_up(): if head.direction!= "down": head.direction = "up" def go_down(): if head.direction!= "up": head.direction = "down" def go_left(): if head.direction!= "right": head.direction = "left" def go_right(): if head.direction!= "left": head.direction = "right" def move(): if head.direction == "up": y = head.ycor() head.sety(y + 20) if head.direction == "down": y = head.ycor() head.sety(y - 20) if head.direction == "left": x = head.xcor() head.setx(x - 20) if head.direction == "right": x = head.xcor() head.setx(x + 20) # Keyboard bindings wn.listen() wn.onkeypress(go_up, "w") wn.onkeypress(go_down, "s") wn.onkeypress(go_left, "a") wn.onkeypress(go_right, "d") # Main game loop while True: wn.update() # Check for a collision with the border if head.xcor() > 290 or head.xcor() < -290 or head.ycor() > 290 or head.ycor() < -290: time.sleep(1) head.goto(0, 0) head.direction = "stop" # Hide the segments for segment in segments: segment.goto(1000, 1000) # Clear the segments list segments.clear() # Reset the score score = 0 # Reset the delay delay = 0.1 # Update the score display pen.clear() pen.write("Score: {} High Score: {}".format(score, high_score), align="center", font=("Courier", 24, "normal")) # Check for a collision with the food if head.distance(food) < 20: # Move the food to a random spot x = random.randint(-280, 280) y = random.randint(-280, 280) food.goto(x, y) # Add a segment new_segment = turtle.Turtle() new_segment.speed(0) new_segment.shape("square") new_segment.color("grey") new_segment.penup() segments.append(new_segment) # Shorten the delay delay -= 0.001 # Increase the score score += 10 if score > high_score: high_score = score pen.clear() pen.write("Score: {} High Score: {}".format(score, high_score), align="center", font=("Courier", 24, "normal")) # Move the end segments first in reverse order for index in range(len(segments) - 1, 0, -1): x = segments[index - 1].xcor() y = segments[index - 1].ycor() segments[index].goto(x, y) # Move segment 0 to where the head is if len(segments) > 0: x = head.xcor() y = head.ycor() segments[0].goto(x, y) move() # Check for head collision with the body segments for segment in segments: if segment.distance(head) < 20: time.sleep(1) head.goto(0, 0) head.direction = "stop" # Hide the segments for segment in segments: segment.goto(1000, 1000) # Clear the segments list segments.clear() # Reset the score score = 0 # Reset the delay delay = 0.1 # Update the score display pen.clear() pen.write("Score: {} High Score: {}".format(score, high_score), align="center", font=("Courier", 24, "normal")) time.sleep(delay) wn.mainloop() ``` This game is a simple version of the classic snake game. The snake starts with a single segment and grows in size each time it eats the food. The game ends when the snake hits the border or itself. The score is increased by 10 points for each food eaten. The game speed increases with each food eaten.
Generated in

Run time and cost

This model costs approximately $0.077 to run on Replicate, or 12 runs per $1, but this varies depending on your inputs. It is also open source and you can run it on your own computer with Docker.

This model runs on Nvidia L40S GPU hardware. Predictions typically complete within 79 seconds. The predict time for this model varies significantly based on the inputs.

Readme

🎩 Magicoder: Source Code Is All You Need

About

  • 🎩Magicoder is a model family empowered by 🪄OSS-Instruct, a novel approach to enlightening LLMs with open-source code snippets for generating low-bias and high-quality instruction data for code.
  • 🪄OSS-Instruct mitigates the inherent bias of the LLM-synthesized instruction data by empowering them with a wealth of open-source references to produce more diverse, realistic, and controllable data.

Overview of OSS-Instruct Overview of Result

📝 Citation

@article{wei2023magicoder,
  title={Magicoder: Source Code Is All You Need},
  author={Wei, Yuxiang and Wang, Zhe and Liu, Jiawei and Ding, Yifeng and Zhang, Lingming},
  journal={arXiv preprint arXiv:2312.02120},
  year={2023}
}

🙏 Acknowledgements

We thank AK(@_akhaliq) and the Hugging Face team for their support in the Magicoder Playground! We also thank the following amazing projects that truly inspired us:

⚠️ Important Note

  • Bias, Risks, and Limitations: Magicoders may sometimes make errors, produce misleading contents, or struggle to manage tasks that are not related to coding.

  • Usage: Magicoder models are trained on the synthetic data generated by OpenAI models. Please pay attention to OpenAI’s terms of use when using the models and the datasets. Magicoders will not compete with any OpenAI’s commercial product.