「.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
LLMチャット系ツール:ローカルまたはWeb上でLLM(大規模言語モデル)やAIアプリのインターフェースを作る用途に使われる。
パッケージのインストール
pip install gradio
import gradio as gr
def greet(name):
return "Hello " + name + "!"
demo = gr.Interface(fn=greet, inputs="text", outputs="text")
demo.launch(inbrowser=True)import gradio as gr
# greet関数に state を追加
def greet(name, session_state):
if session_state is None:
session_state = [] # 初回は空リスト
session_state.append(name) # 入力された名前をセッションに追加
greeting = "Hello " + name + "!"
history = "Session History: " + ", ".join(session_state)
return greeting, session_state, history
with gr.Blocks() as demo:
session_state = gr.State([]) # セッション状態の初期化
name_input = gr.Textbox(label="Your Name")
output_text = gr.Textbox(label="Greeting")
history_text = gr.Textbox(label="Session History")
greet_btn = gr.Button("Greet")
greet_btn.click(
greet,
inputs=[name_input, session_state],
outputs=[output_text, session_state, history_text]
)
demo.launch(inbrowser=True)import os
import gradio as gr
from openai import OpenAI
client = OpenAI()
def chat_fn(message, history):
# history は [{role: "...", content: "..."}, ...] の配列
messages = history + [{"role": "user", "content": message}]
print(messages)
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=messages,
)
# message は dict なので .content を使う
reply = response.choices[0].message.content
return reply
demo = gr.ChatInterface(
chat_fn,
title="Gradio × OpenAI 2.8.1 Chat UI",
)
demo.launch(inbrowser=True)import os
import gradio as gr
from openai import OpenAI
client = OpenAI()
def chat_fn(message, history, use_option):
if use_option:
print("RAG")
retriever = index.as_retriever(similarity_top_k=2)
nodes = retriever.retrieve(message)
temp = ""
for node in nodes:
temp += node.text
temp += f"\n--------------------------------------------------\n"
message += f"\n検索で取得した参考情報:\n" + temp
else:
print("NORMAL")
# history は [{role: "...", content: "..."}, ...] の配列
messages = history + [{"role": "user", "content": message}]
print(messages)
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=messages,
)
# message は dict なので .content を使う
reply = response.choices[0].message.content
return reply
checkbox = gr.Checkbox(label="RAGモード", value=False)
demo = gr.ChatInterface(
chat_fn,
additional_inputs=[checkbox],
title="Gradio × OpenAI 2.8.1 Chat UI",
)
demo.launch(inbrowser=True)Gradio UIに次いでプロトタイプ向きだが、本番向きでもある(大規模な商用からは一段落ちる)。
※ 参考:https://github.com/OpenTouryoProject/DxCommon/blob/master/Notebook/path/LLM_Streamlit.py
パッケージのインストール
pip install streamlit
streamlit run LLM_Streamlit.py
http://localhost:8501/
OSSの代表格っぽい名称のChatUIプロダクト
docker run -d -p 5955:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
http://127.0.0.1:5955/
http://host.docker.internal:11434
LLMエージェントとの対話に特化したチャットアプリやツールを素早く構築するためのフレームワーク
「OllamaならWebUI提供するよね」と言う感じ。