Roo Cline をDeepSeek APIで動かしてみた。
Roo ClineはOpenAIのAPIキーで使っていたが、DeepSeek API使うとChatGPT o1レベルを安く使えると聞いたので試してました。
https://platform.deepseek.com/api_keys
上記のサイトに行って$4ほどPayPal使ってチャージしてみた。
skで始まるAPIキーを取得した。
Roo ClineのAPI Providerを「DeepSeek」
API KeyをセットしてModelを「deepseek-reasoner」に変える。
使ってみたけど問題なく動くみたいです。
OpenAIはAPI代が安い4o-miniを使ってたのでどのくらい違うのか楽しみですね。
Roo Clineへの質問は
Q.「Flaskをつかったユーザー認証システムを作ってください。 フォルダは/home/garyo/project/flask/loginです。 機能: ユーザー登録・ログイン・ログアウト 学べること: Flask-Loginによる認証、セッション管理、パスワードハッシュ化 主な技術: Flask-Login, Flask-Bcrypt, Flask-SQLAlchemy」
Task Completed
認証システムが正常に動作しました。以下の機能が実装されています:
ユーザー新規登録(パスワードハッシュ化済み)
ログイン/ログアウト機能
セッション管理
データベース自動生成(SQLite)
ルート保護機能
テストユーザー登録後、正常にログイン/ログアウト操作が確認できました。
確かに出来ていました。
from flask import Flask, render_template, redirect, url_for, request
from flask_sqlalchemy import SQLAlchemy
from flask_login import LoginManager, UserMixin, login_user, login_required, logout_user, current_user
from flask_bcrypt import Bcrypt
app = Flask(__name__)
app.config['SECRET_KEY'] = 'your-secret-key-here'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
bcrypt = Bcrypt(app)
login_manager = LoginManager(app)
login_manager.login_view = 'login'
class User(UserMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
password_hash = db.Column(db.String(120), nullable=False)
@login_manager.user_loader
def load_user(user_id):
return User.query.get(int(user_id))
@app.route('/')
@login_required
def home():
return render_template('home.html', username=current_user.username)
@app.route('/register', methods=['GET', 'POST'])
def register():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
hashed_password = bcrypt.generate_password_hash(password).decode('utf-8')
new_user = User(username=username, password_hash=hashed_password)
db.session.add(new_user)
db.session.commit()
return redirect(url_for('login'))
return render_template('register.html')
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
user = User.query.filter_by(username=username).first()
if user and bcrypt.check_password_hash(user.password_hash, password):
login_user(user)
return redirect(url_for('home'))
return render_template('login.html')
@app.route('/logout')
@login_required
def logout():
logout_user()
return redirect(url_for('login'))
if __name__ == '__main__':
with app.app_context():
db.create_all()
print("Database tables created successfully")
app.run(debug=True)
@app.before_first_request
def initialize_database():
with app.app_context():
db.create_all()
templates/login.html
<!DOCTYPE html>
<html>
<head>
<title>ログイン</title>
</head>
<body>
<h2>ログイン</h2>
<form method="POST">
<div>
<label>ユーザー名:</label>
<input type="text" name="username" required>
</div>
<div>
<label>パスワード:</label>
<input type="password" name="password" required>
</div>
<button type="submit">ログイン</button>
</form>
<p>アカウントをお持ちでないですか? <a href="{{ url_for('register') }}">新規登録</a></p>
</body>
</html>
templates/home.html
<!DOCTYPE html>
<html>
<head>
<title>ホーム</title>
</head>
<body>
<h2>ようこそ {{ username }} さん</h2>
<a href="{{ url_for('logout') }}">ログアウト</a>
</body>
</html>
templates/register.html
<!DOCTYPE html>
<html>
<head>
<title>ログイン</title>
</head>
<body>
<h2>ログイン</h2>
<form method="POST">
<div>
<label>ユーザー名:</label>
<input type="text" name="username" required>
</div>
<div>
<label>パスワード:</label>
<input type="password" name="password" required>
</div>
<button type="submit">ログイン</button>
</form>
<p>アカウントをお持ちでないですか? <a href="{{ url_for('register') }}">新規登録</a></p>
</body>
</html>
これを自動で作ってもらって$0.10(15 円)でした。