AIエージェントの作り方。道具と繰り返しの50行から
AIエージェントは、
文 ゆめさく ・ 2026年10月23日
AIエージェントとは
AIエージェントは、
- 1 回の
頼みごと。 チャットの AI は 1 回答えて 終わり、 エージェントは 済むまで 何度も回ります - 外の世界。
チャットの AI は 触れず、 エージェントは 渡された 道具で 触れます。 道具は ファイル、 検索、 社内の 仕組みなどです - 作る
人が書く物。 チャットの AI は 頼みの 文だけ、 エージェントは 道具と 繰り返しの 決まりまで書きます
Claude Code や Codex も、
中で 回っている 3 つの部品
- モデル。
次に 何を するかを 決める 頭です。 道具を 使うか、 もう 答えるかを選びます - 道具。
名前と 説明と、 受け取る 値の 形を 渡します。 モデルは 説明を 読んで 使うか どうかを 決め、 実際に 動かすのは 自分の コードです - 繰り返し。
モデルが 道具を 使いたいと 言う間は、 結果を 返して もう 一度聞きます。 止める 条件を 自分で決めます
モデルは
手を 動かす最小の例
フォルダの
用意する
ターミナル
pip install anthropic
export ANTHROPIC_API_KEY="ここに自分の鍵"agent.py という
Python
import json
import os
import anthropic
client = anthropic.Anthropic()
# 1 道具の説明。AI はこれを読んで、使うかどうかを決める
tools = [{
"name": "list_files",
"description": "フォルダの中のファイル名とバイト数を返す",
"input_schema": {
"type": "object",
"properties": {"folder": {"type": "string"}},
"required": ["folder"],
},
}]
# 2 道具の中身。実際に動かすのは自分のコード
def list_files(folder):
names = [n for n in os.listdir(folder)
if os.path.isfile(os.path.join(folder, n))]
return {n: os.path.getsize(os.path.join(folder, n)) for n in names}
messages = [{"role": "user",
"content": "このフォルダ (.) でいちばん大きいファイルは?"}]
# 3 繰り返し。道具を呼ぶ間は回し、10 回で止める
for turn in range(10):
res = client.messages.create(
model="claude-opus-5-5",
max_tokens=16000,
tools=tools,
messages=messages,
)
messages.append({"role": "assistant", "content": res.content})
if res.stop_reason != "tool_use":
print("".join(b.text for b in res.content if b.type == "text"))
break
results = []
for block in res.content:
if block.type == "tool_use":
print("道具を呼ぶ", block.name, block.input)
out = list_files(**block.input)
results.append({
"type": "tool_result",
"tool_use_id": block.id,
"content": json.dumps(out, ensure_ascii=False),
})
messages.append({"role": "user", "content": results})
else:
print("10 回で止めました。答えはまだ出ていません")ターミナル
python agent.py動くと、list_files を
どこを 変えると 何が変わるか
- 道具を足す。
toolsに 1 つ足し、中身の 関数を 書きます。 たとえば ファイルの 中身を 読む道具を 足すと、 「いちばん 大きいファイルの 中身を 要約して」にも 答えられます - 頼みの
文を変える。 messagesの最初の 文を 変えます。 道具で 答えられない 頼みには、 モデルは 道具を 使わずに答えます - 道具を
共通の 形で渡す。 道具を エージェントごとに 書かず、 共通の 規格で つなぐのが MCP です。 作り方は MCP サーバーの作り方に まとめています - 止める
条件を変える。 range(10)が上限で、 使い切ると 最後の elseに入ります。 道具が 外の 仕組みに 書き込むなら、 上限は 小さく保ちます
よく あるつまずき
繰り返しが
止める
道具の
モデルは
道具の
モデルが
危ない
削除や
鍵を
API の
作れる 人に来る仕事
エージェントの
- 社内の
問い 合わせに 答える仕組み。 エージェントは 社内の 資料を 探して 答え、 人は 答えて よい 範囲と、 間違えた ときの 窓口を決めます - 書類の
下書きと 振り分け。 エージェントは 読んで 分け、 下書きを 作ります。 最後に 出すか どうかは 人が決めます - 決まった
調べものを 任せる仕組み。 エージェントは 検索して 表に まとめ、 人は 調べる 元と 確かめ方を決めます - いまある
道具への 組み込み。 エージェントは 道具を 呼んで 手順を 進め、 人は 任せる 操作と 止める 条件を決めます
公開の数字
クラウドワークスの
| 検索した語 | 件数 |
|---|---|
| AIエージェント | 672 件 |
| 業務自動化 | 546 件 |
| 生成AI | 10,096 件 |
会社に
最初の
よくある質問
ノーコードの
モデルと、
この
出典
あわせて見る
ゆめさくコードでできること
最小の例は 2026年10月23日に Python と anthropic 2.1.0 で、道具の呼び出しと結果の返し方の形を SDK の型に当てて確かめました。モデルの名前と料金は変わるので、公式の文書を正としてください。件数と賃金の数字は、頁に書いた日付の時点の物です。




