使用文心4.5开源大模型ERNIE-4.5-21B-A3B-Paddle 进行0成本驱动Auto-Coder
文心近几天开源了10个大模型,最简单的部署方法就是在星河社区直接一键部署。
使用fastdeploy在星河社区部署
进入部署页面:飞桨AI Studio星河社区-人工智能学习与实训社区
点击:新建部署-部署内部模型
在热门模型库里,选FastDeploy推理框架,然后选文心4.5模型即可。比如选21B这个模型。
具体参考:文心4.5开源模型部署实践-CSDN博客
部署完毕之后,点击“详情”,可以看到调用的模型名、url和token,保存好,一会儿到Auto-Coder里面设置。
安装和配置Auto-coder
安装和配置Auto-coder参考:把AI装进你的terminal终端:Auto-Coder终极编程助手体验-CSDN博客
注意,因为最大窗口数限制为32k,所以需要再Auto-Coder里面设置一下最大tokens拆分,参考值:
/conf context_prune_safe_zone_tokens:30720
# /conf index_filter_model_max_input_length:30720
/conf index_filter_model_max_input_length:24576
/conf conversation_prune_safe_zone_tokens:24576
开始生成项目
还是常规保留节目,让AI写个雷电小游戏。
你还别说,最后它还真写出来了。这证明文心21B模型已经基本符合了Auto-Coder驱动的要求,可以适配Auto-Coder。
结论
先上结论,文心开源大模型ERNIE-4.5-21B-A3B-Paddle相比gpt-4o和deepseek-v3要稍微逊色些,因为用那两个模型,一般只要两轮,就能执行。再调整下,基本上就能玩了。
用ERNIE-4.5-21B-A3B-Paddle这个模型,经过3-4轮的调整,也还是只能出现飞机和子弹,而且子弹还不跟着飞机跑。敌机也没有出现。
当然ERNIE-4.5-21B-A3B-Paddle这个模型只有21B参数量,跟gpt-4o和deepseek-v3的体量没法比。能写出一个可以执行的程序,就已经很不容易了!
能胜任Auto-Coder的驱动模型,也已经很不错了!
附文心开源大模型ERNIE-4.5-21B-A3B-Paddle写的雷电游戏:
import pygame
import sys
# Initialize pygame
pygame.init()
# Set up the game window
screen_width = 800
screen_height = 600
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption("Thunderbolt Clone")
# Colors
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
RED = (255, 0, 0)
# Player ship
player_width = 50
player_height = 30
player_x = screen_width // 2 - player_width // 2
player_y = screen_height - player_height - 10
player_speed = 5
# Enemies
enemy_width = 40
enemy_height = 30
enemy_x = screen_width
enemy_y = 0 # Start enemies at the top of the screen
enemy_speed = 3
# Bullets
bullet_width = 5
bullet_height = 15
bullet_x = player_x + player_width // 2 - bullet_width // 2 # Position bullets relative to player
bullet_y = screen_height - bullet_height - 10
bullet_speed = 7
# Game loop
clock = pygame.time.Clock()
running = True
# Create enemy sprite group
enemies = pygame.sprite.Group()
enemy = pygame.sprite.Sprite()
enemy.image = pygame.Surface((enemy_width, enemy_height))
enemy.image.fill(RED)
enemy.rect = enemy.image.get_rect()
enemy.rect.x = enemy_x
enemy.rect.y = enemy_y
enemies.add(enemy)
# Create bullet sprite group
bullets = pygame.sprite.Group()
# Score
score = 0
font = pygame.font.Font(None, 36)
# Create player sprite
player = pygame.sprite.Sprite()
player.image = pygame.Surface((player_width, player_height))
player.image.fill(WHITE)
player.rect = player.image.get_rect()
player.rect.x = player_x
player.rect.y = player_y
while running:
# Handle events
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
# Create a new bullet
bullet = pygame.sprite.Sprite()
bullet.image = pygame.Surface((bullet_width, bullet_height))
bullet.image.fill(WHITE)
bullet.rect = bullet.image.get_rect()
bullet.rect.x = bullet_x
bullet.rect.y = bullet_y
bullets.add(bullet)
# Get keys pressed
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT] and player.rect.x > 0:
player.rect.x -= player_speed
if keys[pygame.K_RIGHT] and player.rect.x < screen_width - player_width:
player.rect.x += player_speed
# Move enemies (fall from top to bottom)
enemy.rect.y += enemy_speed
if enemy.rect.top > screen_height:
enemy.rect.x = screen_width
enemy.rect.y = 0
# Move bullets (follow player)
for bullet in bullets:
bullet.rect.y -= bullet_speed
if bullet.rect.bottom < 0:
bullets.remove(bullet)
# Collision detection
hits = pygame.sprite.spritecollide(enemy, bullets, True)
for hit in hits:
score += 10
enemy = pygame.sprite.Sprite()
enemy.image = pygame.Surface((enemy_width, enemy_height))
enemy.image.fill(RED)
enemy.rect = enemy.image.get_rect()
enemy.rect.x = enemy_x
enemy.rect.y = enemy_y
enemies.add(enemy)
# Draw everything
screen.fill(BLACK)
screen.blit(player.image, (player.rect.x, player.rect.y))
enemies.draw(screen)
for bullet in bullets:
screen.blit(bullet.image, (bullet.rect.x, bullet.rect.y))
# Display score
score_text = font.render(f"Score: {score}", True, WHITE)
screen.blit(score_text, (10, 10))
# Update the display
pygame.display.flip()
# Cap the frame rate
clock.tick(60)
# Quit pygame
pygame.quit()
sys.exit()