-
DjangoにAdminLTEを入れるときのhtmlフォーマット
{% load static %} <!DOCTYPE html> <!-- This is a starter template page. Use this page to start your new project from scratch. This page gets rid of all links and provides the needed markup only. --> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>AdminLTE 3 | Starter</title> <!-- Google Font: Source Sans Pro --> <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700&display=fallback"> <!-- Font Awesome Icons --> <link rel="stylesheet" href="{% static 'AdminLTE-3.2.0/plugins/fontawesome-free/css/all.min.css' %}"> <!-- Theme style --> <link rel="stylesheet" href="{% static 'AdminLTE-3.2.0/dist/css/adminlte.min.css' %}"> <!-- toastr (AdminLTEの通知用プラグイン) --> <link rel="stylesheet" href="{% static 'AdminLTE-3.2.0/plugins/toastr/toastr.min.css' %}"> </head> <body class="hold-transition sidebar-mini"> <div class="wrapper"> <!-- Navbar --> <nav class="main-header navbar navbar-expand navbar-white navbar-light"> <!-- Left navbar links --> <ul class="navbar-nav"> <li class="nav-item"> <a class="nav-link" data-widget="pushmenu" href="#" role="button"><i class="fas fa-bars"></i></a> </li> <li class="nav-item d-none d-sm-inline-block"> <a href="index3.html" class="nav-link">Home</a> </li> <li class="nav-item d-none d-sm-inline-block"> <a href="#" class="nav-link">Contact</a> </li> </ul> <!-- Right navbar links --> <ul class="navbar-nav ml-auto"> <!-- Navbar Search --> <li class="nav-item"> <a class="nav-link" data-widget="navbar-search" href="#" role="button"> <i class="fas fa-search"></i> </a> <div class="navbar-search-block"> <form class="form-inline"> <div class="input-group input-group-sm"> <input class="form-control form-control-navbar" type="search" placeholder="Search" aria-label="Search"> <div class="input-group-append"> <button class="btn btn-navbar" type="submit"> <i class="fas fa-search"></i> </button> <button class="btn btn-navbar" type="button" data-widget="navbar-search"> <i class="fas fa-times"></i> </button> </div> </div> </form> </div> </li> <!-- Messages Dropdown Menu --> <li class="nav-item dropdown"> <a class="nav-link" data-toggle="dropdown" href="#"> <i class="far fa-comments"></i> <span class="badge badge-danger navbar-badge">3</span> </a> <div class="dropdown-menu dropdown-menu-lg dropdown-menu-right"> <a href="#" class="dropdown-item"> <!-- Message Start --> <div class="media"> <img src="{% static 'AdminLTE-3.2.0/dist/img/user1-128x128.jpg' %}" alt="User Avatar" class="img-size-50 mr-3 img-circle"> <div class="media-body"> <h3 class="dropdown-item-title"> Brad Diesel <span class="float-right text-sm text-danger"><i class="fas fa-star"></i></span> </h3> <p class="text-sm">Call me whenever you can...</p> <p class="text-sm text-muted"><i class="far fa-clock mr-1"></i> 4 Hours Ago</p> </div> </div> <!-- Message End --> </a> <div class="dropdown-divider"></div> <a href="#" class="dropdown-item"> <!-- Message Start --> <div class="media"> <img src="{% static 'AdminLTE-3.2.0/dist/img/user8-128x128.jpg' %}" alt="User Avatar" class="img-size-50 img-circle mr-3"> <div class="media-body"> <h3 class="dropdown-item-title"> John Pierce <span class="float-right text-sm text-muted"><i class="fas fa-star"></i></span> </h3> <p class="text-sm">I got your message bro</p> <p class="text-sm text-muted"><i class="far fa-clock mr-1"></i> 4 Hours Ago</p> </div> </div> <!-- Message End --> </a> <div class="dropdown-divider"></div> <a href="#" class="dropdown-item"> <!-- Message Start --> <div class="media"> <img src="{% static 'AdminLTE-3.2.0/dist/img/user3-128x128.jpg' %}" alt="User Avatar" class="img-size-50 img-circle mr-3"> <div class="media-body"> <h3 class="dropdown-item-title"> Nora Silvester <span class="float-right text-sm text-warning"><i class="fas fa-star"></i></span> </h3> <p class="text-sm">The subject goes here</p> <p class="text-sm text-muted"><i class="far fa-clock mr-1"></i> 4 Hours Ago</p> </div> </div> <!-- Message End --> </a> <div class="dropdown-divider"></div> <a href="#" class="dropdown-item dropdown-footer">See All Messages</a> </div> </li> <!-- Notifications Dropdown Menu --> <li class="nav-item dropdown"> <a class="nav-link" data-toggle="dropdown" href="#"> <i class="far fa-bell"></i> <span class="badge badge-warning navbar-badge">15</span> </a> <div class="dropdown-menu dropdown-menu-lg dropdown-menu-right"> <span class="dropdown-header">15 Notifications</span> <div class="dropdown-divider"></div> <a href="#" class="dropdown-item"> <i class="fas fa-envelope mr-2"></i> 4 new messages <span class="float-right text-muted text-sm">3 mins</span> </a> <div class="dropdown-divider"></div> <a href="#" class="dropdown-item"> <i class="fas fa-users mr-2"></i> 8 friend requests <span class="float-right text-muted text-sm">12 hours</span> </a> <div class="dropdown-divider"></div> <a href="#" class="dropdown-item"> <i class="fas fa-file mr-2"></i> 3 new reports <span class="float-right text-muted text-sm">2 days</span> </a> <div class="dropdown-divider"></div> <a href="#" class="dropdown-item dropdown-footer">See All Notifications</a> </div> </li> <li class="nav-item"> <a class="nav-link" data-widget="fullscreen" href="#" role="button"> <i class="fas fa-expand-arrows-alt"></i> </a> </li> <li class="nav-item"> <a class="nav-link" data-widget="control-sidebar" data-slide="true" href="#" role="button"> <i class="fas fa-th-large"></i> </a> </li> </ul> </nav> <!-- /.navbar --> <!-- Main Sidebar Container --> <aside class="main-sidebar sidebar-dark-primary elevation-4"> <!-- Brand Logo --> <a href="index3.html" class="brand-link"> <img src="{% static 'AdminLTE-3.2.0/dist/img/AdminLTELogo.png' %}" alt="AdminLTE Logo" class="brand-image img-circle elevation-3" style="opacity: .8"> <span class="brand-text font-weight-light">AdminLTE 3</span> </a> <!-- Sidebar --> <div class="sidebar"> <!-- Sidebar user panel (optional) --> <div class="user-panel mt-3 pb-3 mb-3 d-flex"> <div class="image"> <img src="{% static 'AdminLTE-3.2.0/dist/img/user2-160x160.jpg' %}" class="img-circle elevation-2" alt="User Image"> </div> <div class="info"> <a href="#" class="d-block">Alexander Pierce</a> </div> </div> <!-- SidebarSearch Form --> <div class="form-inline"> <div class="input-group" data-widget="sidebar-search"> <input class="form-control form-control-sidebar" type="search" placeholder="Search" aria-label="Search"> <div class="input-group-append"> <button class="btn btn-sidebar"> <i class="fas fa-search fa-fw"></i> </button> </div> </div> </div> <!-- Sidebar Menu --> <nav class="mt-2"> <ul class="nav nav-pills nav-sidebar flex-column" data-widget="treeview" role="menu" data-accordion="false"> <!-- Add icons to the links using the .nav-icon class with font-awesome or any other icon font library --> <li class="nav-item menu-open"> <a href="#" class="nav-link active"> <i class="nav-icon fas fa-tachometer-alt"></i> <p> Starter Pages <i class="right fas fa-angle-left"></i> </p> </a> <ul class="nav nav-treeview"> <li class="nav-item"> <a href="#" class="nav-link active"> <i class="far fa-circle nav-icon"></i> <p>Active Page</p> </a> </li> <li class="nav-item"> <a href="#" class="nav-link"> <i class="far fa-circle nav-icon"></i> <p>Inactive Page</p> </a> </li> </ul> </li> <li class="nav-item"> <a href="#" class="nav-link"> <i class="nav-icon fas fa-th"></i> <p> Simple Link <span class="right badge badge-danger">New</span> </p> </a> </li> </ul> </nav> <!-- /.sidebar-menu --> </div> <!-- /.sidebar --> </aside> <!-- Content Wrapper. Contains page content --> <div class="content-wrapper"> <!-- Content Header (Page header) --> <div class="content-header"> <div class="container-fluid"> <div class="row mb-2"> <div class="col-sm-6"> <h1 class="m-0">Starter Page</h1> </div><!-- /.col --> <div class="col-sm-6"> <ol class="breadcrumb float-sm-right"> <li class="breadcrumb-item"><a href="#">Home</a></li> <li class="breadcrumb-item active">Starter Page</li> </ol> </div><!-- /.col --> </div><!-- /.row --> </div><!-- /.container-fluid --> </div> <!-- /.content-header --> <!-- Main content --> <div class="content"> <div class="container-fluid"> <div class="row"> <div class="col-lg-6"> <div class="card"> <div class="card-body"> <h5 class="card-title">Card title</h5> <p class="card-text"> Some quick example text to build on the card title and make up the bulk of the card's content. </p> <a href="#" class="card-link">Card link</a> <a href="#" class="card-link">Another link</a> </div> </div> <div class="card card-primary card-outline"> <div class="card-body"> <h5 class="card-title">Card title</h5> <p class="card-text"> Some quick example text to build on the card title and make up the bulk of the card's content. </p> <a href="#" class="card-link">Card link</a> <a href="#" class="card-link">Another link</a> </div> </div><!-- /.card --> </div> <!-- /.col-md-6 --> <div class="col-lg-6"> <div class="card"> <div class="card-header"> <h5 class="m-0">Featured</h5> </div> <div class="card-body"> <h6 class="card-title">Special title treatment</h6> <p class="card-text">With supporting text below as a natural lead-in to additional content.</p> <a href="#" class="btn btn-primary">Go somewhere</a> </div> </div> <div class="card card-primary card-outline"> <div class="card-header"> <h5 class="m-0">Featured</h5> </div> <div class="card-body"> <h6 class="card-title">Special title treatment</h6> <p class="card-text">With supporting text below as a natural lead-in to additional content.</p> <a href="#" class="btn btn-primary">Go somewhere</a> </div> </div> </div> <!-- /.col-md-6 --> </div> <!-- /.row --> </div><!-- /.container-fluid --> </div> <!-- /.content --> </div> <!-- /.content-wrapper --> <!-- Control Sidebar --> <aside class="control-sidebar control-sidebar-dark"> <!-- Control sidebar content goes here --> <div class="p-3"> <h5>Title</h5> <p>Sidebar content</p> </div> </aside> <!-- /.control-sidebar --> <!-- Main Footer --> <footer class="main-footer"> <!-- To the right --> <div class="float-right d-none d-sm-inline"> Anything you want </div> <!-- Default to the left --> <strong>Copyright &copy; 2014-2021 <a href="https://adminlte.io">AdminLTE.io</a>.</strong> All rights reserved. </footer> </div> <!-- ./wrapper --> <!-- REQUIRED SCRIPTS --> <!-- jQuery --> <script src="{% static 'AdminLTE-3.2.0/plugins/jquery/jquery.min.js' %}"></script> <!-- Bootstrap 4 --> <script src="{% static 'AdminLTE-3.2.0/plugins/bootstrap/js/bootstrap.bundle.min.js' %}"></script> <!-- AdminLTE App --> <script src="{% static 'AdminLTE-3.2.0/dist/js/adminlte.min.js' %}"></script> <script src="{% static 'AdminLTE-3.2.0/plugins/toastr/toastr.min.js' %}"></script> </body> </html>
-
超簡単javascriptのaccordion実装
まずjQueryをlinkでつける <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> 上記をheadタグに置いておくそして、以下のような構成のhtmlを書く <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button">ボタンだよ</button> </h2> <div class="accordion-collapse"> <ul> <li>aaa</li> </ul></div></div> そして以下のようなstyleを入れる。 <style> .accordion-header { position: relative; cursor: pointer; transition: all .5s ease; } .accordion-header::before, .accordion-header::after{ position: absolute; } .accordion-collapse { display: none; }</style> あとはjavascriptのコードを入れるだけ <script> $(document).ready(function() { $('.accordion-button').on('mouseover', function() { var findElm = $(this).parent().next(".accordion-collapse"); $(findElm).slideToggle(); }); }); $(document).ready(function() { $('.accordion-item').on('mouseleave', function() { $(".accordion-collapse").slideUp(500); }); });</script> cssに関してはChatGPTなどで肉付けしてもらうと良いでしょう。
-
誰でもできる簡単ChatGPTのfine-tuning!!
ChatGPTのファインチューニング、やっぱ難しいんじゃないのお?と思ったそこのあなた!実はとっても簡単なんです!!ではまず手順について説明していきます手順モデルの決定(chatモデルではない)プロンプトの作成キャッシュDBの割り当てデータの収集jsonlファイルの作成・正例と負例の分類ファインチューニングたったの6ステップ!しかもファインチューニングだけなら無料でできますそれでは詳しく説明していきます手順1まず最初に適当なモデルの決定を行なってください。ここではchatモデルは使いません。理由としましては、手順3のキャッシュDBを使えないからです。今回、このキャッシュDBを使うことでデータの整形がさらに簡単になることを説明していきたいので、キャッシュDBを使うことを想定して説明を続けていきます。chatモデルではないモデルの例) text-davinci-003,text-davinci-002手順2プロンプトの作成を行います。好きなプロンプトを書いてください。後々整形したい場合も出てくる可能性もあるので、最初は短めで書いてみるといいかもしれません。(json形式にするとちょっと崩れる)手順3キャッシュDBの割り当てを行います。と言っても既存のLLMモデルを扱うコードに以下の数行を書き加えるだけです。from langchain.cache import SQLiteCache langchain.llm_cache = SQLiteCache(database_path="langchain_cache.db")また、この際、VSCodeで実行している方は、SQLite Viewerという拡張機能を追加することで、簡単に中身を見ることができます。そこで何となく、どんな感じで入るかを確認しておいてください。手順4データの収集を行います。これはただ何度も実行していただくだけで結構です。正例と負例を大体それぞれ50個ずつくらいになるように集めると良いでしょう。手順5続いてjsonlファイルの作成・正例と負例の分類を行なっていきます。簡単に言うとfine-tuningに用いる学習データのためのデータの整形です。まず、sqlitedatastore.pyというファイルを作り、以下のコードを貼り付けますこちらはキャッシュDBを操作するためのSQLのコードを集めておくためのファイルになりますimport json import sqlite3 conn = None def connect(db_name="langchain_cache.db"): global conn conn = sqlite3.connect(db_name) def close(): conn.close() def get(id, fl): row_ls = conn.execute("SELECT {} FROM full_llm_cache WHERE rowid = ?".format(",".join(fl)), (id,)).fetchone() row_dict = {} if row_ls is None: return None for key, value in zip(fl, row_ls): row_dict[key] = value return row_dict def get_all_ids(limit, offset=0): return [record[0] for record in conn.execute("SELECT rowid FROM full_llm_cache LIMIT ? OFFSET ?", (limit, offset))]続いて、sqlitedatastore.pyのコードを使ってキャッシュDBを扱うためのファイルを作ります。ファイル名は何でもいいですが、ここではcache_db.pyとしておきます。そしてcache_db.pyに以下のコードを貼り付けてください。import sqlitedatastore as datastore import json class Cache_db: def connect(self): datastore.connect() def close(self): datastore.close() def get(self, id): return datastore.get(id, fl=["prompt", "response"]) def get_all(self): json_data_list = [] for ID in datastore.get_all_ids(limit=-1): json_data = self.get(ID) json_data_format = { "prompt": json_data.get("prompt"), "completion": json_data.get("response") } json_data_list.append(json_data_format) return json_data_list if __name__=="__main__": dc = Cache_db() dc.connect() jsonl_data = dc.get_all() with open('training_data.jsonl', 'w') as f: f.writelines([json.dumps(l, ensure_ascii=False)+"\n" for l in jsonl_data]) dc.close()上記のcache_db.pyを実行することで、jsonlファイルの作成は完了です。続いて正例と負例の分類ですが、こちらは自身が持つ正解を元に、training_data.jsonlをsuccessful.jsonlとfailed.jsonlに仕分けてもらえれば大丈夫です。コードでできる場合は、コードで。難しそうであれば手作業でも問題ないです。手順6最後にfine-tuningを行なっていきます。こちらはOpenAIのサイトに行って、successful.jsonlとfailed.jsonlをアップするだけで終わりますいかがだったでしょうか!以上でfine-tuningは完了です。手順は6つと少ないステップで簡単にできてしまうのがChatGPTのすごいところです。しかし、fine-tuningには少し時間がかかってしまうので、時間がある時にやっておくと良いでしょう。また、ローカルで今回fine-tuningをしたモデルを使いたい方、そしてローカルからfine-tuningをしたい方は以下のサイトを参考にすると良いかもしれませんurl: https://qiita.com/ksonoda/items/b9fd3e709aeae79629ff