Интерфейс White john FLUX1 закрылся, что привело к большой потере трафика на этом сайте... Ну, мы выяснили, как развернуть FLUX1 API бесплатно!
API FLUX1, предоставленный третьей стороной для вставки подсказывающих слов в URL (https://api-flux1.api4gpt.com/?prompt=), был базовым сервисом для бесплатного инструмента генерации лидов на этом сайте, который недавно был закрыт, что привело к уменьшению количества ежедневных посетителей этого сайта. Этот API можно прочитать Full Blooded FLUX.1: использование FLUX онлайн без локального развертывания Он описан в конце статьи. О том, как использовать FLUX1 API для привлечения трафика, вы можете узнать из статьи на этом сайте о Wenxin Intelligent Body, которая была открыто опубликована, но, к сожалению, многие люди не осознают ее важности.
Возвращаясь к теме, платный API FLUX1 действительно недоступен, я слышал раньше, что Поток на основе кремния Предоставляется бесплатный FLUX1 API, но я не знаю кода, знаю английские слова ограниченно, и нет бесплатного сервера для развертывания сервиса, это трудно здесь .......
Эта статья в основном для обмена идеями, и не обеспечивает полный процесс работы, в конце статьи, чтобы обеспечить непосредственно доступный код проекта.
Перейдите в режим размышлений...
1. стабилен ли свободный интерфейс потока на основе кремния...
2. Что делать, если бесплатный интерфейс снова закрывается...
3. Как написан код...
4. основной вопрос: в качестве базовой услуги, самая большая проблема заключается в том, что адрес доступа остается неизменным в случае быстрого переключения услуг, не влияя на использование существующих пользователей, если платить за использование стоимость может быть карман обратно, почему нет?
проектировать что-л.
1. я создам URL с тем же форматом, но этот URL будет моим, выберите доменное имя img.kdjingpai.com
2. простой API интерфейс документации вход в большой модели должен быть в состоянии написать запускаемый код
3. надеюсь, что можно развернуть на рабочих cloudflare (на самом деле я не понимаю, что поддерживают рабочие)
4. Чрезмерные некоторые требования, оригинальный интерфейс поддерживает только сращивание слов подсказки, на самом деле, есть некоторые потребности не были удовлетворены
рабочий процесс
Найдите бесплатную документацию по интерфейсу FLUX для Silicon Mobility и самостоятельно найдите адрес интерфейса и KEY.

Документация была собрана и вставлена в Claude с четким указанием сгенерировать рабочий код, и в результате первого раунда был получен исполняемый код.

На самом деле, здесь на конце, пока код для работников, привязанных к доменному имени, может быть в отечественном нормальный доступ, просто сказал оригинальный интерфейс некоторые из потребностей не были удовлетворены, поэтому код снова на основе продолжать оптимизировать.
Спрос 1
Позволяет изменять размер генерируемого изображения в URL, если размер изображения не указан, по умолчанию генерируется изображение 512x512 (оно вводится в большую модель, чтобы получить новый код).
К этому моменту вы поймете, что квоты Клода может не хватить, тогда безлимитная квота Claude Mirror Station: Sonnet, Haiku, Opus полный ассортимент моделей бесплатно! Он готов к работе.
Спрос 2
Когда подсказка слово ввода китайского, не может быть нормальным и правильно сгенерированные изображения, поэтому подсказка часть преобразования на английский язык, в это время необходимость большой модели или интерфейс перевода для завершения свободного интерфейса перевода слишком лениво, чтобы найти, общность не сильна, поэтому я хочу получить доступ к Бесплатный API Big Model Я выбрал GLM-4-Flash от Wisdom Spectrum.
Зайдите в документацию по интерфейсу GLM-4-Flash и сгенерируйте код по запросу:

В код был добавлен новый сниппет для перевода, который, к сожалению, выполняется правильно при единственном запросе, поэтому последующее тестирование не проводилось:

Спрос 3
Вводимые пользователем слова подсказки могут быть слишком простыми, а генерируемая композиция изображений и элементы не выглядят так хорошо, это просто заимствовано из API большой модели требования 2 для оптимизации слов подсказки, вводимых пользователем, функция оптимизации слов подсказки в качестве параметра может быть вставлена в URL, на этот раз я использовал ChatGPT для разговора и получил следующий код, и, конечно, инструкция по оптимизации композиции предоставляется мной отдельно:

При слишком сложных инструкциях сгенерированное изображение легко теряет форму, а выходной формат оптимизированного слова подсказки нестабилен, поэтому для слова подсказки требования 3 было проведено несколько раундов оптимизации в качестве отдельного задания, чтобы получить следующие инструкции:

Спрос 4
Как технический белый, очень непривычно работать в командной строке, и не будет смотреть на сообщение об ошибке, поэтому я попросил большой модели для создания GUI интерфейс, выполнение кода в любом исключении также требуется для непосредственного отображения интерфейса, который решает ежедневную отладку простоту использования.
Оцените этот скромный интерфейс: https://img.kdjingpai.com/GUI/ (пожалуйста, не используйте его в государственных службах, пощадите меня...)
Готовый продукт
Справка пишется в коде, а также предоставляет графический интерфейс, но не для того, чтобы улучшить пользовательский опыт, а как часть кода, чтобы позволить большой модели быть измененной естественным образом, как контекст для размышлений, чтобы избежать ошибок. Однако слишком длинный код все равно может привести к неправильной интерпретации большой модели, что требует компромисса.
Добавление полных комментариев и использование справки - хорошие привычки для обычного человека, пишущего код.
Далее я попросил Клода оптимизировать код в несколько раундов и получил следующий полный код. На самом деле, здесь еще много места для оптимизации, например, большая модель подсказывает мне, что лучше абстрагировать переменные, чтобы обеспечить безопасность программы, сократить количество раундов суждения и разобраться с такими проблемами, как логика задержки запроса, которые я не буду рассматривать. Пожалуйста, скопируйте и вставьте, чтобы использовать напрямую:
Полная документация по развертыванию доступна по адресу: https://github.com/pptt121212/freefluxapi.
// Constants const IMAGE_API_URL = 'https://api.siliconflow.cn/v1/image/generations'; const IMAGE_API_KEY = ''; const PROCESS_API_URL = 'https://open.bigmodel.cn/api/paas/v4/chat/completions'; const PROCESS_API_KEY = ''; const DEFAULT_SIZE = '512x512'; const SIZE_REGEX = /^\d+x\d+$/; const NON_ASCII_REGEX = /[^\x00-\x7F]/; addEventListener('fetch', event => { event.respondWith(handleRequest(event.request)); }); async function handleRequest(request) { try { const url = new URL(request.url); // Check if the request is for the GUI page if (url.pathname === '/GUI/') { return new Response(getGuiPage(), { headers: { 'Content-Type': 'text/html' } }); } const prompt = url.searchParams.get('prompt'); // Check if the prompt is valid if (!prompt) { return new Response(getUsageInstructions(), { headers: { 'Content-Type': 'text/html' } }); } const { size, optimization } = parseRequestParams(request); const processedPrompt = await getProcessedPrompt(prompt, optimization); const imageUrl = await getImageUrl(processedPrompt, size); return await fetchAndReturnImage(imageUrl); } catch (error) { return new Response(error.message, { status: error.status || 500 }); } } function parseRequestParams(request) { const url = new URL(request.url); const size = url.searchParams.get('size') || DEFAULT_SIZE; const optimization = url.searchParams.get('optimization') === '1'; if (!SIZE_REGEX.test(size)) { throw new Error('Invalid size parameter. Use format: widthxheight'); } return { size, optimization }; } async function getProcessedPrompt(prompt, optimization) { if (!NON_ASCII_REGEX.test(prompt) && !optimization) { return prompt; } return processPrompt(prompt, optimization); } async function getImageUrl(prompt, size) { const response = await fetch(IMAGE_API_URL, { method: 'POST', headers: { 'Accept': 'application/json', 'Authorization': `Bearer ${IMAGE_API_KEY}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ model: "black-forest-labs/FLUX.1-schnell", prompt, image_size: size }) }); if (!response.ok) { throw new Error(`API error: ${response.status}`); } const data = await response.json(); const imageUrl = data?.images?.[0]?.url; if (!imageUrl) { throw new Error('Unexpected API response format'); } return imageUrl; } async function fetchAndReturnImage(imageUrl) { const imageResponse = await fetch(imageUrl); const imageBlob = await imageResponse.blob(); return new Response(imageBlob, { headers: { 'Content-Type': imageResponse.headers.get('Content-Type') } }); } async function processPrompt(text, optimize) { const content = optimize ? ` # 优化以下图像prompt,保留prompt主要元素基础上使细节、构图更加丰富: ## 图像prompt: ${text} ## 优化要求 1. 优化后的图像prompt是一组<英文TAG标签>,每个TAG应该遵循构图的基本原则,将画风、构图、主体、动作、场景、元素、按顺序进行描述。 2. <英文TAG标签>中每个词组用逗号","分割,逗号","前后不允许有"空格"。 # 仅仅输出优化后的图像prompt,不要有其他说明: ` : `请将以下内容翻译为英文,保持原意:${text}`; const response = await fetch(PROCESS_API_URL, { method: 'POST', headers: { 'Authorization': `Bearer ${PROCESS_API_KEY}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ model: "GLM-4-Flash", messages: [{ role: "user", content }] }) }); if (!response.ok) { throw new Error(`Translation/Optimization API error: ${response.status}`); } const data = await response.json(); return data.choices?.[0]?.message?.content?.trim() || text; } // 函数:返回使用说明的HTML内容 function getUsageInstructions() { return ` <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>使用说明</title> </head> <body> <h1>使用说明</h1> <p>欢迎使用图像生成 API!请按照以下步骤生成您的图像:</p> <h2>1. 请求格式</h2> <p>访问 API 的 URL 格式如下:</p> <pre>https://your-worker-url/?prompt={您的提示}&size={图像尺寸}&optimization={优化选项}</pre> <h3>参数说明</h3> <ul> <li><strong>prompt</strong>: (必填) 您想要生成图像的描述文本,例如“一位女孩”。</li> <li><strong>size</strong>: (可选) 图像的尺寸,格式为 <code>宽度x高度</code>,默认为 <code>512x512</code>。例如:<code>256x256</code> 或 <code>1024x768</code>。</li> <li><strong>optimization</strong>: (可选) 是否进行优化,值为 <code>1</code> 表示进行优化,值为 <code>0</code> 或不提供该参数表示不进行优化。</li> </ul> <h2>2. 返回结果</h2> <p>访问 API 后,您将获得生成的图像。若请求成功,您将看到生成的图像。如果请求失败,您会看到错误信息。</p> <h2>3. 示例请求</h2> <p>您可以通过以下示例请求生成图像:</p> <pre>https://your-worker-url/?prompt=一位女孩&size=512x512&optimization=1</pre> <p>此请求将生成一幅描述为“一位女孩”的图像,并将其大小设置为 512x512 像素,并进行优化。</p> <h2>4. 注意事项</h2> <ul> <li>确保您的 <code>prompt</code> 参数包含有效的描述。</li> <li><code>size</code> 参数应遵循 <code>宽度x高度</code> 格式。</li> <li>如果使用优化功能,确保 <code>prompt</code> 中包含非 ASCII 字符。</li> </ul> <p>如有任何问题,请随时联系支持团队!</p> </body> </html> `; } // 添加图形化用户界面功能 function getGuiPage() { return ` <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>图像生成 GUI</title> </head> <body> <h1>图像生成</h1> <form id="imageForm"> <label for="prompt">图像描述:</label><br> <input type="text" id="prompt" required><br><br> <label for="size">图像尺寸 (格式: 宽度x高度,默认: 512x512):</label><br> <input type="text" id="size" value="512x512" required><br><br> <label for="optimization">是否优化:</label><br> <select id="optimization"> <option value="0">不优化</option> <option value="1">优化</option> </select> <p>优化选项说明: 选择“优化”将使生成的图像具有更丰富的细节和构图。</p><br> <button type="submit">生成图像</button> </form> <h2>生成结果:</h2> <div id="result"></div> <div id="status"></div> <script> document.getElementById('imageForm').addEventListener('submit', async (event) => { event.preventDefault(); const prompt = document.getElementById('prompt').value; const size = document.getElementById('size').value; const optimization = document.getElementById('optimization').value; // 更新状态信息 document.getElementById('status').innerText = '正在处理请求...'; try { const response = await fetch(\`/\?prompt=\${encodeURIComponent(prompt)}&size=\${size}&optimization=\${optimization}\`); if (response.ok) { const blob = await response.blob(); const img = document.createElement('img'); img.src = URL.createObjectURL(blob); img.style.maxWidth = '100%'; document.getElementById('result').innerHTML = ''; document.getElementById('result').appendChild(img); document.getElementById('status').innerText = '图像生成成功!'; } else { document.getElementById('result').innerText = '生成图像失败: ' + response.statusText; document.getElementById('status').innerText = '请求失败,状态码: ' + response.status; } } catch (error) { document.getElementById('result').innerText = '生成图像过程中出现错误: ' + error.message; document.getElementById('status').innerText = '错误信息: ' + error.message; } }); </script> </body> </html> `; }
Людям свойственно хотеть того, чего они хотят...
В финальном git-коде оптимизировано множество деталей, в частности, абстрагирование от KEY, которыми нужно управлять по отдельности, и нагрузки на опрос нескольких KEY.
Затем в соответствии с кодом генерируется виджет генерации изображений wordpress, который вы можете увидеть в правой части страницы поста.
Одна вещь, о которой я сожалею: я хотел бы хранить кэш сгенерированных изображений и соответствующих URL-адресов, чтобы избежать повторной генерации изображений, когда пользователь повторно открывает или обновляет URL-адрес. Логика этой функции сложна, поэтому я пока отказываюсь от нее.
К этому моменту полное отсутствие понимания кода белого человека считается написанием очень простого инструмента, пожалуйста, помните, что весь процесс генерации кода логического прочесывания важнее, чем превосходные инструкции, пожалуйста, шаг за шагом разберитесь с логикой разумной функциональной итерации, от главного ко второму, от малого к большому.
Этот API используется для вставки URL сгенерированного изображения в слово подсказки:Wenxin Intelligent Body Traffic Tips: Генерация текста, изображений, реферальных URL для привлечения трафика на сайт
Не верьте, что люди, которые не умеют кодить, могут написать очень полный набор проектов, я и сам в этом сомневаюсь, а это учение, которое является своего рода пределом для белого парня, длилось 9 часов, так что спасибо за терпение при его прочтении.
© заявление об авторских правах
Авторское право на статью Круг обмена ИИ Пожалуйста, не воспроизводите без разрешения.
Похожие статьи
Нет комментариев...